このページでは、Cloud Armor セキュリティ ポリシー ルールを bot 管理用に構成する方法について説明します。bot 管理を構成する前に、bot 管理の概要の情報をよく理解しておいてください。
始める前に
以降のセクションでは、Cloud Armor セキュリティ ポリシーの構成に必要なすべての Identity and Access Management(IAM)のロールと権限について説明します。このドキュメントのユースケースでは、compute.securityPolicies.create
権限と compute.securityPolicies.update
権限のみが必要です。
Cloud Armor セキュリティ ポリシー用の IAM 権限を設定する
次の操作を行うには、Identity and Access Management(IAM)の Compute セキュリティ管理者のロール(roles/compute.securityAdmin
)が必要です。
- Cloud Armor セキュリティ ポリシーの構成、変更、更新、削除
- 次の API メソッドの使用:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Compute ネットワーク管理者のロール(roles/compute.networkAdmin
)を付与されたユーザーは、次の操作を実行できます。
- バックエンド サービスに Cloud Armor セキュリティ ポリシーを設定する
- 次の API メソッドの使用:
BackendServices setSecurityPolicy
BackendServices list
(gcloud
のみ)
セキュリティ管理者のロール(roles/iam.securityAdmin
)と Compute ネットワーク管理者のロールを持つユーザーは、SecurityPolicies
API メソッドの get
、list
、getRule
を使用して Cloud Armor のセキュリティ ポリシーを参照できます。
カスタムロールの IAM 権限を設定する
次の表に、IAM のロールの基本的な権限と、関連する API メソッドを示します。
IAM 権限 | API メソッド |
---|---|
compute.securityPolicies.create |
SecurityPolicies insert |
compute.securityPolicies.delete |
SecurityPolicies delete |
compute.securityPolicies.get |
SecurityPolicies get SecurityPolicies getRule |
compute.securityPolicies.list |
SecurityPolicies list |
compute.securityPolicies.use |
BackendServices setSecurityPolicy |
compute.securityPolicies.update |
SecurityPolicies patch SecurityPolicies addRule SecurityPolicies patchRule SecurityPolicies removeRule |
compute.backendServices.setSecurityPolicy |
BackendServices setSecurityPolicy |
reCAPTCHA の手動チャレンジで人間と自動クライアントを区別する
reCAPTCHA を Cloud Armor と連携させるには、CHALLENGEPAGE
タイプの reCAPTCHA WAF サイトキー(reCAPTCHA キー)をセキュリティ ポリシーに関連付ける必要があります。reCAPTCHA キーの詳細については、reCAPTCHA キーの概要をご覧ください。
独自の reCAPTCHA キーをセキュリティ ポリシーに関連付ける、または関連付けを解除するには、次のコマンドを使用します。
gcloud compute security-policies update SECURITY_POLICY \ --recaptcha-redirect-site-key SITE_KEY
次のように置き換えます。
SECURITY_POLICY
: セキュリティ ポリシーの名前SITE_KEY
: reCAPTCHACHALLENGEPAGE
キー
reCAPTCHA キーを関連付ける
次の例では、reCAPTCHA キーをセキュリティ ポリシーに関連付けます。関連付けられた reCAPTCHA キーは、特定のセキュリティ ポリシーの下で手動チャレンジ機能を使用するすべてのルールに適用されます。
gcloud compute security-policies update SECURITY_POLICY \ --recaptcha-redirect-site-key "SITE_KEY"
reCAPTCHA キーの関連付けを解除する
独自の reCAPTCHA キーとセキュリティ ポリシーの関連付けを解除するには、次のコマンドを使用します。
gcloud compute security-policies update SECURITY_POLICY \ --recaptcha-redirect-site-key ""
トラフィックを reCAPTCHA 評価にリダイレクトする
reCAPTCHA 評価をセキュリティ ポリシーに関連付けている場合、そのポリシー内に、内部でトラフィックを reCAPTCHA 評価にリダイレクトするルールを作成できます。トラフィックをリダイレクトをするには、gcloud CLI で次の形式を使用します。
gcloud compute security-policies rules create PRIORITY \ --security-policy SECURITY_POLICY \ {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \ --action redirect \ --redirect-type google-recaptcha
次のように置き換えます。
PRIORITY
: 作成するルールの優先度SECURITY_POLICY
: セキュリティ ポリシーの名前EXPRESSION
: トラフィックと照合するカスタムルール言語の式。この式と一致したトラフィックに reCAPTCHA 評価が適用されます。SRC_IP_RANGE
: IP アドレス範囲。この範囲から発信されたすべてのリクエストに reCAPTCHA 評価を適用するために使用します。
次の例では、/login.html
に到達しようとしているトラフィックを reCAPTCHA の手動チャレンジにリダイレクトするルールを作成します。
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches(\"/login.html\")" \ --action redirect \ --redirect-type google-recaptcha
reCAPTCHA のフリクションレス評価を適用する
先に進む前に、bot 管理の概要で、reCAPTCHA のアクション トークンまたはセッション トークンを使用する際の前提条件を確認してください。
reCAPTCHA アクション トークンから属性を抽出するには、token.recaptcha_action.ATTRIBUTE
を使用します。ATTRIBUTE
は、Cloud Armor のルール言語の有効なトークン属性に置き換えます。同様に、token.recaptcha_session.ATTRIBUTE
を使用して reCAPTCHA セッション トークンから属性を抽出します。使用可能な reCAPTCHA トークン属性の構文の詳細については、ルール言語リファレンスをご覧ください。
アクション トークンはウェブ アプリケーション、iOS アプリケーション、Android アプリケーションから発行できますが、セッション トークンはウェブ アプリケーションからのみ発行できます。プラットフォームごとに個別の reCAPTCHA キーが必要です。式 token.recaptcha_action.ATTRIBUTE
と token.recaptcha_session.ATTRIBUTE
は、これらのプラットフォームからのトークンに適用されます。異なるプラットフォームからのトークンを区別するため、およびトークンの盗難を防ぐために、これらの式を使用するルールを構成するときに reCAPTCHA キーを関連付けることをおすすめします。
例
最初の例では、/login.html
をターゲットとし、reCAPTCHA アクション トークンのスコアが 0.8
以上であるトラフィックを許可するルールを作成します。
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \ --action allow
2 つ目の例は 1 つ目と同じですが、アクション トークンが example-site-key-1
または example-site-key-2
の reCAPTCHA キーで発行されている必要があります。
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \ --recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \ --action allow
3 つ目の例では、/login.html
をターゲットとし、reCAPTCHA セッション トークンが example-site-key-3
という reCAPTCHA キーで発行されていて、スコアが 0.8
以上であるトラフィックを許可するルールを作成します。
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \ --recaptcha-session-site-keys "example-site-key-3" \ --action allow
リダイレクト(302 レスポンス)
ユーザーが構成した URL にトラフィックをリダイレクトするルールを作成するには、Google Cloud CLI で次の形式を使用します。
gcloud compute security-policies rules create PRIORITY \ --security-policy SECURITY_POLICY \ {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \ --action redirect \ --redirect-type external-302 \ --redirect-target REDIRECT_URL
次のように置き換えます。
PRIORITY
: 作成するルールの優先度SECURITY_POLICY
: セキュリティ ポリシーの名前EXPRESSION
: トラフィックと照合するカスタムルール言語の式。この式と一致したトラフィックに reCAPTCHA 評価が適用されます。SRC_IP_RANGE
: IP アドレス範囲。この範囲から発信されたすべてのリクエストに reCAPTCHA 評価を適用するために使用します。REDIRECT_URL
: トラフィックのリダイレクト先の URL
次の例では、10.10.10.0/24 からのトラフィックを https://www.example.com へリダイレクトするルールを作成します。
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --src-ip-ranges "10.10.10.0/24" \ --action redirect \ --redirect-type external-302 \ --redirect-target "https://www.example.com"
リクエストのデコレート
トラフィックは許可するものの、保護されたバックエンドに送信する前にカスタム ヘッダーとユーザー定義の静的な値を追加するルールを作成するには、gcloud CLI で次の形式を使用します。
gcloud compute security-policies rules create PRIORITY \ --security-policy SECURITY_POLICY \ {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \ --action allow \ --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...
次のように置き換えます。
PRIORITY
: 作成するルールの優先度SECURITY_POLICY
: セキュリティ ポリシーの名前EXPRESSION
: トラフィックと照合するカスタムルール言語の式。この式と一致したトラフィックに reCAPTCHA 評価が適用されます。SRC_IP_RANGE
: IP アドレス範囲。この範囲から発信されたすべてのリクエストに reCAPTCHA 評価を適用するために使用します。HEADER_#
: デコレートするリクエスト ヘッダーの名前VALUE_#
: デコレートするリクエスト ヘッダーの値
次の例では、/login.html
をターゲットとし、reCAPTCHA アクション トークンのスコアが 0.2
よりも低いトラフィックを許可するルールを作成します。
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \ --action allow \ --request-headers-to-add "reCAPTCHA-Warning=high"