位址群組可讓您將多個 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 網路管理員 |
networksecurity.addressGroups.* |
| 探索及查看 |
Compute 網路使用者 |
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) 的容量上限。因此,如要在多項產品中使用同一個位址群組,您必須將容量設為小於或等於這些產品中最低的容量上限。
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取專案 (如有)。
- 按一下「Create Address Group」。
- 在「Name」(名稱) 欄位中輸入名稱。
- (選用):在「Description」(說明) 欄位中新增說明。
- 在「範圍」部分,選擇「全域」。
- 在「Type」(類型) 部分,選擇「IPv4」或「IPv6」。
在「Purpose」(用途) 部分,選擇「Cloud Armor」。如果您也打算將位址群組與 Cloud Next Generation Firewall 政策搭配使用,請選擇「Firewall and Cloud Armor」(防火牆和 Cloud Armor)。
如要進一步瞭解如何選擇用途,請參閱位址群組規格。
在「Capacity」(容量) 欄位中,輸入位址群組的容量。
在「IP Addresses」(IP 位址) 欄位中,列出要加入位址群組的 IP 位址或 IP 範圍,並以半形逗號分隔。例如:
1.1.1.0/24,1.2.0.0。IP 位址或 IP 範圍數量不得超過設定的容量。
點選「建立」。
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
將項目新增至特定專案適用的位址群組
建立位址群組後,即可新增項目。
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取專案 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」(IP 位址) 欄位中,將新項目新增至以半形逗號分隔的 IP 位址清單。或者,您也可以按一下「Import addresses」(匯入位址),上傳含有 IP 位址清單的 CSV 檔案。
- 按一下「儲存」。
gcloud
在以下範例中,您使用 gcloud network-security address-groups add-items 指令,將 IP 位址 192.168.1.2、192.168.1.8 和 192.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
從專案範圍的位址群組中移除項目
請按照下列步驟,從位址群組中移除項目:
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取專案 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」(IP 位址) 欄位中,從以半形逗號分隔的 IP 位址清單中刪除要移除的項目。
- 按一下「儲存」。
gcloud
以下範例使用 gcloud network-security address-groups remove-items 指令,移除您在上一個指令中新增的 IP 位址 192.168.1.2、192.168.1.8 和 192.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
複製特定專案適用的位址群組
請按照下列步驟複製地址群組中的項目:
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取專案 (如有)。
- 如要複製地址群組,請按一下地址群組名稱。
- 按一下 [Clone] (複製)。
- 在「Name」(名稱) 欄位中,輸入要建立的複製位址群組名稱。
- 按一下 [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
刪除特定專案適用的位址群組
如果位址群組由資源 (包括防火牆政策或安全性政策) 參照,則無法刪除。請按照下列步驟刪除位址群組:
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取專案 (如有)。
- 找出要刪除的地址群組,然後勾選旁邊的核取方塊。確認所選位址群組未由任何防火牆或安全性政策參照。
- 點選「刪除」,然後再次點按「刪除」確認操作。
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/27 和 66.249.77.64/27 存取 BACKEND_SERVICE_2:
- 建立名為
POLICY_1的後端安全性政策,並附加至BACKEND_SERVICE_1。 在
POLICY_1中,使用下列比對條件建立deny規則:evaluateAddressGroup('MALICIOUS_IPS', origin.ip)建立第二個後端安全性政策,名為
POLICY_2,並附加至BACKEND_SERVICE_2。在
POLICY_2中,建立deny規則,並使用下列比對條件,排除66.249.77.32/27和66.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) 的容量上限。因此,如要在多項產品中使用同一個位址群組,您必須將容量設為小於或等於這些產品中最低的容量上限。
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取您的組織 (如有)。
- 按一下「Create Address Group」。
- 在「Name」(名稱) 欄位中輸入名稱。
- 選用:在「Description」(說明) 欄位中新增說明。
- 在「範圍」部分,選擇「全域」。
- 在「Type」(類型) 部分,選擇「IPv4」或「IPv6」。
在「Purpose」(用途) 部分,選擇「Cloud Armor」。如果您也打算將位址群組與 Cloud Next Generation Firewall 防火牆政策搭配使用,請選擇「Cloud NGFW and Cloud Armor」(Cloud NGFW 和 Cloud Armor)。
如要進一步瞭解如何選擇位址群組的用途,請參閱「規格」。
在「Capacity」(容量) 欄位中,輸入位址群組的容量。
在「IP Addresses」(IP 位址) 欄位中,列出要加入位址群組的 IP 位址或 IP 範圍,並以半形逗號分隔。例如:
1.1.1.0/24,1.2.0.0。IP 位址或 IP 範圍數量不得超過設定的容量。
點選「建立」。
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
將項目新增至組織範圍的位址群組
建立組織範圍的位址群組後,即可新增項目。
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取您的組織 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」(IP 位址) 欄位中,將新項目新增至以半形逗號分隔的 IP 位址清單。或者,您也可以按一下「Import addresses」(匯入位址),上傳含有 IP 位址清單的 CSV 檔案。
- 按一下「儲存」。
gcloud
在以下範例中,您可以使用 gcloud network-security org-address-groups add-items 指令,將 IP 位址 192.168.1.2、192.168.1.8 和 192.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
從組織範圍的位址群組中移除項目
請按照下列步驟,從組織範圍的位址群組中移除項目:
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取您的組織 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」(IP 位址) 欄位中,從以半形逗號分隔的 IP 位址清單中刪除要移除的項目。
- 按一下「儲存」。
gcloud
以下範例使用 gcloud network-security org-address-groups remove-items 指令,移除您在上一個指令中新增的 IP 位址 192.168.1.2、192.168.1.8 和 192.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
複製特定組織適用的位址群組
請按照下列步驟複製地址群組中的項目:
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取您的組織 (如有)。
- 如要複製地址群組,請按一下地址群組名稱。
- 按一下 [Clone] (複製)。
- 在「Name」(名稱) 欄位中,輸入要建立的複製位址群組名稱。
- 按一下 [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
刪除組織範圍的位址群組
如果組織範圍的位址群組由資源 (包括防火牆政策或安全性政策) 參照,則無法刪除。請按照下列步驟刪除位址群組:
控制台
- 前往 Google Cloud 控制台的「Address groups」(位址群組) 頁面。
- 在專案選取器選單中,選取您的組織 (如有)。
- 找出要刪除的地址群組,然後勾選旁邊的核取方塊。確認所選位址群組未由任何防火牆或安全性政策參照。
- 點選「刪除」,然後再次點按「刪除」確認操作。
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 位址
在這個範例中,假設您有一個組織範圍的 IP 位址群組,名為 MALICIOUS_IPS,其中包含 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/27 和 66.249.77.64/27 存取 BACKEND_SERVICE_2:
- 建立名為
BACKEND_POLICY_1的後端安全性政策。 在
BACKEND_POLICY_1中新增deny規則,並設定下列比對條件,封鎖MALICIOUS_IPS中的所有 IP 位址:evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)使用下列指令,將
BACKEND_POLICY_1與BACKEND_SERVICE_1建立關聯:gcloud compute backend-services update BACKEND_SERVICE_1 \ --security-policy BACKEND_POLICY_1建立第二個後端安全性政策,名為
BACKEND_POLICY_2。在
BACKEND_POLICY_2中新增deny規則,並設定下列比對條件,封鎖MALICIOUS_IPS中除了66.249.77.32/27和66.249.77.64/27以外的所有 IP 位址:evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip, [`66.249.77.32/27`, `66.249.77.64/27`])使用下列指令,將
BACKEND_POLICY_2與BACKEND_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 位址總覽」。