設定防火牆政策規則的批次更新

本文說明網路管理員如何使用 YAML 設定檔,批次更新多個階層式和網路防火牆政策規則。批次更新程序包括建立或匯出規則至 YAML 檔案、修改檔案,然後使用 Google Cloud CLI 或 Compute Engine API 套用變更。

如果您使用 REST API 批次更新防火牆政策規則,請使用 patch 方法。您可以使用 patch 方法,在要求中提供 rules 欄位,藉此取代防火牆政策中的所有規則,不需要建立 YAML 檔案。使用 patch 方法時,請保留優先順序最低的預設 goto_next 規則。

如要使用 gcloud CLI 批次更新防火牆政策規則,請使用下列 gcloud CLI 指令:

  • export-rules:可將防火牆政策規則設定匯出至 YAML 檔案。然後在 YAML 檔案中,根據需求新增、修改及移除防火牆原則規則設定。

  • import-rules:可讓您匯入已修改的防火牆政策規則設定檔。這會取代指定防火牆政策的現有規則。

開始前,請先參閱批次更新總覽中的概念。

事前準備

如要執行批次更新,請確保已安裝及設定下列工具:

  • Google Cloud CLI
  • Compute Engine API
  • 如果尚未設定驗證,請先完成這項程序。 驗證是驗證您身分的程序,可讓您存取 Google Cloud 服務和 API。 如要從本機開發環境執行程式碼或範例,可以按照本節所述方式向 Compute Engine 進行驗證。

控制台

使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

gcloud

  1. 安裝 Google Cloud CLI 後,請執行下列指令初始化:

    
    gcloud init
    
    

    如果您使用外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。

  2. 在本機用戶端中設定預設區域和可用區。

REST

如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

安裝 Google Cloud CLI 後,請執行下列指令初始化:


gcloud init

如果您使用外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。

詳情請參閱Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

建立 YAML 檔案

您可以使用 export-rules 指令,將現有的防火牆政策規則匯出至 YAML 檔案。詳情請參閱「匯出防火牆政策規則」。匯出的 YAML 檔案包含優先順序最低的預設 goto_next 規則 (優先順序大於或等於 2147483644 的規則),請勿修改這些預設 goto_next 規則。

不過,如果不想使用 export-rules 指令,也可以手動建立新的 YAML 檔案來編輯規則。如要手動建立新的 YAML 檔案,請按照下列步驟操作:

  1. 建立 YAML 檔案 RULES_YAML_FILE。將 RULES_YAML_FILE 替換為您選擇的檔案名稱。

  2. 在 YAML 檔案中加入 rules 欄位。rules 欄位包含防火牆政策規則清單。如要瞭解匯出或匯入格式的結構定義,請參閱CLOUDSDKROOT/lib/googlecloudsdk/schemas/compute/beta/FirewallPolicy.yaml。其中 CLOUDSDKROOT 是 Google Cloud CLI 安裝目錄。

    以下是 YAML 結構定義的範例。

        rules:
        -action: deny
         description:
         priority: 1
         disabled: false
         enable-logging: false
         kind: compute#firewallPolicyRule
         ...
        -action: goto_next
         priority: 2
         disabled: false
         enable-logging: false
         ...
      

    如要修改防火牆政策規則,請參閱修改防火牆政策規則。

匯出防火牆政策規則

您可以使用 gcloud CLI 或 Compute Engine API 啟動更新。

匯出階層式防火牆政策

從階層式防火牆政策匯出防火牆政策規則。

gcloud

如要從階層式防火牆政策匯出規則,請使用 gcloud compute firewall-policies export-rules 指令:

gcloud compute firewall-policies export-rules FIREWALL_POLICY \
    --destination=DESTINATION \
    --organization=ORGANIZATION

更改下列內容:

  • FIREWALL_POLICY:要匯出規則的階層式防火牆政策簡稱或 ID
  • DESTINATION:要匯出設定的 YAML 檔案路徑
  • ORGANIZATION:要更新機構防火牆政策的機構。如果 FIREWALL_POLICY 是簡稱,就必須設定這項屬性

API

如要從階層式防火牆政策匯出現有規則,請使用 Compute Engine API 中的 firewallPolicies.get 方法:

  GET https://compute.googleapis.com/compute/v1/locations/global/firewallPolicy/FIREWALL_POLICY_NAME
  

更改下列內容:

匯出網路防火牆政策

從網路防火牆政策匯出防火牆規則。

gcloud

如要將網路防火牆政策規則設定匯出至檔案,請使用 gcloud compute network-firewall-policies export-rules 指令:

gcloud compute network-firewall-policies export-rules FIREWALL_POLICY \
    --destination=RULES_YAML_FILE_PATH \
    --global | --region=REGION

更改下列內容:

  • FIREWALL_POLICY:要匯出規則的網路防火牆政策名稱
  • RULES_YAML_FILE_PATH:匯出設定的 YAML 檔案路徑
  • REGION:如果是全域政策,請指定 --global;如果是區域政策,請指定 REGION。

API

如要從全域網路防火牆政策匯出現有規則,請使用 Compute Engine API 中的 networkFirewallPolicies.get 方法:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT/global/firewallPolicies/FIREWALL_POLICY_NAME
   

更改下列內容:

  • PROJECT:專案 ID
  • FIREWALL_POLICY_NAME:要匯出的防火牆政策名稱

如要從區域網路防火牆政策匯出現有規則,請使用 Compute Engine API 中的 regionNetworkFirewallPolicies.get 方法:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/firewallPolicies/FIREWALL_POLICY_NAME

更改下列內容:

  • PROJECT:專案 ID
  • REGION:防火牆政策規則的區域
  • FIREWALL_POLICY_NAME:要匯出的防火牆政策名稱

這項要求會傳回防火牆政策資源定義。

修改防火牆政策規則

修改您在上一個部分匯出的防火牆政策規則。

  1. 開啟匯出的檔案。例如 RULES_YAML_FILE。

  2. 新增 rules 欄位,如以下範例所示。

        rules:
         -action: allow
          description: test-rule1
          direction: INGRESS
          disabled: false
          enableLogging: false
          kind: compute#firewallPolicyRule
      

  3. 新增其他設定欄位,例如 action、direction 和 priority。以下是基本 YAML 檔案的範例。

        rules:
         -action: allow
          description: test-rule1
          direction: INGRESS
          disabled: false
          enableLogging: false
          kind: compute#firewallPolicyRule
          match:
            layer4Configs:
            -ipProtocol: all
            srcIpRanges:
            -192.0.2.0/24
          priority: 1
          ruleTupleCount: 2
         -action: goto_next
          description: default egress rule
          direction: EGRESS
          enableLogging: false
          kind: compute#firewallPolicyRule
          match:
            destIpRanges:
            -::/0
            layer4Configs:
            -ipProtocol: all
          priority: 2147483644
          ruleTupleCount: 2
         -action: goto_next
          description: default ingress rule
          direction: INGRESS
          enableLogging: false
          kind: compute#firewallPolicyRule
          match:
            layer4Configs:
            -ipProtocol: all
            srcIpRanges:
            -::/0
          priority: 2147483645
          ruleTupleCount: 2
         -action: goto_next
          description: default egress rule
          direction: EGRESS
          enableLogging: false
          kind: compute#firewallPolicyRule
          match:
            destIpRanges:
            -198.51.100.0/24
            layer4Configs:
            -ipProtocol: all
          priority: 2147483646
          ruleTupleCount: 2
         -action: goto_next
          description: default ingress rule
          direction: INGRESS
          enableLogging: false
          kind: compute#firewallPolicyRule
          match:
            layer4Configs:
            -ipProtocol: all
            srcIpRanges:
            -192.0.2.0/24
          priority: 2147483647
          ruleTupleCount: 2
      

匯入防火牆政策規則

變更檔案以進行所需批次更新後,將規則匯入防火牆政策。匯入修改後的檔案會以提供的規則取代現有的防火牆政策規則。

匯入階層式防火牆政策規則

將防火牆規則匯入階層式防火牆政策。

gcloud

如要將規則匯入階層式防火牆政策,請使用 gcloud compute firewall-policies import-rules 指令:

gcloud compute firewall-policies import-rules FIREWALL_POLICY \
    --source=RULES_YAML_FILE_PATH \
    --organization=ORGANIZATION

更改下列內容:

  • FIREWALL_POLICY:要更新的階層式防火牆政策簡稱或 ID
  • RULES_YAML_FILE_PATH:要匯入規則的 YAML 檔案路徑
  • ORGANIZATION:要更新機構防火牆政策的機構。如果 FIREWALL_POLICY 是簡稱,就必須設定。

API

如要匯入防火牆政策規則,請使用 Compute Engine API 中的 firewallPolicies.patch 方法:

  PATCH https://compute.googleapis.com/compute/v1/locations/global/firewallPolicy/FIREWALL_POLICY_NAME
  

更改下列內容:

匯入網路防火牆政策

將修改後的防火牆規則 YAML 檔案匯入網路防火牆政策。

gcloud

如要將規則匯入網路防火牆政策,請使用 gcloud compute network-firewall-policies import-rules 指令:

gcloud compute network-firewall-policies import-rules FIREWALL_POLICY \
    --source=RULES_YAML_FILE_PATH \
    --global | --region=REGION

更改下列內容:

  • FIREWALL_POLICY:要更新的網路防火牆政策名稱
  • RULES_YAML_FILE_PATH:匯入規則時選擇的路徑
  • REGION:如果是全域政策,請指定 --global;如果是區域政策,請指定 REGION。

API

如要匯入修改後的網路防火牆政策規則,請使用 Compute Engine API 中的 networkFirewallPolicies.patch 方法:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/global/firewallPolicy/FIREWALL_POLICY_NAME
  

更改下列內容:

  • PROJECT:網路防火牆政策規則的專案 ID
  • FIREWALL_POLICY_NAME:要匯出的網路防火牆政策名稱

如要匯入修改後的區域網路防火牆政策規則,請使用 Compute Engine API 中的 regionNetworkFirewallPolicies.patch 方法:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/firewallPolicies/FIREWALL_POLICY_NAME
   

更改下列內容:

  • PROJECT:區域網路防火牆政策規則的專案 ID
  • REGION:防火牆政策規則的區域
  • FIREWALL_POLICY_NAME:要匯出的防火牆政策名稱

    這項要求會傳回網路防火牆政策資源定義。

後續步驟