このドキュメントでは、WAF 用 reCAPTCHA と Akamai を統合する方法について説明します。
統合を完了するには、WAF 用 reCAPTCHA の 1 つ以上の機能を実装し、reCAPTCHA ファイアウォール ポリシーを作成し、Akamai EdgeWorkers サービスを作成して構成することで Akamai と統合する必要があります。
始める前に
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
後で使用できるように、Google Cloud プロジェクト ID を記録します。Make sure that billing is enabled for your Google Cloud project.
Enable the reCAPTCHA Enterprise API.
認証用の API キーを作成します。
Google Cloud コンソールで、[認証情報] ページに移動します。 - [認証情報を作成] をクリックし、[API キー] を選択します。
- 後で使用できるように、API キーを記録します。
ウェブサイトを保護するために WAF 用 reCAPTCHA の機能を実装する方法を計画します。
- ユースケースに最も適した WAF 機能を 1 つ以上選択します。
- 保護するページを指定します。
- 特定したページに実装する WAF 機能のタイプを選択します。
- ユーザーのアクセスを管理する条件を特定します。
- reCAPTCHA ファイアウォール ポリシーの作成に役立つ reCAPTCHA ファイアウォール ポリシーのコンポーネントとその属性を確認します。例については、reCAPTCHA ファイアウォール ポリシーの例をご覧ください。
Akamai 構成の場合は、以下があることを確認してください。
Akamai アカウントと、アプリケーションの Akamai プロパティ。
Akamai Marketplace から Akamai EdgeWorkers へのアクセス権。
EdgeWorker を作成する機能。
Akamai の reCAPTCHA パッケージ
recaptcha_akamai_client_0.0.2.tgz
をダウンロードします。
WAF 用 reCAPTCHA の機能を実装する
要件に応じて、1 つのアプリケーションで WAF 用 reCAPTCHA の 1 つ以上の機能を使用できます。
1 つ以上の機能を使用する場合は、これらの機能ごとに reCAPTCHA キーを作成し、アプリケーションで使用する必要があります。たとえば、reCAPTCHA アクション トークンと reCAPTCHA による確認ページを使用する場合は、アクション トークンキーと確認ページキーを作成してアプリケーションで使用する必要があります。
アクション トークン
アクション トークンを生成するには、reCAPTCHA をウェブページで実行する必要があります。checkout
などのユーザー アクションを保護する必要がある場合、reCAPTCHA がアクション トークンを生成したら、事前定義されたリクエスト ヘッダーにアクション トークンを添付します。デフォルトでは、アクション トークンは 30 分間有効ですが、トラフィックによって異なる場合があります。Akamai がトークン属性を評価できるように、トークンが期限切れになる前にアクション トークンを事前定義されたリクエスト ヘッダーに添付する必要があります。
reCAPTCHA アクション トークンを実装するには、次の手順を実行します。
ウェブサイトのアクション トークンキーを作成します。
gcloud
reCAPTCHA キーを作成するには、gcloud recaptcha keys create コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- DISPLAY_NAME: キーの名前。通常はサイトの名前です。
- INTEGRATION_TYPE: 統合の種類
score
またはcheckbox
を指定します。 - DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。
複数のドメインをカンマ区切りのリストとして指定します。 省略可:
--allow-all-domains
を指定して、ドメインの所有権の証明を無効にします。サイトの制限はないため、ドメインの所有権の証明の無効化はセキュリティ リスクとなります。したがって、reCAPTCHA キーは誰でもアクセスして使用できます。
- WAF_FEATURE: WAF 機能の名前。
action-token
を実行します。 - WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
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
またはcheckbox
を指定します。 - DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。
複数のドメインをカンマ区切りのリストとして指定します。 省略可:
--allow-all-domains
を指定して、ドメインの所有権の証明を無効にします。サイトの制限はないため、ドメインの所有権の証明の無効化はセキュリティ リスクとなります。したがって、reCAPTCHA キーは誰でもアクセスして使用できます。
- WAF_FEATURE: WAF 機能の名前。
action-token
を実行します。 - WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
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": "akamai", "wafFeature": "ACTION_TOKEN" } }
後で使用するために、アクション トークン サイトキーを記録します。
-
ウェブページの reCAPTCHA JavaScript を、作成したアクション トークン キーと統合します。手順については、アクション トークンキーの統合タイプに対応するドキュメントをご覧ください。
SCORE
統合タイプについては、スコアベースのキーをフロントエンドに統合するをご覧ください。CHECKBOX
統合タイプについては、フロントエンドで reCAPTCHA ウィジェットをレンダリングするをご覧ください。
- reCAPTCHA からトークンを受信したら、次の形式の事前定義されたリクエスト ヘッダーにトークンを添付します。
X-Recaptcha-Token: value-of-your-action-token
XHR、Ajax、Fetch API などの言語および Fetch API を使用して、事前定義されたリクエスト ヘッダーにトークンを添付できます。
次のサンプル スクリプトでは、JavaScript と XHR を使用して、
execute
アクションを保護し、事前定義されたリクエスト ヘッダーにトークンを添付する方法を示します。<script> src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_KEY"></script> <script> function onSuccess(action_token) { const xhr = new XMLHttpRequest(); xhr.open('GET','YOUR_URL', false); // Attach the action-token to the predefined request header xhr.setRequestHeader("X-Recaptcha-Token", action_token); xhr.send(null); } function onError(reason) { alert('Response promise rejected: ' + reason); grecaptcha.enterprise.ready(function () { document.getElementById("execute-button").onclick = () => { grecaptcha.enterprise.execute('ACTION_TOKEN_KEY', { }).then(onSuccess, onError); }; }); } </script>
セッション トークン
reCAPTCHA JavaScript は、評価後に reCAPTCHA セッション トークンをエンドユーザーのブラウザの Cookie として設定します。エンドユーザーのブラウザには Cookie が添付され、reCAPTCHA JavaScript がアクティブである限り、その Cookie は更新されます。
セッション トークンを Cookie として提供するには、保護の必要なページの前にエンドユーザーが閲覧するウェブページの少なくとも 1 つにセッション トークン キーをインストールします。たとえば、購入手続きページを保護するには、セッション トークン キーをホームページまたは商品ページにインストールします。
ウェブページにセッション トークン キーをインストールする方法については、スコアベースのキーをフロントエンドに統合するをご覧ください。
この Cookie を使用すると、エンドユーザーの後続のリクエストや特定のドメインでのページの読み込みを保護できます。セッション トークンはデフォルトで 30 分間有効です。ただし、エンドユーザーがセッション トークンを実装したページにとどまる場合、reCAPTCHA はセッション トークンを定期的に更新して期限切れにならないようにします。
reCAPTCHA で保護する必要がある各ページにセッション トークンをインストールします。すべてのページを reCAPTCHA で保護し、Google Cloud Armor ルールを使用して、エンドユーザーがブラウジングする最初のページを除くすべてのページへのアクセスを適用することをおすすめします。
reCAPTCHA セッション トークンの例を次に示します。recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time
reCAPTCHA セッション トークンを実装するには、次の手順を行います。
- ウェブサイトのセッション トークンキーを作成します。
gcloud
reCAPTCHA キーを作成するには、gcloud recaptcha keys create コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- DISPLAY_NAME: キーの名前。通常はサイトの名前です。
- INTEGRATION_TYPE: 統合の種類
score
を実行します。 - DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。
複数のドメインをカンマ区切りのリストとして指定します。 省略可:
--allow-all-domains
を指定して、ドメインの所有権の証明を無効にします。サイトの制限はないため、ドメインの所有権の証明の無効化はセキュリティ リスクとなります。したがって、reCAPTCHA キーは誰でもアクセスして使用できます。
- WAF_FEATURE: WAF 機能の名前。
session-token
を実行します。 - WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
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
を指定して、ドメインの所有権の証明を無効にします。サイトの制限はないため、ドメインの所有権の証明の無効化はセキュリティ リスクとなります。したがって、reCAPTCHA キーは誰でもアクセスして使用できます。
- WAF_FEATURE: WAF 機能の名前。
session-token
を実行します。 - WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
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": "akamai", "wafFeature": "SESSION_TOKEN" } }
後で使用できるように、セッション トークン キーを記録します。
Akamai から reCAPTCHA JavaScript を挿入する場合は、次の手順をスキップして、Akamai Property Manager でプロパティを構成します。
-
セッション トークン キーと
waf=session
を reCAPTCHA JavaScript に追加します。次のサンプル スクリプトは、セッション トークンをウェブページに実装する方法を示しています。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>reCAPTCHA WAF Session Token</title> <script src="https://www.google.com/recaptcha/enterprise.js?render=SESSION_TOKEN_KEY&waf=session" async defer></script> <body></body> </head> </html>
確認ページ
reCAPTCHA による確認ページを実装すると、reCAPTCHA によってインタースティシャル ページにリダイレクトされ、CAPTCHA 確認をユーザーに表示する必要があるかどうかが判定されます。そのため、CAPTCHA による確認はすべてのユーザーには表示されない可能性があります。
reCAPTCHA 課題ページを実装するには、次の手順を行います。
- ウェブサイトの課題ページのキーを作成します。
gcloud
reCAPTCHA キーを作成するには、gcloud recaptcha keys create コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- DISPLAY_NAME: キーの名前。通常はサイトの名前です。
- INTEGRATION_TYPE: 統合の種類
invisible
を実行します。 - DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。
--allow-all-domains
を実行します。 - WAF_FEATURE: WAF 機能の名前。
challenge-page
を実行します。 - WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
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: 統合の種類
invisible
を実行します。 - DOMAIN_NAME: キーの使用を許可されたウェブサイトのドメインまたはサブドメイン。
--allow-all-domains
を実行します。 - WAF_FEATURE: WAF 機能の名前。
challenge-page
を実行します。 - WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
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": "INVISIBLE", }, "wafSettings": { "wafService": "akamai", "wafFeature": "CHALLENGE_PAGE" } }
後で使用できるように、確認ページのキーを記録します。
- ユーザーを reCAPTCHA による確認ページにリダイレクトして reCAPTCHA トークンを受け取るには、保護されたページで
redirect
アクションを使用してファイアウォール ポリシーを作成します。
express
WAF Express 保護用 reCAPTCHA Enterprise を実装するには、express キーを作成します。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
gcloud
reCAPTCHA 鍵を作成するには、gcloud recaptcha keys create コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- DISPLAY_NAME: キーの名前。通常はサイトの名前です。
- WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
gcloud recaptcha keys create コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud recaptcha keys create \ --express \ --display-name=DISPLAY_NAME \ --waf-service=WAF_SERVICE
Windows(PowerShell)
gcloud recaptcha keys create ` --express ` --display-name=DISPLAY_NAME ` --waf-service=WAF_SERVICE
Windows(cmd.exe)
gcloud recaptcha keys create ^ --express ^ --display-name=DISPLAY_NAME ^ --waf-service=WAF_SERVICE
レスポンスには、新しく作成された reCAPTCHA キーが含まれます。
REST
キーの種類と統合タイプに関する API リファレンス情報については、鍵と統合タイプをご覧ください。リクエストのデータを使用する前に、次のように置き換えます。
- DISPLAY_NAME: キーの名前。通常はサイトの名前です。
- WAF_SERVICE: WAF サービス プロバイダの名前。
Akamai には
akamai
を指定します。
HTTP メソッドと URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
リクエストの本文(JSON):
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", }
リクエストを送信するには、次のいずれかのオプションを選択します。
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, }, "wafSettings": { "wafService": "akamai", } }
後で使用するために、express キーを記録します。
Akamai と統合する
Akamai と統合するには、EdgeWorker サービスを設定し、Property Manager で EdgeWorker サービスのプロパティを構成する必要があります。
EdgeWorker サービスを設定する
Akamai Control Center で EdgeWorker ID を作成し、作成した EdgeWorker ID に編集者のロールを割り当てます。
Akamai 用の reCAPTCHA パッケージをアップロードするには、ダウンロードした reCAPTCHA パッケージを使用して EdgeWorker バージョンを作成します。
Property Manager でプロパティを設定する
保護する Akamai プロパティを選択し、プロパティの新しいバージョンを作成します。
実装した WAF 機能に応じて、グローバルなユーザー定義変数を作成します。プロパティで設定するグローバル変数は、接頭辞
PMUSER_
で始まります。次の表に、プロパティ変数セクションで作成して追加できる変数を示します。
変数名 説明 セキュリティ設定 RECAPTCHAJSINSTALL
reCAPTCHA JavaScript を挿入します。Akamai が reCAPTCHA API を呼び出して reCAPTCHA スコアを評価し、ファイアウォール ポリシーで構成されたアクションを実行するページの URL。パスを glob パターンとして指定し、区切り文字として「;」を使用します。 非表示 RECAPTCHACHALLENGESITEKEY
reCAPTCHA チャレンジページ キー。ユーザーを reCAPTCHA チャレンジ ページにリダイレクトする場合は、この変数が必要です。 非表示 RECAPTCHAACTIONSITEKEY
reCAPTCHA アクション トークン キー。この変数は、ページを保護するために reCAPTCHA アクション トークンを使用する場合に必要です。 非表示 RECAPTCHASESSIONSITEKEY
reCAPTCHA セッション トークンキー。この変数は、ページを保護するために reCAPTCHA セッション トークンを使用する場合に必要です。Akamai の reCAPTCHA JavaScript を構成するように RECAPTCHAJSINSTALL
が設定されている場合は、この変数を使用する必要があります。非表示 RECAPTCHAEXPRESSSITEKEY
reCAPTCHA express キー。この変数は、ページを保護するために reCAPTCHA express を使用する場合に必要です。 非表示 GCPPROJECTNUMBER
Google Cloud プロジェクト ID。
非表示 GCPAPIKEY
認証用に作成した API キー。
非表示 手順については、変数の作成をご覧ください。
EdgeWorker サービスを有効にするには、空のルール テンプレートを使用して、次の情報を使用してルールを追加します。
基準
- 名前:
reCAPTCHA EdgeWorkers rule
条件: すべて一致
もし
パスが
次のいずれかと一致する場合
/*
matches one of
条件は、reCAPTCHA で保護する必要がある URL のスーパーセットと一致する必要があります。パス/*
にはすべてのパスが含まれます。特定のページを追加することもできます。省略可: 追加の条件を追加してファイル拡張子を制限する場合は、次を使用します。
もし
ファイル拡張子が
次のいずれかである場合
html
- 名前:
動作
- 有効化: オン
- ID: Your_EdgeWorker_ID
- mPulse レポートを有効にする: オフ
EdgeWorker サービスから reCAPTCHA
createAssessment
API に呼び出しを転送するには、空のルール テンプレートを使用して、次の情報を使用して新しいルールを追加します。基準
- 名前:
reCAPTCHA assessment rule
- 条件: すべて一致
もし
パスが
次のいずれかと一致する場合
/v1/projects/*/assessments
- 名前:
動作
- 送信元の種類: 送信元
- 送信元サーバー ホスト名:
public-preview-recaptchaenterprise.googleapis.com
- 転送ホストヘッダー: カスタム値
- カスタム転送ホストヘッダー:
public-preview-recaptchaenterprise.googleapis.com
- キャッシュキーのホスト名: 送信元ホスト名
- Gzip 圧縮をサポート: はい
- True Client IP ヘッダーを送信: はい
- True Client IP ヘッダー名: True-Client-IP
- クライアントに True Client IP ヘッダーの設定を許可: いいえ
- 確認設定: プラットフォームの設定を使用
- SNI TLS 拡張機能を使用: はい
- HTTP ポート: 80
- HTTPS ポート: 443
省略可: EdgeWorker サービスから reCAPTCHA チャレンジ ページに呼び出しを転送するには、トラフィックをチャレンジ ページにリダイレクトするように、次の情報を使用して新しいルールを追加します。
基準
- 名前:
reCAPTCHA challenge page rule
- 条件: すべて一致
もし
パスが
次のいずれかと一致する場合
/recaptcha/challengepage
- 名前:
動作
- 送信元の種類: 送信元
- 送信元サーバー ホスト名:
www.google.com
- 転送ホストヘッダー: カスタム値
- カスタム転送ホストヘッダー:
www.google.com
- キャッシュキーのホスト名: 送信元ホスト名
- Gzip 圧縮をサポート: はい
- True Client IP ヘッダーを送信: はい
- True Client IP ヘッダー名: True-Client-IP
- クライアントに True Client IP ヘッダーの設定を許可: いいえ
- 確認設定: プラットフォームの設定を使用
- SNI TLS 拡張機能を使用: はい
- HTTP ポート: 80
- HTTPS ポート: 443
変更を有効にします。
reCAPTCHA ファイアウォール ポリシーを作成する
ウェブサイトで保護するすべてのページのルールを指定するファイアウォール ポリシーを作成する必要があります。ファイアウォール ポリシーは、WAF 用 reCAPTCHA の 1 つ以上の機能を使用して作成できます。
reCAPTCHA ファイアウォール ポリシーで、目的の優先度の順にルールを追加します。最初のルールの優先度が最も高いです。優先度は、ReorderFirewallPoliciesRequest
を使用して変更することもできます。受信リクエストの場合、指定されたパスのポリシー条件が一致すると、WAF サービス プロバイダは定義されたアクションを実装し、後続のルールは評価されません。
- 選択した機能に基づいて、次の操作を行います。
- 保護するパスを特定します。
- アクセスを許可、リダイレクト、ブロックする条件を特定します。
- ルールに優先順位を付けます。
- ファイアウォール ポリシーのコンポーネントとその属性を確認します。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- gcloud CLI をオーバーライドして、reCAPTCHA API の公開プレビュー版にアクセスするには、次のコマンドを実行します。
gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
- reCAPTCHA ファイアウォール ポリシーを作成するには、gcloud recaptcha firewall-policies create コマンドを使用します。
reCAPTCHA ファイアウォール ポリシーで、目的の優先度の順にルールを追加します。優先度が最も高いルールを最初に追加する必要があります。受信リクエストの場合、指定されたパスのポリシー条件が一致すると、WAF サービス プロバイダは定義されたアクションを実装し、後続のルールは評価されません。デフォルトのルールではアクセスを許可します。
gcloud recaptcha firewall-policies create \ --actions=ACTION \ --condition=CONDITION \ --description=DESCRIPTION \ --path=PATH
次の値を指定します。
- ACTION: 受信リクエストに対して WAF サービス プロバイダが行う必要があるアクション。最大で 1 つのターミナル アクション(レスポンスを強制するアクション)を含めることができます。次のいずれかのアクションを指定します。
allow
: リクエストされたページへのアクセスを許可します。これはターミナル アクションです。block
: リクエストされたページへのアクセスを拒否します。これはターミナル アクションです。redirect
: 受信したユーザー リクエストを reCAPTCHA による確認ページにリダイレクトします。これはターミナル アクションです。substitute
: 不正なユーザー リクエストに、リクエストされたページとは異なるページを表示します。これはターミナル アクションです。set_header
: カスタム ヘッダーを設定し、受信したユーザー リクエストをバックエンドに続行できるようにします。バックエンドは、カスタマイズされた保護をトリガーできます。これはターミナル以外のアクションです。
- CONDITION: reCAPTCHA ファイアウォール ポリシーを受信したユーザー リクエストに適用するかどうかを指定する CEL(Common Expression Language)条件式。この条件が true と評価され、リクエストされたパスがパスパターンと一致する場合、関連するアクションが WAF サービス プロバイダによって実行されます。条件文字列では、作成時に CEL 構文の正確性がチェックされます。言語定義の詳細については、CEL 言語の定義をご覧ください。
- DESCRIPTION: reCAPTCHA ファイアウォール ポリシーの目的の説明。説明は UTF-8 で 256 文字以内にする必要があります。
- PATH: reCAPTCHA ファイアウォール ポリシーが適用されるパス。 glob パターンとして指定する必要があります。glob の詳細については、マニュアル ページをご覧ください。
コマンドが正常に実行されると、次のような出力が表示されます。
Created [100].
次の例では、スコアが 0.1 未満の場合に、
/example/page.html
に対するトラフィック ターゲティングをブロックする reCAPTCHA ファイアウォール ポリシーを作成します。gcloud recaptcha firewall-policies create \ --description="example policy" \ --path="/example/page.html" \ --condition="recaptcha.score < 0.1" \ --actions="block"
- ACTION: 受信リクエストに対して WAF サービス プロバイダが行う必要があるアクション。最大で 1 つのターミナル アクション(レスポンスを強制するアクション)を含めることができます。次のいずれかのアクションを指定します。