POST 本文のコンテンツ解析

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

Google Cloud Armor では、デフォルトで POST 本文のコンテンツ全体が均一な文字列として評価され(本文サイズの制限が適用されます)、事前構成済み WAF ルールのシグネチャと照合されます。JSON などの代替エンコードを含むリクエストは、メッセージの構造コンポーネント(ユーザー指定のコンポーネントではない)が原因で、事前構成済み WAF ルールのシグネチャと一致したと判定される可能性があります。ノイズを避けて偽陽性のリスクを減らすため、保護対象のワークロードが次の条件を満たす場合は、対応するコンテンツ タイプで代替解析が有効になるように 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 ヘッダー値のリストを構成します。この例は、JSON 解析が有効になるようにセキュリティ ポリシー POLICY_NAME を更新し、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 より大きい場合は、事前構成済み WAF ルールによって検査される最初の 8 KB のコンテンツに JSON 解析が適用されます。
  • JSON パーサーが結果を返さない場合は、URI 解析が試行される可能性があります。URI パーサーが name-value パラメータを返さないか、部分的な name-value パラメータのみを返す場合、文字列全体または部分的な文字列が検査のパラメータ名として使用されます。

次のステップ