借助地址组,您可以将多个 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
|
networksecurity.addressGroups.* |
发现和查看地址组 | compute.networkUser |
networksecurity.addressGroups.list
|
如需详细了解哪些角色包含特定 IAM 权限,请参阅 IAM 权限参考文档。
创建或修改地址组
以下部分介绍了如何创建地址组、 添加和移除地址组中的地址,以及如何删除地址组。
创建地址组
创建地址组时,您必须指定其容量和 IP 地址
分别使用 --capacity
和 --type
标志指定版本。您不能
请在创建地址组后更改这些值。
此外,Google Cloud Armor 的最大容量可能高于 Cloud 新一代防火墙等其他产品的最大容量。因此,如果 如果您想在多个产品中使用同一地址组,则必须 将容量设置为小于或等于 这些产品。
控制台
在 Google Cloud 控制台中,前往地址组页面。
在项目选择器菜单(如果有)中选择您的项目。
点击创建地址组。
在名称字段中,输入一个名称。
(可选)在说明字段中,添加说明。
对于范围,选择全球。
对于类型,请选择 IPv4 或 IPv6。
对于用途,请选择 Cloud Armor;或者,如果您还打算将地址组与 Cloud 新一代防火墙政策搭配使用,请选择 Firewall and Cloud Armor。
如需详细了解如何选择用途,请参阅地址组规范。
在容量字段中,输入地址组的容量。
在 IP 地址字段中,列出要包含在地址组中的 IP 地址或 IP 范围(以英文逗号分隔)。例如
1.1.1.0/24,1.2.0.0
。点击创建。
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 地址字段中,将新项添加到 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 地址字段中,删除您要移除的内容 从以逗号分隔的 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 地址
在此示例中,假设您有一个名为
将 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/27
和 66.249.77.64/27
访问 BACKEND_SERVICE_2:
- 创建名为 POLICY_1 的后端安全政策并将其附加 至 BACKEND_SERVICE_1。
在 POLICY_1 中,创建一个具有以下匹配条件的
deny
规则:evaluateAddressGroup('BAD_IPS', origin.ip)
创建第二个名为 POLICY_2 的后端安全政策,并 将其附加到 BACKEND_SERVICE_2。
在 POLICY_2 中,创建一条包含以下匹配项的
deny
规则 条件,其中不包括66.249.77.32/27
和66.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 地址,请参阅规则语言属性。