2

次の設定で GKE アプリケーションを使用しています。

  • フロントアプリの動作example.com
  • バックエンドアプリが動作api.example.com

Ingress を介してこれらの負荷を公開すると、すべてがクールに見えます。Cloud Armor でアプリケーションを保護したい。サービスにアノテーションを追加しapiました。ポリシーに「すべての IP を拒否する」ルールが 1 つしかない場合、バックエンド エンドポイントに到達できず、ルールを「すべての 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ルールが機能しないことを意味します。

また、reCaptcha キーは、ドキュメントに従ってGoogle に電子メールで送信することで有効になっています。

4

1 に答える 1

2

デフォルトのルールに該当する HTTP メソッドは OPTIONS です。OPTIONS メソッドは CORS でよく使用されるため、通常はこれらのリクエストを通過させます。

request.method == 'OPTIONS'に基づいて HTTP メソッド OPTIONS を許可するルールを追加します。

または、既存のルールを変更して、メソッドが GET、PUT、POST であるかどうかのみを確認します (reCaptcha を検証するために必要なメソッドを指定します)。

Cloud Armor ルールの属性

于 2021-12-21T18:02:54.537 に答える