このページでは、POST 本文のコンテンツ解析を構成する方法について説明します。これは Cloud Armor のセキュリティ ポリシーで使用できるオプションの機能です。
Cloud Armor では、デフォルトで POST 本文のコンテンツ全体が均一な文字列として評価され(本文サイズの制限が適用されます)、事前構成済み WAF ルールのシグネチャと照合されます。JSON などの代替エンコードを含むリクエストの場合、メッセージの構造コンポーネント(ユーザー指定ではない)が原因で、事前構成済み WAF ルールのシグネチャと一致したと判定される可能性があります。ノイズを避けて誤検出のリスクを減らすため、保護対象のワークロードが次の条件を満たす場合は、対応するコンテンツ タイプで代替解析が有効になるように 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/json
、application/vnd.api+json
、application/vnd.collection+json
、application/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
ロギング
Cloud Armor のセキュリティ ポリシーに対して評価された各 HTTP(S) リクエストは、Cloud Logging によってログに記録されます。ログには、適用されたセキュリティ ポリシーの名前、一致したルール、ルールが適用されたかどうかなどの詳細が記録されます。新しいバックエンド サービス リソースのリクエスト ロギングは、デフォルトで無効になっています。Cloud Armor リクエストをロギングするには、セキュリティ ポリシーで保護されているバックエンド サービスごとに HTTP(S) ロギング設定を有効にする必要があります。詳細については、グローバル外部アプリケーション ロードバランサのロギングとモニタリングをご覧ください。
制限事項
JSON 解析を構成する際は、次の制限事項を考慮してください。
Cloud Armor は、デフォルトで
HTTP POST
本文の最初の最大 8 KB を検査します。この上限は 8 KB、16 KB、32 KB、48 KB、64 KB のいずれかに構成できます。JSON コンテンツのサイズが構成済みの検査上限より大きい場合は、この上限まで JSON 解析が適用され、その後に事前構成済み WAF ルールによる検査が行われます。事前構成済みの WAF ルールを使用する場合にリクエスト本文の検査上限を構成する方法の詳細については、POST および PATCH 本文の検査における制限をご覧ください。
JSON パーサーが結果を返さない場合は、URI 解析が試行される可能性があります。URI パーサーが name-value パラメータを返さないか、部分的な name-value パラメータのみを返す場合、文字列全体または部分的な文字列が検査のパラメータ名として使用されます。