2

我在以下设置中有 GKE 应用程序:

  • 前端应用程序适用于example.com
  • 后端应用程序适用于api.example.com

我通过 Ingress 暴露这些负载,一切看起来都很酷。我想用 Cloud Armor 保护应用程序。我在服务中添加了注释api。我可以确认,如果策略只有一个规则“拒绝所有 IP”,我无法到达后端端点,如果我将规则更改为“允许所有 IP”,我可以。所以 GCA 本身工作正常。

我试图连接 reCaptcha Enterprise 并用 Google Cloud Armor 解释它的分数,但我无法让它工作。我创建了以下规则,但我添加的任何值token.recaptcha.score似乎都没有被解释。

规则

因此,在给出的示例中,即使我将规则设置得非常小,例如“> 0.1”,我也将始终被阻止。前端发送X-Recaptcha-Token到后端,所以看起来我做的一切都是正确的。

我唯一不确定的是是否正确定义了此允许规则。GCP Logging 显示该策略已应用,但我不知道具体是哪条规则:

{
  "insertId": "uxxxv",
  "jsonPayload": {
    "enforcedSecurityPolicy": {
      "outcome": "DENY",
      "configuredAction": "DENY",
      "priority": 2147483647,
      "name": "login-security-policy"
    },
    "@type": "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry",
    "statusDetails": "denied_by_security_policy"
  },
  "httpRequest": {
    "requestMethod": "OPTIONS",
    "requestUrl": "https://api.example.com/v1/graphs?pageSize=10&orderBy=created_at%20desc&key=AXXXXXXE",
    "requestSize": "330",
    "status": 403,
    "responseSize": "228",
    "userAgent": "XXX",
    "remoteIp": "XX.XX.XX.XX",
    "referer": "https://example.com/",
    "latency": "0.220009s"
  },
  "resource": {
    "type": "http_load_balancer",
    "labels": {
      "zone": "global",
      "target_proxy_name": "k8s2-ts-dxxxd-default-main-ixxxq",
      "backend_service_name": "k8s-be-3xxx9--9xxx9",
      "forwarding_rule_name": "k8s2-fs-dxxxd-default-main-ixxxq",
      "project_id": "xxx",
      "url_map_name": "k8s2-um-dxxxd-default-main-ixxxq"
    }
  },
  "timestamp": "2021-12-21T12:22:28.505728Z",
  "severity": "WARNING",
  "logName": "projects/xxx/logs/requests",
  "trace": "projects/xxx/traces/bxxx4",
  "receiveTimestamp": "2021-12-21T12:22:28.925285233Z",
  "spanId": "cxxx4"
}

我只是假设该字段jsonPayload.enforcedSecurityPolicy.priority指向默认规则,这意味着该Allow规则不起作用。

根据文档,还通过电子邮件向 Google 启用了 reCaptcha 密钥。

4

1 回答 1

2

符合默认规则的 HTTP 方法是 OPTIONS。CORS 经常使用 OPTIONS 方法,因此您通常希望这些请求能够通过。

添加一个允许基于request.method == 'OPTIONS' 的HTTP 方法 OPTIONS 的规则。

或者将现有规则修改为仅检查方法是否为 GET、PUT、POST(指定验证 reCaptcha 所需的方法)。

云盔甲规则属性

于 2021-12-21T18:02:54.537 回答