借助地址组,您可以将多个 IP 地址和 IP 地址范围合并为一个命名的逻辑单元,并可在多个产品中使用。本文档介绍了如何将地址组与 Google Cloud Armor 安全政策搭配使用。您需要拥有有效的 Google Cloud Armor Enterprise 订阅才能使用地址组。
准备工作
在配置地址组之前,您必须先启用 Network Security API networksecurity.googleapis.com
。
IAM 角色
如需创建和管理地址组,您需要 Compute Network Admin 角色 (roles/compute.networkAdmin
)。您还可以定义具有一组等效权限的自定义角色。
下表提供了对地址组执行一组任务所需的 Identity and Access Management (IAM) 权限列表。
任务 | IAM 角色名称 | IAM 权限 |
---|---|---|
创建和管理 |
Compute Network Admin |
networksecurity.addressGroups.* |
发现和查看 |
Compute Network User |
networksecurity.addressGroups.list networksecurity.addressGroups.get networksecurity.addressGroups.use |
如需详细了解哪些角色包含特定 IAM 权限,请参阅 IAM 角色和权限索引。
使用项目级地址组
以下部分介绍了如何使用 Google Cloud 控制台或 Google Cloud CLI 创建和修改项目级地址组,以及如何将项目级地址组与安全策略搭配使用。
创建或修改项目级地址组
以下部分介绍了如何创建项目级地址组、如何在项目级地址组中添加和移除地址以及如何删除项目级地址组。
创建项目级地址组
创建地址组时,您必须分别使用 --capacity
和 --type
标志指定其容量和 IP 地址版本。创建地址组后,您将无法更改这些值。
此外,Cloud Armor 的容量上限可能高于其他产品(例如 Cloud 新一代防火墙)的容量上限。因此,如果您想在多个产品中使用同一地址组,则必须将容量设置为小于或等于这些产品中最低的容量上限。
控制台
- 在 Google Cloud 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的项目(如果适用)。
- 点击创建地址组。
- 在名称字段中,输入一个名称。
- (可选):在说明字段中,添加说明。
- 对于范围,选择全球。
- 在类型部分,选择 IPv4 或 IPv6。
在用途部分,选择 Cloud Armor;或者,如果您还计划将地址组与 Cloud 新一代防火墙政策搭配使用,请选择防火墙和 Cloud Armor。
如需详细了解如何选择用途,请参阅地址组规范。
在容量字段中,输入地址组的容量。
在 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 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的项目(如果适用)。
- 如需修改地址组,请点击地址组的名称。
- 点击修改。
- 在 IP 地址字段中,将新项添加到 IP 地址的英文逗号分隔列表中。或者,您也可以点击导入地址,上传包含 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 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的项目(如果适用)。
- 如需修改地址组,请点击地址组的名称。
- 点击修改。
- 在 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 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的项目(如果适用)。
- 如需克隆地址组,请点击地址组的名称。
- 点击克隆。
- 在名称字段中,输入要创建的克隆地址组的名称。
- 点击克隆。
gcloud
在以下示例中,您使用 gcloud network-security address-groups clone-items
命令将 IP 地址从源地址组 SOURCE_GROUP_NAME
克隆到目标地址组 GROUP_NAME
:
gcloud network-security address-groups clone-items GROUP_NAME \ --location global \ --source SOURCE_GROUP_NAME
删除项目级地址组
如果某个地址组被资源(包括防火墙政策或安全政策)所引用,则无法删除该地址组。请按照以下步骤删除地址组:
控制台
- 在 Google Cloud 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的项目(如果适用)。
- 选中您要删除的地址组旁边的复选框。确保所选地址组未被任何防火墙政策或安全政策引用。
- 点击删除,然后再次点击删除进行确认。
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
且包含 10,000 个已知恶意 IP 地址的 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
且包含 10,000 个已知恶意 IP 地址的 IP 地址组。此外,您还使用了上游代理,它会在标头中包含有关来源客户端的信息。您可以使用具有以下匹配条件的单个安全政策 deny
规则拒绝所有这些 IP 地址:
evaluateAddressGroup('MALICIOUS_IPS', origin.user_ip)
如需详细了解用户 IP 地址,请参阅属性。
使用组织级地址组
以下部分介绍了如何使用 Google Cloud 控制台或 Google Cloud CLI 创建和修改组织级地址组,以及如何将组织级地址组与安全政策搭配使用。
创建或修改组织级地址组
组织级地址组可与服务级安全政策和分层安全政策搭配使用。
以下部分介绍了如何创建组织级地址组、如何在组织级地址组中添加和移除地址以及如何删除组织级地址组。
创建组织级地址组
创建地址组时,您必须分别使用 --capacity
和 --type
标志指定其容量和 IP 地址版本。创建地址组后,您将无法更改这些值。
此外,Cloud Armor 的容量上限可能高于其他产品(例如 Cloud 新一代防火墙)的容量上限。因此,如果您想在多个产品中使用同一地址组,则必须将容量设置为小于或等于这些产品中最低的容量上限。
控制台
- 在 Google Cloud 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的组织(如果适用)。
- 点击创建地址组。
- 在名称字段中,输入一个名称。
- 可选:在说明字段中,添加说明。
- 对于范围,选择全球。
- 在类型部分,选择 IPv4 或 IPv6。
在用途部分,选择 Cloud Armor;或者,如果您还计划将地址组与 Cloud 新一代防火墙政策搭配使用,请选择 Cloud NGFW 和 Cloud Armor。
如需详细了解如何为地址组选择用途,请参阅规范。
在容量字段中,输入地址组的容量。
在 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 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 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的组织(如果适用)。
- 如需修改地址组,请点击地址组的名称。
- 点击修改。
- 在 IP 地址字段中,将新项添加到 IP 地址的英文逗号分隔列表中。或者,您也可以点击导入地址,上传包含 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 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的组织(如果适用)。
- 如需修改地址组,请点击地址组的名称。
- 点击修改。
- 在 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 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的组织(如果适用)。
- 如需克隆地址组,请点击地址组的名称。
- 点击克隆。
- 在名称字段中,输入要创建的克隆地址组的名称。
- 点击克隆。
gcloud
在以下示例中,您使用 gcloud network-security org-address-groups clone-items
命令将 IP 地址从源地址组 SOURCE_GROUP_NAME
克隆到目标地址组 GROUP_NAME
:
gcloud network-security org-address-groups clone-items GROUP_NAME \ --location global \ --source SOURCE_GROUP_NAME
删除组织级地址组
如果某个组织级地址组被资源(包括防火墙政策或安全政策)所引用,则无法删除该地址组。请按照以下步骤删除地址组:
控制台
- 在 Google Cloud 控制台中,前往地址组页面。
- 在项目选择器菜单中,选择您的组织(如果适用)。
- 选中您要删除的地址组旁边的复选框。确保所选地址组未被任何防火墙政策或安全政策引用。
- 点击删除,然后再次点击删除进行确认。
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
且包含 10,000 个已知恶意 IP 地址的组织级 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
且包含 10,000 个已知恶意 IP 地址的 IP 地址组。此外,您还使用了上游代理,它会在标头中包含有关来源客户端 IP 地址的信息。您可以使用具有以下匹配条件的单个安全政策 deny
规则,拒绝所有这些 IP 地址访问组织中的所有后端服务:
evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.user_ip)
如需详细了解用户 IP 地址,请参阅属性。