通过网络边缘安全政策,您可以配置规则以允许或屏蔽 Google 网络边缘的流量。您可以为以下前端类型配置网络边缘安全政策:
- 外部直通网络负载均衡器
- 协议转发
- 具有公共 IP 地址的虚拟机
您可以使用网络边缘安全政策按来源和目的地 IP 地址范围进行过滤,与 Cloud 新一代防火墙类似但不消耗资源。此外,网络边缘安全政策是唯一支持字节偏移过滤的安全政策类型。
为网络边缘安全政策配置自定义规则
与后端和边缘安全政策一样,您可以为网络边缘安全政策配置自定义规则。在以下示例中,您将创建一个网络边缘安全政策,配置自定义规则以仅允许来自给定来源 IP 地址范围的流量,并将该政策附加到后端服务。
网络边缘安全政策支持多个 Google Cloud Armor 过滤条件,包括字节偏移过滤等唯一过滤条件。如需详细了解网络边缘安全政策支持的功能,请参阅安全政策概览。此外,您还可以在预览模式下部署网络边缘安全政策。
在继续之前,您必须注册 Google Cloud Armor Enterprise 并配置高级网络 DDoS 攻击。如果您未订阅 Cloud Armor Enterprise 且未启用高级网络 DDoS 攻击防护,则无法为网络边缘安全政策使用自定义规则。
如需配置自定义规则,请按照以下步骤操作:
在区域
REGION
中创建一个名为POLICY_NAME
的新网络边缘安全政策。请勿使用启用高级网络 DDoS 攻击防护时所用的安全政策。gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR_NETWORK \ --region=REGION
将政策的默认规则从
allow
更改为deny
,以阻止其他规则未明确允许的流量。gcloud compute security-policies rules update 2147483647 \ --security-policy=POLICY_NAME \ --action=deny \ --region=REGION
在同一安全政策中,添加优先级为
RULE_PRIORITY
的规则,以允许来源 IP 地址范围RANGE
中的请求。gcloud compute security-policies rules create RULE_PRIORITY \ --security-policy=POLICY_NAME \ --network-src-ip-ranges=RANGE \ --action=allow \ --region=REGION
将该安全政策与后端服务
BACKEND_SERVICE_NAME
相关联。gcloud compute backend-services update BACKEND_SERVICE_NAME \ --security-policy=POLICY_NAME \ --region=REGION
或者,您也可以使用以下命令将安全政策与单个虚拟机实例相关联:
gcloud beta compute instances network-interfaces update VM_NAME \ --security-policy=POLICY_NAME \ --security-policy-region=REGION \ --network-interface=NETWORK_INTERFACE \ --zone=ZONE_NAME
可选:您可以使用以下命令验证安全政策是否已附加。如果成功,输出中的
securityPolicy
字段会包含指向安全政策资源的链接。gcloud compute instances describe VM_NAME --zone=ZONE_NAME
创建上述示例后,您可以继续使用 security-policies rules update
命令向网络边缘安全政策添加规则。网络边缘安全政策支持的字段如下:
字段 | 标志 | 说明 |
---|---|---|
来源 IP 地址 | --network-src-ip-ranges |
标准文本格式的来源 IPv4/6 地址或 CIDR 前缀。 |
来源端口 | --network-src-ports |
TCP/UDP/SCTP 的来源端口号。每个元素可以是(16 位)数字(例如“80”)或范围(例如“0-1023”)。 |
来源区域代码 | --network-src-region-codes |
双字母国家/地区代码 (ISO 3166-1 alpha-2)。 |
来源 ASN | --network-src-asns |
来源 IP 地址的 BGP 自治系统编号。 |
目标 IP 地址范围 | --network-dest-ip-ranges |
标准文本格式的目标 IPv4/6 地址或 CIDR 前缀。 |
目的地端口 | --network-dest-ports |
TCP/UDP/SCTP 的目标端口号。每个元素可以是一个(16 位)数字(例如“80”)或一个范围(例如“0-1023”)。 |
IP 地址协议 | --network-ip-protocols |
IPv4 协议 / IPv6 下一个标头(扩展标头后)。每个元素可以是 8 位数字(例如“6”)、范围(例如“253-254”),或以下协议名称之一:
|
字节偏移过滤 | 不适用 | 请参阅以下部分。 |
将 --network-src-region-codes
标志与网络边缘安全政策搭配使用时,您可以使用以下受美国全面制裁的地区的区域代码:
地区 | 分配的代码 |
---|---|
克里米亚 | XC |
所谓的顿涅茨克人民共和国 (DNR) 和 所谓的卢甘斯克人民共和国 (LNR) |
XD |
配置字节偏移过滤
如果您使用外部直通式网络负载均衡器、协议转发或具有公共 IP 地址的虚拟机,则 Google Cloud Armor 可对入站流量执行深度数据包检测。您可以配置与特定 TCP/UDP 字节偏移值匹配的安全政策规则。您可以将规则配置为在配置的值存在时应用规则操作,或者在配置的值不存在时应用规则操作。
以下示例在该值存在时允许流量,并拒绝所有其他流量:
创建一个新的网络边缘安全政策。如果您已有现有的网络边缘安全政策,则可以跳过此步骤。
gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR_NETWORK \ --region=REGION_NAME
使用以下参数更新网络边缘安全政策,以添加用户定义的字段:
- 基准:值可以是
IPv4
、IPv6
、TCP
或UDP
- 偏移:字段相对于基准的偏移(以字节为单位)
- Size:字段的大小(以字节为单位,最大值为
4
) - 掩码:要匹配的字段中的位掩码
每个政策最多可以使用八个用户定义的字段。在以下示例中,您将创建两个用户定义的字段。
gcloud compute security-policies add-user-defined-field POLICY_NAME \ --user-defined-field-name=USER_DEFINED_FIELD_NAME_TCP \ --base=TCP \ --offset=OFFSET \ --size=SIZE \ --mask=MASK \ --region=REGION_NAME
gcloud compute security-policies add-user-defined-field POLICY_NAME \ --user-defined-field-name=USER_DEFINED_FIELD_NAME_UDP \ --base=UDP \ --offset=OFFSET \ --size=SIZE \ --mask=MASK \ --region=REGION_NAME
- 基准:值可以是
在网络边缘安全政策中,添加与上一示例中使用的自定义字段名称相同的规则。将
VALUE1
和VALUE2
替换为与您要允许的流量匹配的值。gcloud compute security-policies rules create RULE_PRIORITY \ --security-policy=POLICY_NAME \ --network-user-defined-fields="USER_DEFINED_FIELD_NAME_TCP;VALUE1:VALUE2,USER_DEFINED_FIELD_NAME_UDP;VALUE1:VALUE2,USER_DEFINED_FIELD_NAME_UDP;VALUE1,VALUE2" \ --action=allow \ --region=REGION_NAME
将网络边缘安全政策中的默认规则设为拒绝规则。如果您的安全政策中的默认规则已经是拒绝规则,则可以跳过此步骤。
gcloud compute security-policies rules update 2147483647 \ --security-policy=POLICY_NAME \ --action=deny \ --region=REGION_NAME
将网络边缘安全政策与外部直通式网络负载均衡器的后端服务相关联。
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --security-policy=POLICY_NAME \ --region=REGION_NAME
监控
Google Cloud Armor 会针对您的每个网络边缘安全政策规则,将以下指标导出到 Cloud Monitoring:
packet_count
Blocked
:一个布尔值,表示allow
或deny
规则操作的结果Count
:每 10,000 个数据包递增一次packet_count
的值;例如,packet_count
值为5
表示至少有 50,000 个数据包与您的规则匹配
preview_packet_count
:与packet_count
相同,适用于预览模式下的规则
如需查看网络边缘安全政策的指标,您必须先启用 Network Security API (networksecurity.googleapis.com
)。Compute Security Admin 角色 (roles/compute.securityAdmin
) 可提供此权限。启用 Network Security API 后,您可以在 Google Cloud 控制台的 Monitoring 中查看该指标。