用户 IP 地址概览

根据 IP 地址进行过滤的 Google Cloud Armor 安全政策规则通常使用调用者的客户端 IP。如果您的服务位于中介(例如第三方内容分发网络 [CDN])后面,则 origin.ip 字段中的客户端 IP 是最后一个中介的 IP 地址,而不是原始客户端的 IP 地址。

借助用户 IP 功能,您可以配置备用字段 origin.user_ip,以从上游提供商填充的标头中解析。然后,您可以使用安全政策规则中的 origin.user_ip 字段来指定这些功能中使用的 IP 地址。使用 origin.user_ip 时,您可以在安全政策的 advancedOptionsConfig 字段中配置 userIpRequestHeaders[] 选项。

用户 IP 地址的工作原理

您可以配置 Cloud Armor 以从特定请求标头中提取最终用户的 IP 地址。此值会填充 origin.user_ip 字段,然后您可以在安全政策规则中使用该字段。

如果 userIpRequestHeaders[] 中指定的标头不存在,或者其值不是有效的 IP 地址,则 Cloud Armor 会回退到客户端 IP 地址 (origin.ip)。以下示例显示了默认情况下的直接比较。

origin.ip != origin.user_ip

以下示例展示了如何在规则语言中、与 Google Threat Intelligence 一起,以及在地址组中使用 origin.user_ip

inIpRange

inIpRange(origin.user_ip, '9.9.9.0/24')

如需详细了解如何将 inIpRangeorigin.user_ip 搭配使用,请参阅属性

Google Threat Intelligence

evaluateThreatIntelligence('iplist-known-malicious-ips', origin.user_ip)

如需了解详情,请参阅应用 Google Threat Intelligence

地址组

evaluateAddressGroup('example-address-group', origin.user_ip)

如需了解详情,请参阅配置地址组

组织级地址组

evaluateOrganizationAddressGroup('example-org-address-group', origin.user_ip)

如需了解详情,请参阅使用组织级地址组

最佳做法

由于 origin.user_ip 是从请求标头解析的,而不可信的客户端可以操纵请求标头,因此您必须验证流量来自可信的上游来源。

如需验证上游来源,请创建至少包含两条规则的安全政策。第一条规则的优先级较高,它检查直接客户端 IP (origin.ip) 是否属于您的可信上游提供商。第二条规则的优先级较低,它使用 origin.user_ip 字段应用您的预期逻辑。

例如,您可以创建包含以下两条规则的政策:

  • 规则 1:evaluateThreatIntelligence('iplist-public-clouds', origin.ip)
  • 规则 2:inIpRange(origin.user_ip, '9.9.9.0/24')

后续步骤