本文档介绍了如何使用通用密钥在网站上配置政策引擎。通用密钥是一种新的 Google Cloud Fraud Defense 密钥,支持在 Policy Engine 中创建规则。
借助 Policy Engine,Fraud Defense 可以根据您配置的自定义政策规则确定性地触发 CAPTCHA 验证。这些规则可能会根据风险得分、IP 地址、用户代理、ASN 或经过验证的机器人(AI 代理)身份来决定何时显示欺诈防御质询。
Fraud Defense 政策引擎配置提供两项主要功能:
- AutoExecute 集成 (
protected_endpoint_group):通过自动检查传出的异步网络请求并将 reCAPTCHA 令牌附加到这些请求,简化了前端 JavaScript 集成,因此您只需在前端添加一个脚本标记。 - 质询政策 (
challenge_rule_groups):确定是否针对不同的用户操作显示质询,并使用基于自定义 CEL 的规则配置关联的质询难度级别(USABILITY、BALANCE、SECURITY)。
准备工作
验证是否已为您的 Google Cloud 项目启用结算功能。
Fraud Defense 要求在项目上关联并启用结算功能才能使用 Policy Engine。您可以使用信用卡或现有的 Google Cloud 项目结算 ID 来启用结算功能。如果您需要结算方面的帮助,请与 Cloud Billing 支持团队联系。
创建通用密钥
根据您的首选界面,选择相应选项来创建通用密钥:
控制台
在 Google Cloud 控制台中,前往 reCAPTCHA 页面。
验证项目名称是否显示在页面顶部的项目选择器中。
如果您没有看到项目名称,请点击资源选择器,然后选择您的项目。
- 选择密钥标签页。
- 点击创建密钥。
- 在显示名字段中,输入密钥的显示名。
- 对于应用类型,选择通用。
- 点击创建密钥。
新创建的密钥会列在 reCAPTCHA 密钥页面上。
gcloud
如需使用 Google Cloud CLI 创建通用密钥,请使用带有 --universal 标志的 gcloud recaptcha keys create 命令:
gcloud recaptcha keys create --universal --display-name=DISPLAY_NAME
响应包含新创建的 reCAPTCHA 通用密钥。
REST API
如需使用 REST API 创建通用密钥,请使用 projects.keys.create 方法并指定 universalSettings:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
{
"displayName": "DISPLAY_NAME",
"universalSettings": {}
}
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目 IDDISPLAY_NAME:密钥的显示名,通常是您的网站名称
响应包含新创建的 reCAPTCHA 通用密钥。
为政策引擎配置网域
根据您的首选界面,选择相应的选项来为您的通用密钥配置允许的网域:
控制台
在 Google Cloud 控制台中,前往Fraud Defense页面。
检查项目名称是否显示在页面顶部的资源选择器中。
如果您没有看到项目名称,请点击资源选择器,然后选择您的项目。
点击 reCAPTCHA 密钥标签页。
找到要配置的通用密钥,然后点击该密钥。
在密钥详情页面上,点击修改密钥。
找到密钥使用情况设置部分。
为了保护您的网域和子网域的 reCAPTCHA 密钥,请确保关闭停用域名验证切换开关。
停用域名验证是一项安全风险,因为网站不受限制,因此任何人都可以访问和使用 reCAPTCHA 密钥。
输入您的网站的域名:
- 在网域列表部分中,点击添加网域。
- 在网域字段中,输入您的域名。
- 可选:如需添加其他网域,请点击添加网域,然后在网域字段中输入其他网域的名称。您最多可以添加 250 个网域。
点击保存更改。
gcloud
如需使用 Google Cloud CLI 更新通用密钥的允许网域,请使用 gcloud alpha recaptcha policies update 命令,并在政策配置文件(例如 POLICY.yaml)中指定网域:
gcloud alpha recaptcha policies update --key=KEY_ID --policy=POLICY.yaml
POLICY.yaml 文件必须在 clientSettings 下指定允许的网域:
clientSettings:
allowedDomains:
- DOMAIN_NAME_1
- DOMAIN_NAME_2
或者,如需允许所有网域并停用域名验证,请在 POLICY.yaml 文件中将 allowAllDomains 设置为 true:
clientSettings:
allowAllDomains: true
替换以下内容:
KEY_ID:您的通用密钥的 ID 或完整资源名称DOMAIN_NAME_1、DOMAIN_NAME_2:获准使用该密钥的网站的域名
REST API
如需使用 REST API 更新通用密钥的允许网域,请使用 projects.keys.updatePolicy 方法。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- KEY_ID:您的通用密钥的 ID
- DOMAIN_NAME_1、DOMAIN_NAME_2:获准使用该密钥的网站的域名
HTTP 方法和网址:
PATCH https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys/KEY_ID/policy?updateMask=clientSettings.allowedDomains,clientSettings.allowAllDomains
请求 JSON 正文:
{
"clientSettings": {
"allowedDomains": [
"DOMAIN_NAME_1",
"DOMAIN_NAME_2"
],
"allowAllDomains": false
}
}
如需发送您的请求,请展开以下选项之一:
如果请求成功,则返回更新后的政策配置。