本頁說明設定虛擬私有雲 (VPC) 防火牆規則的正確指令,並提供使用範例。虛擬私有雲防火牆規則可根據連接埠號碼、標記或通訊協定,允許或拒絕虛擬私有雲網路中虛擬機器 (VM) 執行個體的往來流量。
事前準備
如要進一步瞭解虛擬私有雲防火牆規則,例如預設網路的隱含規則和系統產生的規則,請參閱「虛擬私有雲防火牆規則」。
設定防火牆規則前,請先查看防火牆規則組成部分,熟悉 Google Cloud中使用的防火牆元件。
建立虛擬私有雲防火牆規則
虛擬私有雲防火牆規則是在網路層級定義,且僅會套用到規則建立時所在的網路。不過,您為各個防火牆規則選擇的名稱在專案內必須為專屬名稱。
防火牆規則可包含 IPv4 或 IPv6 範圍,但不能同時包含兩者。
建立防火牆規則時,您可以選擇啟用防火牆規則記錄。啟用記錄功能後,您可以省略中繼資料欄位,以節省儲存費用。詳情請參閱「使用虛擬私有雲防火牆規則記錄」。
如要為目標或來源服務帳戶欄位指定多個服務帳戶,請使用 Google Cloud CLI、API 或用戶端程式庫。
預設網路會在建立時提供自動防火牆規則。如果您使用 Google Cloud 控制台,在建立自訂和自動模式網路時,可以輕鬆建立類似的防火牆。如果您使用 gcloud CLI 或 API,並想建立與預設網路提供的防火牆規則類似的規則,請參閱「設定常見用途的防火牆規則」。
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
按一下「Create firewall rule」(建立防火牆規則)。
輸入防火牆規則的「Name」(名稱)。
此名稱在專案中不得重複。
(選用) 您可以啟用防火牆規則記錄:
- 按一下 [Logs] (記錄) > [On] (啟用)。
- 如要省略中繼資料,請按一下「顯示記錄詳細資料」,然後取消勾選「包含中繼資料」核取方塊。
指定防火牆規則的「Network」(網路)。
指定規則的「優先順序」。
數值越低,優先順序越高。
針對「Direction of traffic」(流量方向),選擇輸入或輸出。
針對「Action on match」(相符時執行的動作),選擇允許或拒絕。
指定規則的「Targets」(目標)。
- 如要將規則套用到網路中的所有執行個體,請選擇 All instances in the network。
- 如要根據網路 (目標) 標記將規則套用到特定執行個體,請選擇「指定的目標標記」,接著在「目標標記」欄位中,輸入要套用規則的標記。
- 如要讓規則套用至與特定服務帳戶相關聯的執行個體,請選擇「Specified service account」(指定服務帳戶),在「Service account scope」(服務帳戶範圍) 中指出服務帳戶是位於目前專案還是其他專案,然後在「Target service account」(目標服務帳戶) 欄位中選擇或輸入服務帳戶名稱。
針對輸入規則,指定「Source filter」(來源篩選器):
- 如要依來源 IPv4 範圍篩選傳入流量,請選取「IPv4 範圍」,然後在「來源 IPv4 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv4 來源使用「
0.0.0.0/0」。 - 如要依來源 IPv6 範圍篩選傳入流量,請選取「IPv6 範圍」,然後在「來源 IPv6 範圍」欄位中輸入 CIDR 區塊。如為任何 IPv6 來源,請使用
::/0。 - 如要依網路標記篩選傳入流量,請選擇「來源標記」,然後在「來源標記」欄位中輸入網路標記。如需瞭解來源標記數量限制,請參閱「每個網路的限制」。只有在目標「並非」以服務帳戶指定時,才可依據來源標記進行篩選。
- 如要依服務帳戶篩選傳入流量,請選擇「Service account」(服務帳戶),並在「Service account scope」(服務帳戶範圍) 底下,指示服務帳戶是位於目前專案還是其他專案,接著在「Source service account」(來源服務帳戶) 欄位中選擇或輸入服務帳戶名稱。只有在目標「並非」以網路標記指定時,才可依據來源服務帳戶進行篩選。
- 必要時,可以指定「Second source filter」(次要來源篩選器)。次要來源篩選器無法使用與主要來源篩選器相同的篩選條件。來源 IP 範圍可與來源標記或來源服務帳戶搭配使用。有效的來源集是來源範圍 IP 位址以及使用網路標記或服務帳戶標示的執行個體的聯集。也就是說,如果來源 IP 範圍「或」來源標記 (或來源服務帳戶) 符合篩選條件,來源就會納入有效來源集。
- 來源標記和來源服務帳戶無法同時使用。
如要進一步瞭解如何使用服務帳戶和網路標記,請參閱依服務帳戶篩選與依網路標記篩選的比較。
- 如要依來源 IPv4 範圍篩選傳入流量,請選取「IPv4 範圍」,然後在「來源 IPv4 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv4 來源使用「
針對輸入規則,指定「Destination filter」(目的地篩選器):
- 如要依目的地 IPv4 範圍篩選傳入流量,請選取「IPv4 範圍」,並在「目的地 IPv4 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv4 目的地使用
0.0.0.0/0。 - 如要依目的地 IPv6 範圍篩選傳入流量,請選取「IPv6 範圍」,並在「目的地 IPv6 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv6 目的地使用
::/0。
詳情請參閱「輸入規則目的地」。
- 如要依目的地 IPv4 範圍篩選傳入流量,請選取「IPv4 範圍」,並在「目的地 IPv4 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv4 目的地使用
針對輸出規則,指定「Destination filter」(目的地篩選器):
- 如要依目的地 IPv4 範圍篩選傳出流量,請選取「IPv4 範圍」,並在「目的地 IPv4 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv4 目的地使用
0.0.0.0/0。 - 如要依目的地 IPv6 範圍篩選傳出流量,請選取「IPv6 範圍」,並在「目的地 IPv6 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv6 目的地使用
::/0。
詳情請參閱「輸出規則目的地」。
- 如要依目的地 IPv4 範圍篩選傳出流量,請選取「IPv4 範圍」,並在「目的地 IPv4 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv4 目的地使用
針對輸出規則,指定「Source filter」(來源篩選器):
- 如要依來源 IPv4 範圍篩選傳出流量,請選取「IPv4 ranges」(IPv4 範圍),並在「Source IPv4 ranges」(來源 IPv4 範圍) 欄位中輸入 CIDR 區塊。針對任何 IPv4 來源使用「
0.0.0.0/0」。 - 如要依來源 IPv6 範圍篩選傳出流量,請選取「IPv6 範圍」,並在「來源 IPv6 範圍」欄位中輸入 CIDR 區塊。針對任何 IPv6 目的地使用
::/0。
詳情請參閱「輸出規則來源」。
- 如要依來源 IPv4 範圍篩選傳出流量,請選取「IPv4 ranges」(IPv4 範圍),並在「Source IPv4 ranges」(來源 IPv4 範圍) 欄位中輸入 CIDR 區塊。針對任何 IPv4 來源使用「
定義要套用規則的「Protocols and ports」(通訊協定和通訊埠):
- 如要將規則套用到所有通訊協定和目的地通訊埠,請根據要採取的動作選取「Allow all」(允許所有) 或「Deny all」(全部拒絕)。
- 如要定義特定通訊協定和目的地通訊埠,請選取「指定的通訊協定和通訊埠」:
- 選取「TCP」TCP以包含 TCP 通訊協定和目的地通訊埠。輸入
all或以半形逗號分隔的目的地通訊埠清單,例如20-22, 80, 8080。 - 選取「UDP」UDP以包含 UDP 通訊協定和目的地通訊埠。輸入
all或以半形逗號分隔的目的地通訊埠清單,例如67-69, 123。 - 選取「其他」,即可加入
icmp、sctp等通訊協定或通訊協定編號。舉例來說,使用icmp或通訊協定編號1代表 IPv4 ICMP。使用通訊協定編號58,適用於 IPv6 ICMP。
- 選取「TCP」TCP以包含 TCP 通訊協定和目的地通訊埠。輸入
詳情請參閱「通訊協定和目的地通訊埠」。
(選用) 您可以將防火牆規則的強制執行狀態設為已停用,如此一來,您就能在不強制執行防火牆規則的情況下建立規則。按一下「停用規則」,然後選取「已停用」。
點選「建立」。
gcloud
如要建立 VPC 防火牆規則,請使用 gcloud compute firewall-rules create 指令:
gcloud compute firewall-rules create RULE_NAME \
[--network NETWORK; default="default"] \
[--priority PRIORITY;default=1000] \
[--direction (ingress|egress|in|out); default="ingress"] \
[--action (deny | allow )] \
[--target-tags TAG[,TAG,...]] \
[--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
[--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
[--source-tags TAG[,TAG, ...]] \
[--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
[--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
[--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
[--disabled | --no-disabled] \
[--enable-logging | --no-enable-logging] \
[--logging-metadata LOGGING_METADATA]
請依照以下說明的方式來使用參數。如要進一步瞭解每個參數,請參閱 SDK 參考資料說明文件。
--network規則的網路。如果省略此參數,系統會在default網路中建立規則。如果您沒有預設網路,或想在特定網路中建立規則,就必須使用這個欄位。--priority:代表規則優先順序的數值。數值越低,優先順序越高。--direction流量方向,INGRESS或EGRESS擇一。--action:相符時執行的動作,allow或deny擇一。必須與--rules旗標搭配使用。- 指定目標的方式有下列幾種:
如果是輸入規則,如要進一步調整目的地,請使用
--destination-ranges以 CIDR 格式指定 IPv4 或 IPv6 位址範圍。如果省略--destination-ranges,則輸入目的地為任何 IPv4 位址0.0.0.0/0。詳情請參閱「輸入規則的目標」和「輸入規則的目標和 IP 位址」。針對輸入規則,指定來源:
--source-ranges使用這個標記指定 CIDR 格式的來源 IPv4 或 IPv6 位址範圍。- 如果省略
--source-ranges、source-tags和--source-service-accounts,則傳入來源為任何 IPv4 位址0.0.0.0/0。 --source-tags使用這個標記以透過網路標記來指定來源執行個體。只有在目標「並非」以服務帳戶指定時,才可依據來源標記進行篩選。詳情請參閱依服務帳戶篩選與依網路標記篩選的比較。--source-ranges和--source-tags可以「一起」使用。如果兩者都有指定,則有效的來源設定會「結合」來源範圍 IP 位址以及使用網路標記標示的執行個體,即使受到標記的執行個體在來源範圍中沒有 IP 也是如此。--source-service-accounts使用此標記來根據執行個體使用的服務帳戶指定執行個體。只有在目標「並非」以網路標記指定時,才可依據來源服務帳戶進行篩選。詳情請參閱依服務帳戶篩選與依網路標記篩選的比較。--source-ranges和--source-service-accounts可以「一起」使用。如果兩者都有指定,則有效的來源集會是來源範圍 IP 位址以及使用來源服務帳戶標示的執行個體的聯集,即使使用來源服務帳戶標示的執行個體在來源範圍中沒有 IP 也是如此。
如果是輸出規則,如要進一步調整來源,請使用
--source-ranges以 CIDR 格式指定 IPv4 或 IPv6 位址範圍。如果省略--source-ranges,則輸出來源為任何 IPv4 位址0.0.0.0/0。詳情請參閱「輸出規則的來源」和「輸出規則的目標和 IP 位址」。針對輸出規則,指定目的地:
--destination-ranges使用這個標記指定 CIDR 格式的目的地 IPv4 或 IPv6 位址範圍。- 如果省略
--destination-ranges,輸出目的地就是任何 IPv4 位址0.0.0.0/0。
--rules:要套用規則的通訊協定和目的地通訊埠清單。使用all可讓規則適用於所有通訊協定和所有目的地通訊埠。需要--action旗標。根據預設,防火牆規則建立後會自動強制執行,不過您可以變更這項行為。
- 如果同時省略
--disabled和--no-disabled,會建立並強制執行防火牆規則。 --disabled:加入此標記可在不強制執行防火牆規則的情況下建立規則。除非您更新防火牆規則,將狀態變更為啟用,否則防火牆規則將維持停用狀態。--no-disabled加入此標記可確保強制執行防火牆規則。
- 如果同時省略
--enable-logging | --no-enable-logging您可以在建立或更新防火牆規則時啟用防火牆規則記錄。虛擬私有雲防火牆規則記錄可讓您稽核、驗證及分析防火牆規則的效果。詳情請參閱「虛擬私有雲防火牆規則記錄」。--logging-metadata啟用記錄功能後,防火牆規則記錄功能預設會納入基礎和中繼資料欄位。您可以省略中繼資料欄位,以節省儲存費用。詳情請參閱「使用虛擬私有雲防火牆規則記錄」。
Terraform
如要建立防火牆規則,可以使用 google_compute_firewall 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
API
建立虛擬私有雲防火牆規則。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
"name": "RULE_NAME",
"network": "projects/PROJECT-ID/global/networks/NETWORK",
... other fields
}
更改下列內容:
PROJECT_ID:虛擬私有雲網路所在的專案 ID。NETWORK:建立防火牆規則的虛擬私有雲網路名稱。RULE_NAME:防火牆規則的名稱。針對輸入防火牆規則,指定輸入來源和目的地:
使用
sourceRanges、sourceTags或sourceServiceAccounts欄位指定進入來源。sourceRanges可以是 IPv4 或 IPv6 範圍,但不得同時包含兩者。如要使用0.0.0.0/0範圍,請勿指定任何欄位。您無法同時使用
sourceTags和sourceServiceAccounts欄位。不過,您可以搭配sourceTags或sourceServiceAccounts使用sourceRanges。如果有的話,連線只要符合其中一項,就會套用防火牆規則。如果是目標欄位,使用
sourceTags欄位時,就不能使用targetServiceAccounts欄位。您必須使用targetTags欄位或不使用目標欄位。同樣地,如果您使用sourceServiceAccounts欄位,就無法使用targetTags欄位。如未指定目標欄位,規則會套用至網路中的所有目標。使用
destinationRanges欄位指定連入目的地。destinationRanges可以是 IPv4 或 IPv6 範圍,但不能同時包含兩者。
如未指定目的地, Google Cloud 會使用0.0.0.0/0。詳情請參閱「輸入規則目的地」和「輸入規則的目標和 IP 位址」。
針對輸出防火牆規則,請指定輸出來源和目的地:
使用
sourceRanges欄位指定輸出來源。sourceRange可以是 IPv4 或 IPv6 範圍,但不能同時包含兩者。
如未指定來源, Google Cloud 會使用0.0.0.0/0。 詳情請參閱「輸出規則的來源」和「輸出規則的目標和 IP 位址」。使用
destinationRanges欄位指定目的地。destinationRanges可以是 IPv4 或 IPv6 範圍,但不能同時包含兩者。
如未指定目的地, Google Cloud會使用0.0.0.0/0。使用targetTags或targetServiceAccounts欄位,指定規則適用的目標。如未指定目標欄位,規則會套用至網路中的所有目標。
如要進一步瞭解每個欄位,請參閱 firewalls.insert 方法。