GCP 防火牆規則怎麼設定?5 個步驟:
- 進入 GCP Console → VPC 網路 → 防火牆
- 點擊「建立防火牆規則」
- 填寫名稱、選擇方向(Ingress/Egress)、設定動作(Allow/Deny)
- 指定目標(標籤或服務帳號)、來源 IP 範圍
- 指定通訊協定與連接埠(如 tcp:80,443),儲存
用 gcloud 一行指令的話:
gcloud compute firewall-rules create default-allow-http-https \
--direction=INGRESS \
--action=ALLOW \
--rules=tcp:80,tcp:443 \
--source-ranges=0.0.0.0/0 \
--target-tags=web-server
上面是最快的版本。
如果你是第一次設定、不確定每個欄位是什麼意思、或是設完還是連不上,往下看——下面會逐一拆解每個元件的意思,以及常見踩雷的地方。
一、什麼是 GCP 防火牆規則?
1.1 GCP 防火牆的基本概念
簡單來說,GCP 防火牆規則就像是你家大門的保全系統。你可以決定哪些人能進門、哪些人不行;哪些流量可以進來、哪些要擋在門外。
在 Google Cloud 的架構裡,防火牆規則是定義在 VPC(Virtual Private Cloud)網路層級的規則。這些規則可以控制進出你的 VM(虛擬機器)或其他 GCP 資源的網路流量。
每一條防火牆規則會指定:
- 哪個 VPC 網路適用這條規則
- 流量的方向(進來還是出去)
- 要允許還是拒絕這個流量
- 套用這條規則的目標(哪些 VM)
- 流量的來源或目的地
- 通訊協定(TCP、UDP、ICMP 等)和連接埠
你可以把它想像成一個超精密的過濾器,讓你對流量做非常細緻的控制。
1.2 GCP 防火牆與傳統防火牆有什麼不同?
很多人剛接觸 GCP 的時候,會用「傳統防火牆機器」的思維來理解它,結果常常卡住。讓我們來說說幾個關鍵差異。
傳統防火牆通常是部署在網路邊界的實體或虛擬設備,所有進出的流量都要「過」這個點。而 GCP 的防火牆規則是分散式的,它運作在 Google 的全球基礎架構上,不存在單一的防火牆設備。這代表規則的套用是直接在 VM 層級發生的,不是在網路邊界。
另一個重要差異是:GCP 防火牆規則是有狀態(Stateful)的。這表示如果你允許一個連線進來,回應這個連線的封包就會自動被允許出去,你不需要另外設一條 Egress 規則來放行回應流量。對大多數應用場景來說,這大幅簡化了規則的設計。
1.3 GCP 防火牆規則在 VPC 網路中的角色
在 GCP 的 VPC 架構中,防火牆規則扮演著核心的安全角色。每個 VPC 網路都可以有自己的防火牆規則,而這些規則會套用在這個 VPC 內的所有資源上。
值得注意的是,GCP 的防火牆規則是全域資源,不是區域性的。這意味著你在台灣建立一個規則,它可以同時保護你在美國、歐洲的 VM,非常方便。
二、GCP 防火牆規則的核心元件解析
要設定好防火牆規則,你必須先搞懂每個元件的意思。這就像在說一個語言,你要先認識它的語法,才能說出有意義的句子。
2.1 優先順序(Priority)是什麼?如何影響規則?
優先順序是一個介於 0 到 65535 之間的整數,數字越小,優先順序越高。當多條規則同時符合同一個流量時,優先順序最高(數字最小)的規則會被套用,其他規則會被忽略。
舉個例子:
- 規則 A:優先順序 1000,允許來自任何來源的 TCP 80 流量
- 規則 B:優先順序 500,拒絕來自
192.168.1.0/24的所有流量
如果有一個來自 192.168.1.5 的 TCP 80 請求進來,會套用哪條規則?答案是規則 B,因為它的優先順序(500)比規則 A(1000)更高(數字更小)。
如果你沒有指定優先順序,GCP 預設會使用 1000。
2.2 方向(Direction):Ingress vs. Egress
防火牆規則的方向決定了它管的是哪種流量:
Ingress(入站)
從外部進入你的 VM 的流量,或是在 VPC 內部,別台 VM 進入你 VM 的流量。例如,使用者瀏覽你網站的請求,就是 Ingress。

Egress(出站)
從你的 VM 送往外部的流量。例如,你的 VM 去抓第三方 API 的資料,就是 Egress。

大多數情況下,我們主要管 Ingress,但在某些高安全性場景下,Egress 的管控同樣重要,而我們很容易忽略這種方向的設定。
通常機器中毒或被駭客入侵,有可能只防別人來存取,卻沒有擋自己去入侵別人。
2.3 動作(Action):Allow vs. Deny
這個很直觀:
- Allow(允許):讓符合規則條件的流量通過
- Deny(拒絕):阻擋符合規則條件的流量,且不傳送任何回應
當流量被 Deny 時,發送方收不到任何回應,這可以避免讓對方知道你的服務存在。
因為傳統的防火牆有一種 Reject 動作,對方知道你存在但不能存取,GCP 防火牆則取消這種功能。
2.4 目標(Target):套用規則的對象
目標決定了這條規則要套用到哪些資源上。GCP 提供三種指定方式:
- 所有 VM:規則套用到 VPC 內的所有 VM
- 指定網路標籤(Tags):只套用到有特定標籤的 VM
- 指定服務帳戶(Service Account):只套用到使用特定服務帳戶的 VM
2.4.1 使用網路標記(Tags)指定目標
網路標記是一個字串,你可以把它貼到 VM 上,然後在防火牆規則裡指定這個網路標記作為目標,這樣可以一次套用規則到多台機器,而非一台一台設定。

例如,你給所有 Web 伺服器貼上 web 標記,再建立一條允許 TCP 80/443 流量套用到 web 的規則,這樣就只有這些 VM 會受到影響。
因為你的專案可能有數十台機器,但只是有 5 台是 Web Server 可以完全對外,這個方法就不用套用到全部的機器上。

標籤的缺點是:任何有適當 IAM 權限的人都可以新增或移除 VM 的標籤,如果管理不當,可能會造成安全漏洞。
2.4.2 使用服務帳戶(Service Account)指定目標
使用服務帳戶來指定目標比標籤更安全,因為修改 VM 的服務帳戶需要更高的 IAM 權限,不容易被誤操作。這個方式特別適合需要高安全性的環境。
尤其是你的主機之間有許多程式要互相存取,而程式在 GCP 環境中都必須帶著 Service Account 以供識別,就很適合這種設定方式。
2.5 來源與目的地(Source / Destination)設定
- 對於 Ingress 規則:你需要指定「來源」,可以是 IP 位址範圍、來源標籤或來源服務帳戶。
- 對於 Egress 規則:你需要指定「目的地」,通常是 IP 位址範圍。
常用的 IP 範圍表示法:
0.0.0.0/0:代表所有 IPv4 位址(要小心使用!通常只有 Web Server 才會做這種設定)10.0.0.0/8:代表10.x.x.x的私有網路192.168.1.5/32:代表單一 IP 位址
如果一台機器碰到兩條相同優先順序、相同通訊協定和 Port 的規則,則拒絕的規則優先於允許的。
三、設定 GCP 防火牆規則之前,你需要知道的事
3.1 預設防火牆規則有哪些?
當你建立一個新的 VPC 網路(使用「自動模式」)時,GCP 會自動幫你建立四條預設防火牆規則:
| 規則名稱 | 方向 | 優先順序 | 動作 | 說明 |
|---|---|---|---|---|
default-allow-internal | Ingress | 65534 | Allow | 允許同一 VPC 內的所有流量 |
default-allow-ssh | Ingress | 65534 | Allow | 允許 TCP 22(SSH)連線 |
default-allow-rdp | Ingress | 65534 | Allow | 允許 TCP 3389(RDP)連線 |
default-allow-icmp | Ingress | 65534 | Allow | 允許 ICMP(ping)流量 |
你會發現這四條規則的優先順序都是 65534,這是接近最低的優先順序,目的是讓你之後新增的規則可以覆蓋它們。
當然如果用不到也可以刪除。
3.2 隱含規則(Implied Rules)的運作原理
除了上面的預設規則,GCP 還有兩條看不見但永遠存在的隱含規則,你無法刪除或修改它們:
- 隱含 Ingress Deny 規則(優先順序 65535):拒絕所有進入的流量
- 隱含 Egress Allow 規則(優先順序 65535):允許所有對外的流量
這兩條規則是 GCP 安全設計的基礎——預設情況下,進來的流量全部拒絕,出去的流量全部允許。你設定的規則,就是在這個基礎上「開口」或「關口」。
要注意,因為你無法修改它們,你就無法開啟記錄(Log),如果你想記錄這兩條規則,就必須手動新增規則再開啟記錄。
3.3 如何確認目前的防火牆狀態?
在開始設定之前,建議先看一下目前的狀態,避免重複或衝突。你可以透過 GCP Console 查看:
進入 VPC 網路 → 防火牆,就可以看到目前所有規則的清單,包括名稱、方向、優先順序、動作、目標和來源等資訊。

四、如何在 GCP Console 設定防火牆規則?(圖文步驟)
好了,理論說夠了,我們直接來看怎麼操作!
也可以查接查看 YouTube 示範影片。
4.1 進入防火牆規則設定頁面
- 登入 GCP Console
- 在左側選單找到 「VPC 網路」
- 點擊子選單中的 「防火牆」
- 你會看到目前所有的防火牆規則清單

4.2 建立新的防火牆規則(逐步說明)
點擊頁面上方的 「建立防火牆規則」 按鈕,開始設定。

4.2.1 填寫規則名稱、說明和是否啟用記錄
- 名稱:必須是英文小寫、數字和連字號組成,例如
allow-http-web-servers。 - 建議用有意義的名稱,讓未來維護時一眼就能看懂這條規則的用途。
- 如果你有多個 VPC,建議增加前綴,例如 default-
allow-http-web-servers,其中 default 就是 VPC 的名字。 - 說明(選填):可以寫更詳細的說明,例如「允許來自任何 IP 的 HTTP 80 流量,只套用到 web-server 標籤的 VM」。

關於記錄功能,平常不會打開,但如果想要做故障排除,例如想知道某個來源 IP 的主機,到底有沒有把流量送過來,可以對 Ingress 的規則啟用記錄;如果想知道你的某台主機,到底有沒有發出流量給對方,可以對 Egress 的規則啟用記錄。
詳細操作說明可以參考這個影片:
4.2.2 設定 VPC 網路、優先順序與方向
- 網路:選擇這條規則要套用到哪個 VPC 網路。
- 優先順序:輸入一個 0 到 65535 的數字,數字越小優先順序越高。建議從 1000 開始,留有上下調整的空間。
- 流量方向:選擇 「Ingress(輸入)」 或 「Egress(輸出)」。
- 如果相符,請執行下列操作:選擇 「允許」 或 「拒絕」。

4.2.3 設定動作與目標
在 「目標」 欄位,選擇規則要套用的範圍:
- 網路中的所有執行個體:套用到 VPC 內的所有 VM(慎用!)
- 指定的目標標籤:輸入你要套用的標籤,例如
web - 指定的服務帳戶:輸入服務帳戶的 email

4.2.4 設定來源 IP 範圍、通訊協定與連接埠
來源 IP 範圍:
輸入允許的 IP 範圍,例如 0.0.0.0/0 表示允許所有 IP。如果要限制特定範圍,輸入像 203.0.113.0/24。單一 IP 的範例像 203.0.113.18/32。

通訊協定和連接埠:
可以選擇「全部允許」,或指定特定的通訊協定(TCP、UDP)和連接埠號,例如 tcp:80,443。
如果是要設定 Ping 的話,則是勾選「其他」,然後輸入 icmp。

4.3 儲存並驗證規則是否生效
設定完成後,點擊 「建立」 按鈕,規則通常會在幾秒鐘內生效。你可以透過以下方式驗證:
- 回到防火牆規則清單,確認新規則有出現
- 嘗試對你的 VM 進行你預期允許的連線,確認成功
- 嘗試進行你預期被拒絕的連線,確認失敗
五、使用 gcloud CLI 設定 GCP 防火牆規則
如果你是工程師,或是需要用程式自動化管理防火牆規則,gcloud CLI 是你的好朋友。它不只快,而且可以輕鬆整合進 CI/CD 流程。
5.1 安裝與設定 gcloud 工具
如果還沒安裝,可以從 Google Cloud SDK 下載安裝。安裝完後,執行以下指令完成初始化:
gcloud init
按照提示選擇你的帳號和預設專案,設定好之後就可以開始使用了。
5.2 常用防火牆指令整理
以下是最常用的幾個 gcloud 防火牆指令:
# 列出所有防火牆規則
gcloud compute firewall-rules list
# 查看特定規則的詳細資訊
gcloud compute firewall-rules describe RULE_NAME
# 建立防火牆規則
gcloud compute firewall-rules create RULE_NAME \
--network=NETWORK_NAME \
--direction=INGRESS \
--priority=1000 \
--action=ALLOW \
--rules=tcp:80,tcp:443 \
--source-ranges=0.0.0.0/0 \
--target-tags=web
# 刪除防火牆規則
gcloud compute firewall-rules delete RULE_NAME
# 更新防火牆規則
gcloud compute firewall-rules update RULE_NAME \
--priority=500
5.3 實戰範例:允許 HTTP/HTTPS 流量
假設你想讓 web-server 標籤的 VM 接受所有來源的 HTTP(80 埠)和 HTTPS(443 埠)流量:
gcloud compute firewall-rules create default-allow-http-https \
--network=default \
--direction=INGRESS \
--priority=1000 \
--action=ALLOW \
--rules=tcp:80,tcp:443 \
--source-ranges=0.0.0.0/0 \
--target-tags=web \
--description="允許來自任何 IP 的 HTTP 和 HTTPS 流量"

執行完後,只要你的 VM 有 web 這個標籤,它就可以接收 80 和 443 埠的流量了。
你也可以點開這一條防火牆規則,畫面滑到最下方,確認這條規則套用到哪些主機上。

5.4 實戰範例:封鎖特定 IP 來源
如果你發現有個 IP 203.0.113.50 一直在嘗試暴力破解你的系統,你可以建立一條高優先順序的 Deny 規則來封鎖它:
gcloud compute firewall-rules create block-malicious-ip \
--network=default \
--direction=INGRESS \
--priority=100 \
--action=DENY \
--rules=all \
--source-ranges=203.0.113.50/32 \
--description="封鎖惡意 IP 203.0.113.50 的所有流量"
注意優先順序設為 100,遠高於其他規則,確保這條封鎖規則一定會被先套用。

六、GCP 防火牆規則的進階設定技巧
掌握了基礎,我們來看看一些讓你的防火牆設計更精準、更安全的進階技巧。
6.1 使用服務帳戶取代網路標籤的優勢
前面提到,標籤雖然方便,但安全性不如服務帳戶。在對安全要求高的環境中,你應該優先考慮使用服務帳戶來指定防火牆目標。
原因很簡單:更改 VM 的服務帳戶需要 compute.instances.setServiceAccount 這個 IAM 權限,而這個權限通常只有系統管理員才有。相比之下,給 VM 加標籤的門檻低很多。
以 gcloud 指令為例,使用服務帳戶作為目標:
gcloud compute firewall-rules create allow-internal-db \
--network=default \
--direction=INGRESS \
--priority=1000 \
--action=ALLOW \
--rules=tcp:5432 \
--source-service-accounts=web-sa@my-project.iam.gserviceaccount.com \
--target-service-accounts=db-sa@my-project.iam.gserviceaccount.com
這條規則的意思是:只允許使用 web-sa 服務帳戶的 VM,連線到使用 db-sa 服務帳戶的 VM 的 5432 埠(PostgreSQL)。
6.2 多層防火牆規則的優先順序設計策略
當你的環境複雜,有很多條規則時,建議採用分層設計,讓規則的邏輯更清晰:
- 優先順序 100-199:緊急封鎖規則(封鎖特定惡意 IP 或攻擊來源)
- 優先順序 500-599:高安全性白名單規則(允許特定管理 IP 的 SSH 存取)
- 優先順序 1000-1999:一般服務規則(允許 HTTP/HTTPS)
- 優先順序 5000-5999:寬鬆的後備規則
這樣的設計讓你在緊急情況下只需要在 100-199 範圍增加一條規則,就可以凌駕所有其他規則,不用修改現有設定。
6.3 Egress 規則:控制對外流量的方法
許多人只注重 Ingress,但 Egress 管控在某些場景下同樣重要。例如:
- 防止 VM 被入侵後對外發動攻擊
- 確保敏感資料不會被傳送到未授權的外部服務
- 符合某些法規要求(如 GDPR)
要限制 VM 只能連到特定的外部服務,你可以先建立一條「拒絕所有 Egress」的規則,再建立允許特定目的地的 Egress 規則:
# 拒絕所有對外流量(優先順序較低,數字較大)
gcloud compute firewall-rules create deny-all-egress \
--network=default \
--direction=EGRESS \
--priority=65000 \
--action=DENY \
--rules=all \
--destination-ranges=0.0.0.0/0
# 只允許連到 Google API(優先順序較高,數字較小)
gcloud compute firewall-rules create allow-google-apis \
--network=default \
--direction=EGRESS \
--priority=1000 \
--action=ALLOW \
--rules=tcp:443 \
--destination-ranges=199.36.153.4/30
6.4 如何限制 SSH 與 RDP 存取來源?
預設的 default-allow-ssh 規則允許來自任何 IP 的 SSH 連線,這對生產環境來說是很大的風險。你應該立即修改這條規則,限制只有你的辦公室或跳板機 IP 可以 SSH 進來:
# 先刪除或停用預設的 SSH 規則
gcloud compute firewall-rules update default-allow-ssh \
--source-ranges=YOUR_OFFICE_IP/32
如果你使用 GCP 的 IAP(Identity-Aware Proxy)來進行 SSH 連線(強烈推薦!),來源 IP 範圍應設為 35.235.240.0/20:
gcloud compute firewall-rules create allow-ssh-via-iap \
--network=default \
--direction=INGRESS \
--priority=1000 \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20 \
--description="只允許透過 IAP 的 SSH 連線"
七、GCP 防火牆規則常見錯誤與排除方法
設定完規則之後還是有問題嗎?別擔心,這些常見錯誤我們來一一說明。
7.1 規則設定後仍然無法連線怎麼辦?
遇到這種情況,請按照以下清單依序檢查:
第一步:確認規則存在且已生效
gcloud compute firewall-rules describe allow-http-https
確認規則的所有參數(方向、動作、通訊協定、連接埠、目標)都正確。
第二步:確認 VM 有正確的標籤或服務帳戶
gcloud compute instances describe VM_NAME \
--zone=ZONE \
--format='get(tags.items)'
確認 VM 上貼的標籤和規則裡設定的目標標籤一致。
也可以在主控台上確認兩邊設定。

第三步:確認應用程式本身有在正確的埠上監聽
防火牆放行了,但如果你的 Nginx 沒有啟動,或者在 8080 埠而不是 80 埠,一樣連不上。SSH 進 VM 後執行:
sudo netstat -tlnp | grep LISTEN
第四步:確認沒有更高優先順序的 Deny 規則擋住了流量
7.2 優先順序衝突導致規則失效
這是最常見的問題之一。當你有一條 Allow 規則和一條 Deny 規則都符合同一個流量時,優先順序較高(數字較小)的那條才會生效。
如果你建立了一條 Allow 規則,但流量還是被擋,很可能是有另一條 Deny 規則的優先順序更高。你需要去防火牆清單裡,按優先順序排序,仔細檢查每一條可能符合這個流量的規則。
7.3 如何使用防火牆記錄(Firewall Logs)診斷問題?
防火牆記錄是排查問題的神兵利器。它可以記錄下每一條規則「命中」的流量,讓你清楚看到到底是哪條規則在處理你的流量。
啟用防火牆記錄的方式:
gcloud compute firewall-rules update RULE_NAME \
--enable-logging
啟用後,你可以在 Cloud Logging 裡查看記錄,搜尋關鍵字 resource.type="gce_logName=”projects/[project-id]/logs/compute.googleapis.com%2Ffirewall”firewall_rule",就可以看到所有防火牆的命中記錄,包括流量的來源、目的地、連接埠,以及是被哪條規則允許或拒絕的。

你也可以直接在某一條防火牆的頁面上點擊「打開記錄」,就會只看得到這條規則的記錄,不需要背下搜尋語法,操作起來更方便。。

八、GCP 防火牆規則的最佳實踐建議
設定防火牆規則沒有所謂的「完美」方法,但有一些最佳實踐是被業界廣泛認可的,我們強烈建議你遵循。
8.1 最小權限原則(Principle of Least Privilege)
這是資安界最核心的原則:只允許必要的流量,拒絕其他一切。
在實作上,這意味著:
- 不要使用
0.0.0.0/0開放所有 IP,除非真的必要(例如公開的 HTTP 服務) - 不要開放不需要的連接埠
- 不要用「所有 VM」作為目標,盡量用標籤或服務帳戶精確指定
- 前面的規則設定完成,最後面就設定一條拒絕所有來源的規則。
- 定期審視規則,刪除不再使用的規則
8.2 避免使用 0.0.0.0/0 開放所有來源
我們知道有時候設定 0.0.0.0/0 很方便,但這等於是把你的服務完全暴露在網路上,任何人都可以嘗試連線。特別是 SSH(22 埠)和 RDP(3389 埠),如果開放給 0.0.0.0/0,你的 VM 每天都會被全球各地的掃描工具嘗試暴力破解。你可以看到我的一台主機,隨時有人想要 SSH 登入進來的記錄:

建議做法:
- SSH 和 RDP:使用 IAP 或限制特定 IP 來源
- 資料庫連接埠(如 3306、5432):絕對不要開放給
0.0.0.0/0 - 應用程式的內部 API:只允許同 VPC 或特定服務的存取
8.3 定期稽核防火牆規則
防火牆規則會隨著時間累積,慢慢出現很多「遺留規則」——當初某個專案用完就沒刪,或是某個同事設了但沒留下說明文件。這些規則可能帶來安全風險,也讓維護變得複雜。
建議至少每季進行一次防火牆規則稽核:
- 列出所有規則,確認每條規則的用途
- 刪除或停用不再使用的規則
- 確認所有規則的來源範圍是否還合適
- 確認防火牆記錄是否有異常命中
你也可以使用 GCP Security Command Center 或第三方工具來自動化稽核流程,讓安全管理更有效率。
九、結論
GCP 防火牆規則看起來複雜,但只要掌握核心元件——優先順序、方向、動作、目標和來源——你就有能力設計出既安全又彈性的網路架構。
我們從基礎概念出發,學習了防火牆規則的各個元件,再到透過 Console 和 gcloud CLI 實際操作,最後討論了進階技巧和最佳實踐。這套知識讓你不只是「能用」GCP 防火牆,而是「用得好」。
記住最重要的原則:最小權限。不確定要不要開放某個流量時,先選擇拒絕,等確認需求後再開放。這樣的保守態度,才是雲端安全的正確心態。
防火牆設定是一個持續演進的過程,隨著你的服務架構調整,規則也需要跟著調整。養成定期稽核的習慣,並善用防火牆記錄來監控異常流量,你的 GCP 環境就能在安全與可用性之間達到最佳平衡。
常見問題解答(FAQ)
1. GCP 防火牆規則最多可以設定幾條?
每個 VPC 網路最多可以設定 200 條防火牆規則。如果你的環境非常複雜,需要更多規則,可以聯絡 GCP 支援申請提高配額。不過通常 200 條對大多數環境來說已經足夠,如果超過這個數量,建議檢視是否可以合併或簡化規則。
2. 防火牆規則的優先順序數字越小代表越高優先?
是的,完全正確。優先順序是一個介於 0 到 65535 的整數,數字越小,優先順序越高。當多條規則同時符合同一個流量時,優先順序最高(數字最小)的規則會被套用。如果優先順序相同,則 Deny 規則優先於 Allow 規則。
3. GCP 預設的防火牆規則可以刪除嗎?
可以的,四條預設規則(allow-internal、allow-ssh、allow-rdp、allow-icmp)都可以刪除。但要小心,刪除這些規則可能會導致你無法 SSH 進 VM。建議在刪除之前,先確認你有其他方式可以管理 VM(例如 Cloud Console 的序列主控台)。至於 GCP 的兩條隱含規則(最低優先順序的 Deny Ingress 和 Allow Egress),這兩條是無法刪除或修改的。
4. 如何確認防火牆規則是否正確套用到 VM?
你可以在 VM 的詳細資訊頁面查看「網路介面」區塊,點擊「防火牆規則詳情」就可以看到套用到這台 VM 的所有防火牆規則,包括每條規則的方向、優先順序和動作。另外,也可以啟用防火牆記錄,透過 Cloud Logging 查看實際的流量命中記錄,這是最直接的驗證方式。
5. Ingress 和 Egress 規則的差別是什麼?
Ingress 規則管控的是「從外部進入你的 VM」的流量,例如使用者連線到你的網站。Egress 規則管控的是「從你的 VM 送往外部」的流量,例如你的 VM 去呼叫外部 API。GCP 的防火牆是有狀態的,允許一個 Ingress 連線後,這個連線的回應封包會自動被允許出去,不需要另外設 Egress 規則。
6. GCP 防火牆支援 IPv6 嗎?
是的,GCP 防火牆支援 IPv6。如果你的 VPC 網路有啟用 IPv6,你可以在防火牆規則的來源或目的地範圍裡指定 IPv6 的 CIDR 範圍(例如 ::/0 代表所有 IPv6 位址)。需要注意的是,IPv4 和 IPv6 的規則需要分開設定,一條規則無法同時套用兩者。
7. 使用服務帳戶設定防火牆目標有什麼好處?
使用服務帳戶作為防火牆目標比使用標籤更安全,原因在於:修改 VM 的服務帳戶需要較高的 IAM 權限(compute.instances.setServiceAccount),不容易被誤操作或惡意修改。標籤則相對容易被有 compute.instances.setLabels 權限的人任意添加,存在一定的安全風險。在高安全性環境,優先選擇服務帳戶作為目標。
8. 防火牆規則可以套用到多個 VPC 嗎?
不行,一條防火牆規則只能套用到單一 VPC 網路。如果你有多個 VPC 需要相同的規則,你需要在每個 VPC 裡分別建立規則。如果你使用的是共用 VPC(Shared VPC),你可以在宿主 VPC 裡建立規則,這樣所有連接到這個共用 VPC 的服務專案都會套用這條規則。
9. 如何透過 Terraform 管理 GCP 防火牆規則?
Terraform 是管理 GCP 防火牆規則的最佳工具之一,因為它可以讓你用程式碼(Infrastructure as Code)定義規則,版本控制和稽核都更容易。使用 google_compute_firewall 資源即可:
resource "google_compute_firewall" "allow_http" {
name = "allow-http"
network = "default"
allow {
protocol = "tcp"
ports = ["80", "443"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["web-server"]
}
10. 開啟防火牆記錄會增加費用嗎?
是的,開啟防火牆記錄會產生額外費用,費用是依據記錄的資料量計算(以 Cloud Logging 的計費方式收費,超出免費額度後才收費)。在流量大的環境裡,記錄費用可能不小。建議做法是:只在特定需要診斷的規則上開啟記錄,完成診斷後再關閉;或使用記錄過濾條件(Log filtering)只記錄特定類型的流量,以控制費用。
GCP 防火牆規則只是眾多資安服務的其中一種,如果你想了解更多,可以查看《雲端的資訊安全防禦縱深,常用資安服務介紹》。