配置地址组

借助地址组,您可以将多个 IP 地址和 IP 地址范围合并为一个命名的逻辑单元,并在多个产品中使用该单元。本文档介绍了如何将地址组与 Google Cloud Armor 安全政策搭配使用。您需要拥有有效的 Google Cloud Armor Enterprise 订阅才能使用地址群组。

准备工作

在配置地址组之前,您必须先启用 Network Security API networksecurity.googleapis.com

IAM 角色

如需创建和管理地址组,您需要 Network Administrator 角色 (compute.networkAdmin)。您还可以定义具有一组等效权限的自定义角色。

下表提供了对地址组执行一组任务所需的 Identity and Access Management (IAM) 权限列表。

任务 IAM 角色名称 IAM 权限
创建和管理地址组 compute.networkAdmin networksecurity.addressGroups.*
发现和查看地址组 compute.networkUser networksecurity.addressGroups.list

networksecurity.addressGroups.get

networksecurity.addressGroups.use

如需详细了解哪些角色包含特定 IAM 权限,请参阅 IAM 权限参考文档

创建或修改地址组

以下部分介绍了如何创建地址群组、如何向地址群组添加和移除地址,以及如何删除地址群组。

创建地址组

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

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

控制台

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

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果有)。

  3. 点击创建地址组

  4. 名称字段中,输入一个名称。

  5. (可选)在说明字段中,添加说明。

  6. 对于范围,选择全球

  7. 对于类型,请选择 IPv4IPv6

  8. 对于用途,请选择 Cloud Armor;或者,如果您还打算将地址组与 Cloud 新一代防火墙政策搭配使用,请选择 Firewall and Cloud Armor

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

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

  10. IP 地址字段中,列出要包含在地址组中的 IP 地址或 IP 范围(以英文逗号分隔)。例如 1.1.1.0/24,1.2.0.0

  11. 点击创建

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 命令添加内容。

控制台

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

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果有)。

  3. 如需修改地址组,请点击地址组的名称。

  4. 点击修改

  5. IP 地址字段中,将新项添加到 IP 地址的逗号分隔列表中。或者,您也可以点击导入地址,上传包含 IP 地址列表的 CSV 文件。

  6. 点击保存

gcloud

在以下示例中,您将 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

从地址组中移除内容

您可以使用 Google Cloud 控制台或 gcloud network-security address-groups remove-items 命令从地址组中移除内容。

控制台

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

    前往“地址组”

  2. 在项目选择器菜单中,选择您的项目(如果有)。

  3. 如需修改地址组,请点击地址组的名称。

  4. 点击修改

  5. IP 地址字段中,从以英文逗号分隔的 IP 地址列表中删除要移除的项目。

  6. 点击保存

gcloud

以下命令会移除您在上一个命令中添加的 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. 点击删除,然后再次点击删除进行确认。

gcloud

以下示例使用 gcloud network-security address-groups delete 命令删除名为 GROUP_NAME 的地址组。

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

将地址组与安全政策搭配使用

创建地址组并向其添加 IP 地址后,您可以将其与任何现有的 Google Cloud Armor 后端安全政策搭配使用。以下示例展示了使用地址群组的两种不同方式。

拒绝一组 IP 地址

在本示例中,假设您有一个名为 BAD_IPS 的 IP 地址组,其中包含 1 万个已知恶意的 IP 地址。您可以使用具有以下匹配条件的单个安全政策 deny 规则来拒绝所有这些 IP 地址:

evaluateAddressGroup('BAD_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('BAD_IPS', origin.ip)
    
  3. 创建一个名为 POLICY_2 的第二个后端安全政策,并将其附加到 BACKEND_SERVICE_2

  4. POLICY_2 中,使用以下匹配条件(排除 66.249.77.32/2766.249.77.64/27)创建 deny 规则:

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

使用地址组与用户 IP 地址进行匹配

在本示例中,假设您有一个名为 BAD_IPS 的 IP 地址组,其中包含 1 万个已知恶意的 IP 地址。此外,您还使用上游代理,其中包含标头中有关来源客户端的信息。您可以使用具有以下匹配条件的单个安全政策 deny 规则来拒绝所有这些 IP 地址:

evaluateAddressGroup('BAD_IPS', origin.user_ip)

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

后续步骤