Google Cloud Armor の reCAPTCHA 統合機能を理解し、ユースケースに最適な機能を判断します。
reCAPTCHA には、Google Cloud Armor との統合に使用できる次の機能があります。
機能の概要
Google Cloud Armor 統合用の reCAPTCHA は、アクション トークン、セッション トークン、チャレンジ ページをサポートしています。
1 つのアプリケーションで Google Cloud Armor 用 reCAPTCHA の 1 つ以上の機能を使用できます。たとえば、すべてのページにセッション トークンを適用するように選択でき、セッション トークンのスコアに基づいて、不審なリクエストを reCAPTCHA 確認ページにリダイレクトできます。また、ご購入手続きなどの重要なアクションにアクション トークンを使用できます。詳細については、例をご覧ください。
次の表に、Google Cloud Armor で利用可能な reCAPTCHA 機能の簡単な比較を示します。
| 比較カテゴリ | reCAPTCHA アクション トークン | reCAPTCHA セッション トークン | reCAPTCHA 課題ページ |
|---|---|---|---|
| ユースケース | ログインや投稿へのコメントなどのユーザー アクションを保護するために使用します。 | サイトのドメインでユーザー セッション全体を保護するために使用します。 | サイトに対するスパム行為が疑われ、bot を除外する必要がある場合に使用します。 この方法では、ユーザーが CAPTCHA チャレンジを確認する必要があるため、ユーザーのアクティビティが中断されます。 |
| 対応プラットフォーム | ウェブサイトとモバイルアプリ | ウェブサイト | ウェブサイト |
| クライアント統合の作業量 | 中
クライアントサイドの手動統合。 |
中
reCAPTCHA JavaScript を手動でインストールするか、WAF への挿入によってインストールします。 |
低
セキュリティ ポリシーによってトリガーされたインタースティシャル。 |
| 検出精度 | 最高
クライアント、サーバー、アクション固有のシグナルを使用できます。 |
高
クライアントとサーバーに固有のシグナルを使用できます。 |
中
クライアント固有のシグナルとサーバー固有のシグナルを使用できます。クライアント シグナルは、インタースティシャル ページでのみ使用できます。 |
| サポートされている reCAPTCHA のバージョン | reCAPTCHA のスコアベース キーとチェックボックス キー | reCAPTCHA スコアベース キー | インタースティシャル ページに埋め込まれた reCAPTCHA 確認ベースのキー |
reCAPTCHA アクション トークン
reCAPTCHA アクション トークンを使用して、ウェブページやモバイルアプリでのご購入手続きなどの重要なユーザー インタラクションを保護できます。
reCAPTCHA action-tokens のワークフローは、次の手順で構成されます。
- エンドユーザーが reCAPTCHA で保護されたアクションをトリガーすると、ウェブページまたはモバイルアプリは、分析のためにブラウザで収集したシグナルを reCAPTCHA に送信します。
- reCAPTCHA がアクション トークンをウェブページまたはモバイルアプリに送信します。
- このアクション トークンを、保護するリクエストのヘッダーに添付します。
- エンドユーザーが action-token を使用してアクセスをリクエストすると、Google Cloud Armor はバックエンド アプリケーションの代わりに action-token 属性をデコードして検証します。
- Google Cloud Armor は、構成済みのセキュリティ ポリシー ルールに基づいてアクションを適用します。
次のシーケンス図は、ウェブサイト用の reCAPTCHA アクション トークンのワークフローを示しています。
次のシーケンス図は、モバイルアプリ用の reCAPTCHA アクション トークンのワークフローを示しています。
reCAPTCHA セッション トークン
サイトのドメインでユーザー セッション全体を保護する場合は、reCAPTCHA セッション トークンを使用できます。セッション トークンを使用すると、有効なトークンを一定期間リクエスト間で再利用できるため、ユーザー アクションごとに execute() を呼び出す必要がなくなり、ユーザー側の抵抗と execute() の呼び出し回数が減少します。
reCAPTCHA がエンドユーザーのブラウジング パターンを学習できるように、サイトのすべてのウェブページで reCAPTCHA セッション トークンを使用することをおすすめします。
reCAPTCHA セッション トークンのワークフローは次の手順で構成されます。
- ブラウザは、reCAPTCHA から reCAPTCHA JavaScript を読み込みます。
- reCAPTCHA JavaScript は、
execute()の呼び出し後にセッション トークンをエンドユーザーのブラウザの Cookie として設定します。 - エンドユーザーのブラウザは Cookie を保存し、reCAPTCHA JavaScript はアクティブである限り 30 分ごとに Cookie を更新します。
- ユーザーが Cookie を使用してアクセスをリクエストすると、Google Cloud Armor がこの Cookie を検証し、セキュリティ ポリシー ルールに基づいてアクションを適用します。
次のシーケンス図は、reCAPTCHA セッション トークンのワークフローを示しています。
reCAPTCHA 課題ページ
reCAPTCHA による確認ページ機能を使用して、受信リクエストを reCAPTCHA にリダイレクトし、各リクエストが不正なものか正当なものかを判断します。
リダイレクトと可能性がある CAPTCHA 課題の適用により、ユーザーのアクティビティが中断されます。サイトに対するスパム行為が疑われる場合は、これを使用して bot を除外することをおすすめします。
エンドユーザー(ユーザー)が初めてサイトにアクセスしたときに、次のイベントが発生します。
- Google Cloud Armor レイヤで、ユーザーのリクエストが reCAPTCHA による確認ページにリダイレクトされます。
- reCAPTCHA が、reCAPTCHA JavaScript が埋め込まれた HTML ページで応答します。
- 確認ページがレンダリングされると、reCAPTCHA がユーザー インタラクションを評価します。必要に応じて、reCAPTCHA が CAPTCHA による確認をユーザーに提供します。
評価の結果に応じて、reCAPTCHA は次の処理を行います。
- ユーザー操作が評価に合格すると、reCAPTCHA は除外 Cookie を発行します。ブラウザは、Cookie が期限切れになるまで、同じサイトに対するユーザーの後続のリクエストにこの除外 Cookie を添付します。デフォルトでは、除外 Cookie は 3 時間後に期限切れになります。
- ユーザーの操作が評価に合格しなかった場合、reCAPTCHA は除外 Cookie を発行しません。
reCAPTCHA は、ユーザーが GET/HEAD 呼び出しを使用してウェブページにアクセスすると、除外 Cookie でウェブページを再読み込みします。ユーザーが POST/PUT 呼び出しを使用してウェブページにアクセスする場合、ユーザーはページの再読み込みリンクをクリックする必要があります。
Google Cloud Armor は、有効な除外 Cookie を持つリクエストが再びリダイレクトされるのを免除し、サイトへのアクセスを許可します。
次のシーケンス図は、reCAPTCHA 課題ページのワークフローを示しています。