地址群組可讓您將多個 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
|
如要進一步瞭解哪些角色包含特定 IAM 權限,請參閱「IAM 角色和權限索引」。
使用專案範圍的地址群組
以下各節說明如何建立及修改專案範圍的位址群組,以及如何在安全性政策中使用專案範圍的位址群組。
建立或修改專案範圍的位址群組
以下各節說明如何建立專案範圍的位址群組、如何從專案範圍的位址群組新增及移除位址,以及如何刪除專案範圍的位址群組。
建立專案範圍的位址群組
建立位址群組時,您必須分別使用 --capacity
和 --type
旗標指定容量和 IP 位址版本。建立位址群組後,您就無法變更這些值。
此外,Google Cloud Armor 的最大容量可能高於其他產品 (例如 Cloud Next Generation Firewall) 的最大容量。因此,如要在多個產品中使用相同的地址群組,容量必須小於或等於這些產品中最低的容量上限。
主控台
- 前往 Google Cloud 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的專案 (如有)。
- 按一下「建立地址群組」。
- 在「名稱」欄位中輸入名稱。
- (選用):在「說明」欄位中新增說明。
- 在「範圍」部分,選擇「全域」。
- 在「類型」中,選擇「IPv4」或「IPv6」。
在「用途」中選擇「Cloud Armor」;如果您也打算將位址群組用於 Cloud Next Generation Firewall 政策,請選擇「Firewall and Cloud Armor」(防火牆和 Cloud Armor)。
如要進一步瞭解如何選擇用途,請參閱地址群組規格。
在「容量」欄位中,輸入地址群組的容量。
在「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
位址,可用於 Google 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 控制台或 gcloud network-security address-groups add-items
指令新增項目。
主控台
- 前往 Google Cloud 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的專案 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」欄位中,將新項目新增至以半形逗號分隔的 IP 位址清單。或者,您也可以按一下「匯入地址」,上傳含有 IP 位址清單的 CSV 檔案。
- 按一下 [儲存]。
gcloud
在以下範例中,您將 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 控制台
或 gcloud network-security address-groups remove-items
指令,從位址群組中移除項目。
主控台
- 前往 Google Cloud 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的專案 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」(IP 位址) 欄位中,從以半形逗號分隔的 IP 位址清單中,刪除要移除的項目。
- 按一下 [儲存]。
gcloud
下列指令會移除您在上一個指令中新增的 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 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的專案 (如有)。
- 找出要刪除的位址群組,然後勾選旁邊的核取方塊。 確認所選位址群組未參照任何防火牆或安全性政策。
- 按一下「刪除」,然後再次點選「刪除」來確認操作。
gcloud
以下範例使用 gcloud network-security address-groups delete
指令刪除名為 GROUP_NAME
的位址群組。
gcloud network-security address-groups delete GROUP_NAME \ --location global
在安全性政策中使用專案範圍的位址群組
建立位址群組並新增 IP 位址後,您就可以將該群組用於任何現有的 Google 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 位址,請參閱「屬性」。
使用機構範圍的地址群組
以下各節說明如何建立及修改機構範圍的位址群組,以及如何在安全政策中使用機構範圍的位址群組。
建立或修改機構範圍的地址群組
機構範圍的地址群組可搭配服務層級安全性政策和階層式安全性政策使用。
以下各節說明如何建立機構範圍的位址群組、如何從機構範圍的位址群組新增及移除位址,以及如何刪除機構範圍的位址群組。
建立機構範圍的位址群組
建立位址群組時,您必須分別使用 --capacity
和 --type
旗標指定容量和 IP 位址版本。建立位址群組後,您就無法變更這些值。
此外,Google Cloud Armor 的最大容量可能高於其他產品 (例如 Cloud Next Generation Firewall) 的最大容量。因此,如要在多個產品中使用相同的地址群組,容量必須小於或等於這些產品中最低的容量上限。
主控台
- 前往 Google Cloud 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的機構 (如有)。
- 按一下「建立地址群組」。
- 在「名稱」欄位中輸入名稱。
- 選用:在「說明」欄位中新增說明。
- 在「範圍」部分,選擇「全域」。
- 在「類型」中,選擇「IPv4」或「IPv6」。
在「用途」中選擇「Cloud Armor」;如果您也打算將位址群組用於 Cloud Next Generation Firewall 政策,請選擇「Cloud NGFW 和 Cloud Armor」。
如要進一步瞭解如何選擇位址群組的用途,請參閱規格。
在「容量」欄位中,輸入地址群組的容量。
在「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 位址,可用於 Google Cloud Armor 或 Cloud NGFW:
gcloud beta 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 beta network-security org-address-groups create GROUP_NAME \ --location global \ --description "org address group description" \ --capacity 10000 \ --type IPv6 \ --purpose CLOUD_ARMOR
將項目新增至機構範圍的地址群組
建立機構範圍的位址群組後,您可以使用 Google Cloud 控制台或 gcloud network-security org-address-groups add-items
指令新增項目。
主控台
- 前往 Google Cloud 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的機構 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」欄位中,將新項目新增至以半形逗號分隔的 IP 位址清單。或者,您也可以按一下「匯入地址」,上傳含有 IP 位址清單的 CSV 檔案。
- 按一下 [儲存]。
gcloud
在下列範例中,您會將 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 控制台或 gcloud network-security org-address-groups remove-items
指令,從機構範圍的地址群組中移除項目。
主控台
- 前往 Google Cloud 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的機構 (如有)。
- 如要編輯地址群組,請按一下地址群組名稱。
- 按一下 [編輯]。
- 在「IP Addresses」(IP 位址) 欄位中,從以半形逗號分隔的 IP 位址清單中,刪除要移除的項目。
- 按一下 [儲存]。
gcloud
下列指令會移除您在上一個指令中新增的 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 控制台的「位址群組」頁面。
- 在專案選取器選單中,選取您的機構 (如有)。
- 找出要刪除的位址群組,然後勾選旁邊的核取方塊。 確認所選位址群組未遭任何防火牆或安全性政策參照。
- 按一下「刪除」,然後再次點選「刪除」來確認操作。
gcloud
以下範例使用 gcloud network-security org-address-groups delete
指令刪除名為 GROUP_NAME
的位址群組。
gcloud network-security org-address-groups delete GROUP_NAME \ --location global
搭配安全性政策使用機構範圍的地址群組
建立位址群組並新增 IP 位址後,您就可以將該群組用於任何現有的 Google Cloud Armor 後端安全政策。以下範例說明兩種不同的地址群組使用方式。
拒絕機構中所有後端服務的 IP 位址群組
以本例來說,假設您有一個名為 MALICIOUS_IPS
的機構範圍 IP 位址群組,其中包含 10,000 個您認為惡意的 IP 位址。您可以使用單一階層式安全政策,拒絕貴機構中所有後端服務的這些 IP 位址。建立階層式安全性政策,然後新增具有下列比對條件的 deny
規則:
evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)
最後,將階層式安全政策與貴機構中的所有後端服務建立關聯,並將 POLICY_NAME
替換為階層式安全政策的名稱,以及將 ORGANIZATION_ID
替換為貴機構的 ID:
gcloud beta 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
中的所有 IP 位址,但66.249.77.32/27
和66.249.77.64/27
除外: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 位址,請參閱「屬性」。