配置地址组

借助地址组,您可以将多个 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 (roles/compute.networkAdmin)

networksecurity.addressGroups.*
发现和查看地址组

Compute Network User (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 新一代防火墙)的容量上限。因此,如果您想在多个产品中使用同一地址组,则必须将容量设置为小于或等于这些产品中最低的容量上限。

控制台

  1. 在 Google Cloud 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果适用)。
  3. 点击创建地址组
  4. 名称字段中,输入一个名称。
  5. (可选):在说明字段中,添加说明。
  6. 对于范围,选择全球
  7. 类型部分,选择 IPv4IPv6
  8. 用途部分,选择 Cloud Armor;或者,如果您还计划将地址组与 Cloud 新一代防火墙政策搭配使用,请选择防火墙和 Cloud Armor

    如需详细了解如何选择用途,请参阅地址组规范

  9. 容量字段中,输入地址组的容量。

  10. 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 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果适用)。
  3. 如需修改地址组,请点击地址组的名称。
  4. 点击修改
  5. IP 地址字段中,将新项添加到 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 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果适用)。
  3. 如需修改地址组,请点击地址组的名称。
  4. 点击修改
  5. 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 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果适用)。
  3. 如需克隆地址组,请点击地址组的名称。
  4. 点击克隆
  5. 名称字段中,输入要创建的克隆地址组的名称。
  6. 点击克隆

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

删除项目级地址组

如果某个地址组被资源(包括防火墙政策或安全政策)所引用,则无法删除该地址组。请按照以下步骤删除地址组:

控制台

  1. 在 Google Cloud 控制台中,前往地址组页面。

    前往“地址组”

  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 且包含 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/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 且包含 10,000 个已知恶意 IP 地址的 IP 地址组。此外,您还使用了上游代理,它会在标头中包含有关来源客户端的信息。您可以使用具有以下匹配条件的单个安全政策 deny 规则拒绝所有这些 IP 地址:

evaluateAddressGroup('MALICIOUS_IPS', origin.user_ip)

如需详细了解用户 IP 地址,请参阅属性

使用组织级地址组

以下部分介绍了如何使用 Google Cloud 控制台或 Google Cloud CLI 创建和修改组织级地址组,以及如何将组织级地址组与安全政策搭配使用。

创建或修改组织级地址组

组织级地址组可与服务级安全政策和分层安全政策搭配使用。

以下部分介绍了如何创建组织级地址组、如何在组织级地址组中添加和移除地址以及如何删除组织级地址组。

创建组织级地址组

创建地址组时,您必须分别使用 --capacity--type 标志指定其容量和 IP 地址版本。创建地址组后,您将无法更改这些值。

此外,Cloud Armor 的容量上限可能高于其他产品(例如 Cloud 新一代防火墙)的容量上限。因此,如果您想在多个产品中使用同一地址组,则必须将容量设置为小于或等于这些产品中最低的容量上限。

控制台

  1. 在 Google Cloud 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的组织(如果适用)。
  3. 点击创建地址组
  4. 名称字段中,输入一个名称。
  5. 可选:在说明字段中,添加说明。
  6. 对于范围,选择全球
  7. 类型部分,选择 IPv4IPv6
  8. 用途部分,选择 Cloud Armor;或者,如果您还计划将地址组与 Cloud 新一代防火墙政策搭配使用,请选择 Cloud NGFW 和 Cloud Armor

    如需详细了解如何为地址组选择用途,请参阅规范

  9. 容量字段中,输入地址组的容量。

  10. 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 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

向组织级地址组添加项

创建组织级地址组后,您可以添加项。

控制台

  1. 在 Google Cloud 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的组织(如果适用)。
  3. 如需修改地址组,请点击地址组的名称。
  4. 点击修改
  5. IP 地址字段中,将新项添加到 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 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的组织(如果适用)。
  3. 如需修改地址组,请点击地址组的名称。
  4. 点击修改
  5. 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 控制台中,前往地址组页面。

    前往“地址组”

  2. 在项目选择器菜单中,选择您的组织(如果适用)。
  3. 如需克隆地址组,请点击地址组的名称。
  4. 点击克隆
  5. 名称字段中,输入要创建的克隆地址组的名称。
  6. 点击克隆

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

删除组织级地址组

如果某个组织级地址组被资源(包括防火墙政策或安全政策)所引用,则无法删除该地址组。请按照以下步骤删除地址组:

控制台

  1. 在 Google Cloud 控制台中,前往地址组页面。

    前往“地址组”

  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 且包含 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/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 且包含 10,000 个已知恶意 IP 地址的 IP 地址组。此外,您还使用了上游代理,它会在标头中包含有关来源客户端 IP 地址的信息。您可以使用具有以下匹配条件的单个安全政策 deny 规则,拒绝所有这些 IP 地址访问组织中的所有后端服务:

evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.user_ip)

如需详细了解用户 IP 地址,请参阅属性

后续步骤