配置地址组

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

IAM 角色

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

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

任务 IAM 角色名称 IAM 权限
创建和管理地址组 compute.networkAdmin

compute.securityAdmin

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

networksecurity.addressGroups.get

networksecurity.addressGroups.use

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

创建或修改地址组

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

创建地址组

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

此外,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.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

删除地址组

如果资源(包括 防火墙政策或安全政策请按照以下步骤删除地址 群组:

控制台

  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 替换为 10,000 个已知恶意的 IP 地址。您 可以使用一项安全政策拒绝所有这些 IP 地址 具有以下匹配条件的 deny 规则:

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 中,创建一条包含以下匹配项的 deny 规则 条件,其中不包括 66.249.77.32/2766.249.77.64/27

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

使用地址组来匹配用户 IP 地址

在此示例中,假设您有一个名为 将 BAD_IPS 替换为 10,000 个已知恶意的 IP 地址。在 此外,您还需要使用上游代理,该代理包含 原始客户端。您可以使用具有以下匹配条件的单个安全政策 deny 规则来拒绝所有这些 IP 地址:

evaluateAddressGroup('BAD_IPS', origin.user_ip)

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

后续步骤