Google Cloud Armor 机器人管理概览

Google Cloud Armor 和 reCAPTCHA 提供了一些工具,可帮助您评估可能来自自动化客户端的传入请求并采取相应措施。

reCAPTCHA 使用高级风险分析技术来区分真人用户和自动客户端。reCAPTCHA 根据 reCAPTCHA WAF 网站密钥的配置评估用户。然后,它会颁发一个加密令牌,其中包含表示相关风险的特性。Google Cloud Armor 会以内嵌方式解密此令牌,而无需向 reCAPTCHA 服务发送额外请求或响应。根据令牌特性,Google Cloud Armor 使您可以允许、拒绝、重定向传入请求或限制传入请求速率。如需了解详情,请参阅 Google Cloud Armor 和 reCAPTCHA 集成概览

Google Cloud Armor 的机器人管理包括以下集成功能。

  • 手动验证(reCAPTCHA 验证页面)

    • 您必须配置安全政策规则来重定向 reCAPTCHA 评估请求。
    • 您可以创建自己的 reCAPTCHA WAF 网站密钥,并将其与您的安全政策相关联。我们强烈建议您执行此操作。 如需了解详情,请参阅实现 reCAPTCHA 验证
    • 通过重定向最终用户以进行 reCAPTCHA 评估,您可以仅允许通过 reCAPTCHA 手动验证的最终用户。
  • 强制执行 reCAPTCHA 顺畅评估

    • 根据 reCAPTCHA 对来自聊天机器人的请求风险的评估,您可以对传入的请求采取不同的操作。您可以编写安全政策规则,以根据令牌得分和其他令牌特性评估和过滤流量。
    • 您必须实现 reCAPTCHA 操作令牌和/或会话令牌。在网站、iOS 和 Android 上运行的应用支持 reCAPTCHA 操作令牌,只有网站支持 reCAPTCHA 会话令牌。如需详细了解 reCAPTCHA 令牌,请参阅 reCAPTCHA 操作令牌reCAPTCHA 会话令牌
    • 您必须配置用于评估 reCAPTCHA 令牌的安全政策规则。
    • 为防止令牌盗用,我们建议您将自己用于 WAF 的 reCAPTCHA 密钥与您的安全政策规则相关联。

Google Cloud Armor 机器人管理还包含以下功能。

  • 重定向 (302)
    • 您可以将 Google Cloud Armor 配置为向客户端发送 HTTP 302 响应,从而将请求重定向到配置的备用网址。
  • 修饰请求
    • 您可以在请求中插入自定义标头并将静态值插入这些标头中,然后再通过代理将请求发送到后端。

使用场景

本部分介绍如何使用 Google Cloud Armor 机器人管理功能来降低机器人风险并控制来自自动化客户端的访问。

使用手动验证来区分合法用户和自动化客户端

您可以将请求重定向到 reCAPTCHA 以评估最终客户端并根据需要处理手动验证,而无需任何其他 reCAPTCHA 实现。当真人用户与机器人或滥用系统共用相同的签名(例如网址路径或其他 L7 签名)时,此操作可为他们提供证明自己是真人的方法。只有通过评估的用户才能访问您的服务。

下图展示了手动验证如何区分请求是来自真人还是自动化客户端:

重定向到 reCAPTCHA 的示例。
重定向到 reCAPTCHA 的示例(点击可放大)。

假设用户 Maya 和机器人都在浏览您网站上的登录页面 (/login.html)。如需允许 Maya 访问同时不向机器人授予访问权限,您可以使用高级匹配表达式 request.path.matches("/login.html") 和类型为 GOOGLE_RECAPTCHAredirect 操作配置安全政策规则。端到端用户体验如下:

  1. 最终用户首次访问您的网站。
  2. Google Cloud Armor 评估请求,并确定将其重定向到 reCAPTCHA。
  3. reCAPTCHA 会返回一个嵌入了 reCAPTCHA JavaScript 的 HTML 页面。
  4. 呈现响应后,嵌入的 JavaScript 会运行以评估用户,并在必要时提供手动验证。
    • 如果用户通过了评估,reCAPTCHA 将签发一个豁免 Cookie,该 Cookie 由浏览器自动附加到发送到同一网站的每个后续请求,直到该 Cookie 过期。
    • 否则,reCAPTCHA 不会发出豁免 Cookie。

在此示例中,只有 Maya 通过了 reCAPTCHA 评估并收到豁免 Cookie,从而获得对您网站的访问权限。

使用手动验证时,建议您创建自己的 reCAPTCHA WAF 网站密钥,并将其与安全政策关联。这样,您就可以查看与网站密钥关联的 reCAPTCHA 指标,并训练网站密钥专用的安全模型。如需了解详情,请参阅创建 reCAPTCHA WAF 验证网站密钥

如果您未创建并关联网站密钥,reCAPTCHA 会在评估期间使用 Google 管理的网站密钥。您无法查看与您不拥有的网站密钥(包括 Google 管理的网站密钥)关联的 reCAPTCHA 指标。

强制执行 reCAPTCHA 评估

当传入请求附加有 reCAPTCHA 令牌时,Google Cloud Armor 会评估请求,并根据令牌中的各个属性应用配置的操作。Google Cloud Armor 安全政策评估在 Google 的网络边缘进行,因此您的后端不参与令牌解密。

reCAPTCHA 令牌

reCAPTCHA 会签发两种类型的令牌:操作令牌和会话令牌。这两种类型的令牌都会根据与您的网站或应用的互动情况返回每个请求的得分。这两种类型的令牌都包含一些属性,其中包括表示与用户关联的风险的分数。还包含您在生成令牌时使用的 reCAPTCHA 密钥的相关信息。

在配置安全政策规则之前,您必须决定是使用操作令牌、会话令牌还是同时使用两者。我们建议您阅读 reCAPTCHA 文档,以便做出明智的决定。如需了解详情,请参阅 reCAPTCHA 用例比较

确定要使用哪种类型的令牌后,您可以对要附加到请求的令牌实现 reCAPTCHA。如需了解如何在 reCAPTCHA 中实现令牌,请参阅以下页面:

最后,使用 Google Cloud Armor 规则语言配置安全政策规则,以评估请求附带的 reCAPTCHA 令牌。为防止令牌被盗,我们强烈建议您将 reCAPTCHA 密钥与安全政策规则相关联。将 reCAPTCHA 密钥与安全政策规则相关联时,Google Cloud Armor 会将令牌中的 reCAPTCHA 密钥与规则关联的 reCAPTCHA 密钥进行比较,从而对令牌执行额外的验证。Google Cloud Armor 将 reCAPTCHA 密钥未知的令牌视为无效。如需了解详情,请参阅强制执行 reCAPTCHA 顺畅评估

下图演示了 reCAPTCHA 令牌强制执行流程。

reCAPTCHA 令牌强制执行流程。
reCAPTCHA 令牌强制执行流程(点击可放大)。

重定向(302 响应)

您可以使用基于网址的重定向操作在外部将请求重定向到其他端点。您需要以网址的形式提供重定向目标,Google Cloud Armor 通过向客户端发送 HTTP 302 响应来重定向请求。

修饰请求

在将请求通过代理发送到应用之前,Google Cloud Armor 可以插入具有静态用户定义值的自定义请求标头。借助此选项,您可以标记可疑请求以进行其他下游处理(例如发送“蜜罐”),或进行其他分析和监控。请注意,必须将此操作参数添加到现有 allow 操作。

自定义标头

如果您已将 Google Cloud Armor 配置为插入与全球外部应用负载均衡器或传统版应用负载均衡器的自定义标头之一相同的自定义标头或值,则标头值为被负载均衡器覆盖。如需了解详情,请参阅在后端服务中创建自定义标头

此外,如果您选择请求中已存在的标头名称(包括标准 HTTP 标头),则该标头中的原始值将被提供给 Google Cloud Armor 规则的用户定义值覆盖。

与速率限制集成

Google Cloud Armor 速率限制规则与机器人管理功能兼容。例如,您可以将 reCAPTCHA 评估请求重定向,或者在请求数超过配置的阈值时重定向到其他网址。此外,您还可以根据 reCAPTCHA 豁免 Cookie 或令牌确定要进行速率限制的客户端,以限制请求或禁止以超出用户配置的阈值的频率重复使用或滥用同一 Cookie 或令牌的客户端。

速率限制 reCAPTCHA 豁免 Cookie 或令牌

为提高安全性,我们建议您配置速率限制规则,以防止令牌滥用,即多次使用每个唯一的 reCAPTCHA 操作令牌、会话令牌或豁免 Cookie。下表说明了如何在速率限制规则中将 reCAPTCHA 豁免 Cookie 或令牌标识为密钥。

资源 enforce_on_key enforce_on_key_name
豁免 Cookie HTTP-COOKIE recaptcha-ca-e
操作令牌 HTTP-HEADER X-Recaptcha-Token
会话令牌 HTTP-COOKIE recaptcha-ca-t

您可以对请求限流,或禁止依赖于相同豁免 Cookie 或令牌的客户端,或禁止超出配置的阈值的客户端。如需详细了解速率限制参数,请参阅应用速率限制

速率限制示例

首先,假设您只对网站上的选定网址(例如 /login.html)使用手动验证。为此,请按如下所示配置安全政策规则:

  • 规则 1:如果请求附加了有效的豁免 Cookie,并且豁免 Cookie 的使用次数低于您定义的阈值,则允许该请求。
  • 规则 2:重定向 reCAPTCHA 评估请求。
强制执行手动验证。
强制执行手动验证(点击可放大)。

其次,假设您仅在网站上使用操作令牌或会话令牌。例如,您可以使用操作令牌来保护重要的用户操作,例如 /login.html。为此,请根据操作令牌中的分数执行操作,如下所示:

  • 规则 1:当操作令牌中的分数高于预定义阈值(例如 0.8)时,如果操作令牌的使用次数低于您定义的阈值,则允许请求。
  • 规则 2:拒绝请求。
强制执行 reCAPTCHA 操作令牌评估。
强制执行 reCAPTCHA 操作令牌评估(点击可放大)。

您可以配置类似的安全政策规则,以强制执行 reCAPTCHA 会话令牌评估。

第三,假设您将操作令牌或会话令牌与网站上所选网址(如 /login.html)的手动验证相结合,并且您希望根据操作令牌中的分数来执行操作。此外,如果分数不够满意,您希望通过回答验证问题再给客户提供一次机会。为此,请按如下所示配置安全政策规则:

  • 规则 1:当操作令牌中的分数高于预定义阈值(例如 0.8)时,如果操作令牌的使用次数低于您定义的阈值,则允许请求。
  • 规则 2 和 3:当来自操作令牌的得分高于其他预定义阈值(例如 0.5)时,除非为请求附加了有效的豁免 Cookie,并且豁免 Cookie 的使用次数低于您定义的阈值,否则应重定向 reCAPTCHA 评估请求。
  • 规则 4:拒绝请求。
通过手动验证方式强制执行 reCAPTCHA 操作令牌评估。
通过手动验证方式强制执行 reCAPTCHA 操作令牌评估(点击可放大)。

您可以配置类似的安全政策规则,以通过手动验证强制执行 reCAPTCHA 会话令牌评估。

如果您不调整速率限制规则,Google Cloud Armor 不会对每个 reCAPTCHA 豁免 Cookie、操作令牌和会话令牌的使用次数施加限制。对于操作令牌,我们建议使用低阈值(例如 1)和高时间间隔(例如 30 分钟,因为操作令牌的有效时间为 30 分钟)。我们建议您根据流量统计信息确定阈值。

后续步骤