WAF Express 保護用 reCAPTCHA Enterprise を設定する

このドキュメントでは、reCAPTCHA JavaScript(ウェブ)またはネイティブ モバイル(iOS または Android)SDK を統合せずに、アプリケーション サーバーで WAF Express 保護用 reCAPTCHA Enterprise(reCAPTCHA WAF express)を設定する方法について説明します。

reCAPTCHA WAF Express は、バックエンド シグナルのみを使用して reCAPTCHA リスクスコアを生成します。このリスクスコアを使用して、リクエストを処理する、チャレンジ ページにリダイレクトする、後で分析するためにログに記録するかどうかを決定できます。

始める前に

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

    後で使用できるように、Google Cloud プロジェクト ID を記録します。

  2. Google Cloud プロジェクトで課金が有効になっていることを確認します

  3. reCAPTCHA Enterprise API を有効にします。

    API を有効にする

  4. 認証用の API キーを作成します。

    1. Google Cloud コンソールで、[認証情報] ページに移動します。

      [認証情報] に移動

    2. [認証情報を作成] をクリックし、[API キー] を選択します。

    3. 後で使用できるように、API キーを記録します。

reCAPTCHA WAF express キーを作成する

WAF Express 保護用 reCAPTCHA Enterprise を実装するには、reCAPTCHA WAF express キーを作成します。

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. gcloud

    reCAPTCHA キーを作成するには、gcloud recaptcha keys create コマンドを使用します。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • DISPLAY_NAME: キーの名前。通常はサイトの名前です。
    • INTEGRATION_TYPE: 統合の種類 score を実行します。
    • DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。--allow-all-domains を実行します。
    • WAF_FEATURE: WAF 機能の名前。 express を実行します。
    • WAF_SERVICE: WAF サービス プロバイダの名前。

    gcloud recaptcha keys create コマンドを実行します。

    Linux、macOS、Cloud Shell

    
    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE
    
    

    Windows(PowerShell)

    
    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE
    
    

    Windows(cmd.exe)

    
    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE
    
    

    レスポンスには、新しく作成された reCAPTCHA キーが含まれます。

    REST

    キーの種類と統合タイプに関する API リファレンス情報については、統合タイプをご覧ください。

    リクエストのデータを使用する前に、次のように置き換えます。

    • DISPLAY_NAME: キーの名前。通常はサイトの名前です。
    • INTEGRATION_TYPE: 統合の種類 score を実行します。
    • DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。--allow-all-domains を実行します。
    • WAF_FEATURE: WAF 機能の名前。 express を実行します。
    • WAF_SERVICE: WAF サービス プロバイダの名前。

    HTTP メソッドと URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    リクエストの本文(JSON):

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
    }
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    次のような JSON レスポンスが返されます。

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    },
    "wafSettings": {
      "wafService": "",
      "wafFeature": "EXPRESS"
    
    }
    }
    
    

後で使用するために、express キーを記録します。

評価の作成

アプリケーション サーバーから reCAPTCHA Enterprise にリクエストを行うには、projects.assessments.create メソッドを使用して評価を作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • API_KEY: 認証用に作成した API キー。
  • EXPRESS_KEY: アプリケーション用に作成した reCAPTCHA WAF express キー。
  • USER_IP_ADDRESS: このイベントに関連する、ユーザーのデバイスからのリクエストに含まれる IP アドレス。
  • HEADER_INFO: 省略可。クライアントがアプリケーション サーバーに送信した HTTP ヘッダー。
  • JA3_FINGERPRINT: 省略可。JA3 は、TLS クライアントの hello パケットの特定のフィールドの MD5 フィンガープリントです。詳細については、JA3 - SSL/TLS クライアントをプロファイリングする方法をご覧ください。
  • URI_NAME: 省略可。ユーザーによってアクセスされている URI。
  • USER_AGENT: 省略可。このイベントに関連するユーザーのデバイスからのリクエストに存在するユーザー エージェント。

HTTP メソッドと URL:

POST https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY

リクエストの本文(JSON):


{
  "event": {
    "siteKey": "EXPRESS_KEY",
    "express": true,
    "userIpAddress": "USER_IP_ADDRESS",
    "headers": ["HEADER_INFO"],
    "ja3": "JA3_FINGERPRINT",
    "requestedUri": "URI_NAME",
    "userAgent": "USER_AGENT",
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/123456789/assessments/abcdef1234000000",
  "event": {
    "token": "",
    "siteKey": "6L...",
    "userAgent": "Mozilla/5.0 (X11; CrOS x86_64 13816.55.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.86 Safari/537.36",
    "userIpAddress": "1.2.3.4",
    "express": true,
    "requestedUri": "https://example.com/",
    "firewallPolicyEvaluation": false
  },
  "riskAnalysis": {
    "score": 0.7,
    "reasons": []
  }
}

次のステップ