POST 本文コンテンツの解析

このページでは、Google Cloud Armor セキュリティ ポリシーで使用できるオプション機能である POST 本文コンテンツの解析を構成する方法について説明します。

デフォルトでは、Google Cloud Armor は、事前構成された WAF ルールのシグネチャと照合して、POST 本文全体を均一な文字列として評価します(本文サイズの制限があります)。JSON などの代替エンコードを含むリクエストの場合、メッセージの構造コンポーネント(ユーザー指定ではない)が、事前構成された WAF 署名との照合をトリガーする可能性があります。ノイズを避け、誤検出のリスクを軽減するために、保護されたワークロードが以下を行うときは、サポートされている任意の Content-Type に対して代替解析が有効になるよう Google Cloud Armor を構成することをおすすめします。

  • REST API を提供する
  • GraphQL を使用する
  • JSON エンコード コンテンツが含まれるリクエストを受信する。

各セキュリティ ポリシーに対して、POST リクエストの JSON 本文の解析を有効または無効にできます。Content-Type ヘッダーが application/json に設定されている場合は、Google Cloud CLI で --json-parsing フラグを使用します。

デフォルトではこのオプションは無効になっています。フラグの構文は次のとおりです。

--json-parsing=[STANDARD | STANDARD_WITH_GRAPHQL | DISABLED]

このフラグは gcloud compute security-policies update でのみ使用できます。このオプションを使用して新しいセキュリティ ポリシーを作成するには、ファイル内でセキュリティ ポリシーを作成してからそのファイルをインポートする必要があります。詳細については、セキュリティ ポリシーのインポートをご覧ください。

JSON 解析を使用する

次の例では、代替解析が適用されるカスタム Content-Type ヘッダー値のリストを構成します。次の例では、セキュリティ ポリシー POLICY_NAME を更新して JSON 解析を有効にし、コンテンツ タイプ application/jsonapplication/vnd.api+jsonapplication/vnd.collection+jsonapplication/vnd.hyper+json を指定します。

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD \
    --json-custom-content-types "application/json,application/vnd.api+json,application/vnd.collection+json,application/vnd.hyper+json"

GraphQL 解析を使用する

GraphQL 解析を構成するには、次の例のように、セキュリティ ポリシーを更新して --json-parsing フラグを STANDARD_WITH_GRAPHQL に設定します。

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD_WITH_GRAPHQL

ロギング

Google Cloud Armor セキュリティ ポリシーに対して評価された各 HTTP(S) リクエストは、Cloud Logging によってログに記録されます。ログには、適用されたセキュリティ ポリシーの名前、一致するルール、ルールが適用されたかどうかなどの詳細が記録されます。デフォルトでは、新しいバックエンド サービス リソースのリクエスト ロギングは無効になっています。Google Cloud Armor リクエストが確実にログに記録されるようにするには、セキュリティ ポリシーで保護されているバックエンド サービスごとに HTTP(S) ロギングを有効にする必要があります。 詳細については、グローバル外部アプリケーション ロードバランサのロギングとモニタリングをご覧ください。

制限事項

JSON 解析を構成する場合は、次の制限事項を考慮してください。

  • POST 本文の検査は、引き続き最初の 8 KB に制限されます。JSON コンテンツが 8 KB を超える場合、Google Cloud Armor は、事前構成された WAF ルールで検査される最初の 8 KB のコンテンツに JSON 解析を適用します。
  • JSON パーサーが結果を返さない場合は、URI 解析が試行される可能性があります。URI パーサーが name-value パラメータを返さないか、部分的な name-value パラメータのみを返す場合、文字列全体または部分的な文字列が検査のパラメータ名として使用されます。

次のステップ