設定位址群組

地址群組可將多個 IP 位址和 IP 位址範圍合併為單一具名的邏輯單元,並在多項產品中使用。本文說明如何搭配使用位址群組與 Google Cloud Armor 安全性政策。如要使用位址群組,您必須訂閱有效的 Google Cloud Armor Enterprise。

事前準備

設定位址群組前,請先啟用 Network Security API networksecurity.googleapis.com

IAM 角色

如要建立及管理位址群組,您需要具備 Compute 網路管理員角色 (roles/compute.networkAdmin)。您也可以定義具備同等權限的自訂角色。

下表列出在位址群組上執行一組工作所需的 Identity and Access Management (IAM) 權限。

工作 IAM 角色名稱 IAM 權限
建立及管理地址群組

Compute 網路管理員 (roles/compute.networkAdmin)

networksecurity.addressGroups.*
探索及查看地址群組

Compute 網路使用者 (roles/compute.networkUser)

networksecurity.addressGroups.list
networksecurity.addressGroups.get
networksecurity.addressGroups.use

如要進一步瞭解哪些角色包含特定 IAM 權限,請參閱「IAM 角色和權限索引」。

使用專案範圍的地址群組

以下各節說明如何使用 Google Cloud 控制台或 Google Cloud CLI 建立及修改專案範圍的位址群組,以及如何在安全防護政策中使用專案範圍的位址群組。

建立或修改專案範圍的地址群組

以下各節說明如何建立專案範圍的位址群組、如何從專案範圍的位址群組新增及移除位址,以及如何刪除專案範圍的位址群組。

建立專案範圍的位址群組

建立位址群組時,您必須分別使用 --capacity--type 旗標指定容量和 IP 位址版本。建立位址群組後,您就無法變更這些值。

此外,Cloud Armor 的最大容量可能高於其他產品 (例如 Cloud Next Generation Firewall) 的最大容量。因此,如要在多個產品中使用相同的地址群組,容量必須小於或等於這些產品中最低的容量上限。

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的專案 (如有)。
  3. 按一下「建立地址群組」
  4. 在「名稱」欄位中輸入名稱。
  5. (選用):在「Description」(說明) 欄位中新增說明。
  6. 在「範圍」部分,選擇「全域」
  7. 在「類型」中,選擇「IPv4」或「IPv6」
  8. 在「用途」中選擇「Cloud Armor」;如果您也打算將位址群組用於 Cloud Next Generation Firewall 政策,請選擇「防火牆和 Cloud Armor」

    如要進一步瞭解如何選擇用途,請參閱地址群組規格

  9. 在「容量」欄位中,輸入地址群組的容量。

  10. 在「IP Addresses」(IP 位址) 欄位中,列出要納入位址群組的 IP 位址或 IP 範圍,並以半形逗號分隔。例如:1.1.1.0/24,1.2.0.0

    IP 位址或 IP 範圍數量不得超過設定的容量。

  11. 點選「建立」

gcloud

以下範例使用 gcloud network-security address-groups create 指令建立名為 GROUP_NAME 的位址群組,容量為 1,000 個 IPv4 位址,可用於 Cloud Armor 或 Cloud NGFW:

 gcloud network-security address-groups create GROUP_NAME \
     --location global \
     --description  "address group description" \
     --capacity 1000 \
     --type IPv4 \
     --purpose DEFAULT,CLOUD_ARMOR

或者,您也可以將用途專門設為 CLOUD_ARMOR,建立容量較大的地址群組。在下列範例中,您會建立位址群組,容量為 10,000 個 IPv6 IP 位址範圍:

 gcloud network-security address-groups create GROUP_NAME \
     --location global \
     --description  "address group description" \
     --capacity 10000 \
     --type IPv6 \
     --purpose CLOUD_ARMOR

將項目新增至專案範圍的地址群組

建立地址群組後,即可新增項目。

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的專案 (如有)。
  3. 如要編輯地址群組,請按一下地址群組名稱。
  4. 按一下 [編輯]
  5. 在「IP Addresses」欄位中,將新項目新增至以半形逗號分隔的 IP 位址清單。或者,您也可以按一下「匯入地址」,上傳含有 IP 位址清單的 CSV 檔案。
  6. 按一下 [儲存]

gcloud

在下列範例中,您使用 gcloud network-security address-groups add-items 指令,將 IP 位址 192.168.1.2192.168.1.8192.168.1.9 新增至位址群組 GROUP_NAME。您可以使用 --item 旗標提供以半形逗號分隔的項目清單:

 gcloud network-security address-groups add-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

從專案範圍的地址群組中移除項目

如要從位址群組中移除項目,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的專案 (如有)。
  3. 如要編輯地址群組,請按一下地址群組名稱。
  4. 按一下 [編輯]
  5. 在「IP Addresses」(IP 位址) 欄位中,從以半形逗號分隔的 IP 位址清單中,刪除要移除的項目。
  6. 按一下 [儲存]

gcloud

以下範例使用 gcloud network-security address-groups remove-items 指令,移除您在上一個指令中新增的 IP 位址 192.168.1.2192.168.1.8192.168.1.9

 gcloud network-security address-groups remove-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

複製專案範圍的位址群組

如要複製地址群組中的項目,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的專案 (如有)。
  3. 如要複製地址群組,請按一下地址群組名稱。
  4. 按一下 [Clone] (複製)。
  5. 在「名稱」欄位中,輸入要建立的已複製位址群組名稱。
  6. 按一下 [Clone] (複製)。

gcloud

在下列範例中,您可以使用 gcloud network-security address-groups clone-items 指令,將來源位址群組 SOURCE_GROUP_NAME 中的 IP 位址複製到目標位址群組 GROUP_NAME

 gcloud network-security address-groups clone-items GROUP_NAME \
     --location global \
     --source SOURCE_GROUP_NAME

刪除專案範圍的位址群組

如果資源 (包括防火牆政策或安全性政策) 參照位址群組,您就無法刪除該位址群組。請按照下列步驟刪除位址群組:

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的專案 (如有)。
  3. 找出要刪除的位址群組,然後勾選旁邊的核取方塊。 確認所選位址群組未參照任何防火牆或安全性政策。
  4. 按一下「刪除」,然後再次點選「刪除」來確認操作。

gcloud

以下範例使用 gcloud network-security address-groups delete 指令刪除名為 GROUP_NAME 的位址群組。

 gcloud network-security address-groups delete GROUP_NAME \
     --location global

在安全性政策中使用專案範圍的位址群組

建立位址群組並新增 IP 位址後,您就可以搭配任何現有的 Cloud Armor 後端安全性政策使用。下列範例顯示兩種不同的位址群組使用方式。

拒絕一組 IP 位址

以本例來說,假設您有一個名為 MALICIOUS_IPS 的 IP 位址群組,其中包含 10,000 個您認為惡意的 IP 位址。您可以使用單一安全性政策 deny 規則,透過下列比對條件拒絕所有這些 IP 位址:

evaluateAddressGroup('MALICIOUS_IPS', origin.ip)

在多項安全性政策中重複使用一組 IP 位址範圍

以這個範例來說,假設您有與上一個範例相同的 10,000 個 IP 位址清單,但其中有些 IP 位址已知是網頁檢索器。您想禁止這些 IP 位址存取某些後端服務,但允許網頁檢索器存取其他後端服務,以改善搜尋引擎最佳化 (SEO)。請按照下列步驟拒絕所有地址存取 BACKEND_SERVICE_1,同時允許 IP 位址範圍 66.249.77.32/2766.249.77.64/27 存取 BACKEND_SERVICE_2

  1. 建立名為 POLICY_1 的後端安全性政策,並附加至 BACKEND_SERVICE_1
  2. POLICY_1 中,使用下列比對條件建立 deny 規則:

    evaluateAddressGroup('MALICIOUS_IPS', origin.ip)
    
  3. 建立名為 POLICY_2 的第二個後端安全性政策,並附加至 BACKEND_SERVICE_2

  4. POLICY_2 中,使用下列比對條件建立 deny 規則,排除 66.249.77.32/2766.249.77.64/27

    evaluateAddressGroup('MALICIOUS_IPS', origin.ip, [66.249.77.32/27, 66.249.77.64/27])
    

使用位址群組比對使用者 IP 位址

如要使用位址群組比對來源用戶端 (「使用者」) IP 位址,請務必在安全政策中設定 userIpRequestHeaders[]

請注意,在下列情況下,您會收到請求的來源 IP 位址,而非原始用戶端的 IP 位址,因為 origin.user_ip 的值預設為 origin.ip 的值:

  • 您不會設定 userIpRequestHeaders[] 選項。
  • 未顯示已設定的標頭。
  • 設定的標頭含有無效的 IP 位址值。

以本例來說,假設您有一個名為 MALICIOUS_IPS 的 IP 位址群組,其中包含 10,000 個您認為惡意的 IP 位址。此外,您還使用上游 Proxy,其中包含標頭中的來源用戶端相關資訊。您可以使用單一安全政策 deny 規則,拒絕所有這些 IP 位址,並採用下列比對條件:

evaluateAddressGroup('MALICIOUS_IPS', origin.user_ip)

如要進一步瞭解 IP 位址,請參閱「屬性」。

如要進一步瞭解使用者 IP 位址,請參閱「使用者 IP 位址總覽」。

使用機構範圍的地址群組

以下各節說明如何使用 Google Cloud 控制台或 Google Cloud CLI,建立及修改機構範圍的位址群組,以及如何在安全政策中使用機構範圍的位址群組。

建立或修改機構範圍的地址群組

您可以在服務層級安全性政策和階層式安全性政策中,使用機構範圍的地址群組。

以下各節說明如何建立機構範圍的位址群組、如何從機構範圍的位址群組新增及移除位址,以及如何刪除機構範圍的位址群組。

建立機構範圍的位址群組

建立位址群組時,您必須分別使用 --capacity--type 旗標指定容量和 IP 位址版本。建立位址群組後,您就無法變更這些值。

此外,Cloud Armor 的最大容量可能高於其他產品 (例如 Cloud Next Generation Firewall) 的最大容量。因此,如要在多個產品中使用相同的地址群組,容量必須小於或等於這些產品中最低的容量上限。

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的機構 (如有)。
  3. 按一下「建立地址群組」
  4. 在「名稱」欄位中輸入名稱。
  5. 選用:在「Description」(說明) 欄位中新增說明。
  6. 在「範圍」部分,選擇「全域」
  7. 在「類型」中,選擇「IPv4」或「IPv6」
  8. 在「用途」中選擇「Cloud Armor」;如果您也打算將位址群組用於 Cloud Next Generation Firewall 政策,請選擇「Cloud NGFW 和 Cloud Armor」

    如要進一步瞭解如何選擇位址群組的用途,請參閱規格

  9. 在「容量」欄位中,輸入地址群組的容量。

  10. 在「IP Addresses」(IP 位址) 欄位中,列出要納入位址群組的 IP 位址或 IP 範圍,並以半形逗號分隔。例如:1.1.1.0/24,1.2.0.0

    IP 位址或 IP 範圍數量不得超過設定的容量。

  11. 點選「建立」

gcloud

以下範例使用 gcloud network-security org-address-groups create 指令,建立名為 GROUP_NAME 的機構範圍位址群組,容量為 1,000 個 IPv4 位址,可用於 Cloud Armor 或 Cloud NGFW:

 gcloud network-security org-address-groups create GROUP_NAME \
     --location global \
     --description  "org address group description" \
     --capacity 1000 \
     --type IPv4 \
     --purpose DEFAULT,CLOUD_ARMOR

或者,您也可以將用途專門設為 CLOUD_ARMOR,建立容量較大的機構範圍地址群組。在下列範例中,您會建立位址群組,容量為 10,000 個 IPv6 IP 位址範圍:

 gcloud network-security org-address-groups create GROUP_NAME \
     --location global \
     --description  "org address group description" \
     --capacity 10000 \
     --type IPv6 \
     --purpose CLOUD_ARMOR

將項目新增至機構範圍的地址群組

建立機構範圍的地址群組後,即可新增項目。

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的機構 (如有)。
  3. 如要編輯地址群組,請按一下地址群組名稱。
  4. 按一下 [編輯]
  5. 在「IP Addresses」欄位中,將新項目新增至以半形逗號分隔的 IP 位址清單。或者,您也可以按一下「匯入地址」,上傳含有 IP 位址清單的 CSV 檔案。
  6. 按一下 [儲存]

gcloud

在下列範例中,您使用 gcloud network-security org-address-groups add-items 指令,將 IP 位址 192.168.1.2192.168.1.8192.168.1.9 新增至機構範圍的位址群組 GROUP_NAME。您可以使用 --items 旗標提供以半形逗號分隔的項目清單:

 gcloud network-security org-address-groups add-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

從機構範圍的地址群組中移除項目

請按照下列步驟,從機構範圍的地址群組中移除項目:

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的機構 (如有)。
  3. 如要編輯地址群組,請按一下地址群組名稱。
  4. 按一下 [編輯]
  5. 在「IP Addresses」(IP 位址) 欄位中,從以半形逗號分隔的 IP 位址清單中,刪除要移除的項目。
  6. 按一下 [儲存]

gcloud

以下範例使用 gcloud network-security org-address-groups remove-items 指令,移除您在上一個指令中新增的 IP 位址 192.168.1.2192.168.1.8192.168.1.9

 gcloud network-security org-address-groups remove-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

複製機構範圍的位址群組

如要複製地址群組中的項目,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的機構 (如有)。
  3. 如要複製地址群組,請按一下地址群組名稱。
  4. 按一下 [Clone] (複製)。
  5. 在「名稱」欄位中,輸入要建立的已複製位址群組名稱。
  6. 按一下 [Clone] (複製)。

gcloud

在下列範例中,您可以使用 gcloud network-security org-address-groups clone-items 指令,將來源位址群組 SOURCE_GROUP_NAME 中的 IP 位址複製到目標位址群組 GROUP_NAME

 gcloud network-security org-address-groups clone-items GROUP_NAME \
     --location global \
     --source SOURCE_GROUP_NAME

刪除機構範圍的地址群組

如果資源 (包括防火牆政策或安全性政策) 參照機構範圍的位址群組,您就無法刪除該群組。請按照下列步驟刪除位址群組:

控制台

  1. 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。

    前往地址群組

  2. 在專案選取器選單中,選取您的機構 (如有)。
  3. 找出要刪除的位址群組,然後勾選旁邊的核取方塊。 確認所選位址群組未遭任何防火牆或安全性政策參照。
  4. 按一下「刪除」,然後再次點選「刪除」來確認操作。

gcloud

以下範例使用 gcloud network-security org-address-groups delete 指令刪除名為 GROUP_NAME 的位址群組。

 gcloud network-security org-address-groups delete GROUP_NAME \
     --location global

搭配安全性政策使用機構範圍的地址群組

建立位址群組並新增 IP 位址後,您就可以搭配任何現有的 Cloud Armor 後端安全性政策使用。以下範例說明兩種不同的位址群組使用方式。

拒絕組織中所有後端服務存取一組 IP 位址

舉例來說,假設您有一個名為 MALICIOUS_IPS 的機構範圍 IP 位址群組,其中包含 10,000 個您已知具有惡意行為的 IP 位址。您可以使用單一階層式安全政策,拒絕貴機構中所有後端服務的這些 IP 位址。建立階層式安全性政策,然後新增具有下列比對條件的 deny 規則:

evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)

最後,將階層式安全政策與貴機構中的所有後端服務建立關聯,並將 POLICY_NAME 替換為階層式安全政策的名稱,ORGANIZATION_ID 則替換為貴機構的 ID:

  gcloud compute org-security-policies associations create \
      --security-policy=POLICY_NAME \
      --organization=ORGANIZATION_ID

在機構內的所有後端服務中重複使用一組 IP 位址範圍

以這個範例來說,假設您有與上一個範例相同的 10,000 個 IP 位址清單,但其中有些 IP 位址已知是網頁檢索器。您想禁止非網頁檢索器 IP 位址存取貴機構的所有後端服務,但希望允許專案範圍的安全政策,判斷網頁檢索器是否能存取後端服務,以改善搜尋引擎最佳化 (SEO)。

請按照下列步驟拒絕所有位址存取 BACKEND_SERVICE_1,同時允許 IP 位址範圍 66.249.77.32/2766.249.77.64/27 存取 BACKEND_SERVICE_2

  1. 建立名為 BACKEND_POLICY_1 的後端安全性政策。
  2. BACKEND_POLICY_1 中新增 deny 規則,並使用下列比對條件,封鎖 MALICIOUS_IPS 中的所有 IP 位址:

    evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)
    
  3. 使用下列指令將 BACKEND_POLICY_1BACKEND_SERVICE_1 建立關聯:

     gcloud compute backend-services update BACKEND_SERVICE_1 \
         --security-policy BACKEND_POLICY_1
    
  4. 建立第二個後端安全性政策,並命名為「BACKEND_POLICY_2」。

  5. BACKEND_POLICY_2 中新增 deny 規則,並使用下列比對條件,封鎖 MALICIOUS_IPS 中的所有 IP 位址,但 66.249.77.32/2766.249.77.64/27 除外:

    evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip, [`66.249.77.32/27`, `66.249.77.64/27`])
    
  6. 使用下列指令將 BACKEND_POLICY_2BACKEND_SERVICE_2 建立關聯。將 ORG_ID 替換為您的機構 ID:

     gcloud compute backend-services update BACKEND_SERVICE_2 \
         --security-policy BACKEND_POLICY_2
    

使用位址群組,比對機構中所有後端服務的使用者 IP 位址

以本例來說,假設您有一個名為 MALICIOUS_IPS 的 IP 位址群組,其中包含 10,000 個您認為惡意的 IP 位址。此外,您還使用上游 Proxy,其中包含標頭中的來源用戶端 IP 位址相關資訊。您可以使用單一安全性政策 deny 規則,搭配下列比對條件,拒絕所有這些 IP 位址存取貴機構中的所有後端服務:

evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.user_ip)

如要進一步瞭解 IP 位址,請參閱「屬性」。

如要進一步瞭解使用者 IP 位址,請參閱「使用者 IP 位址總覽」。

後續步驟