詳細ロギング

このページでは、Google Cloud Armor セキュリティ ポリシーで使用できるオプション機能である詳細ログの構成について説明します。

ログに記録される詳細レベルを調整できます。最初にポリシーを作成するとき、ポリシーを変更するとき、またはポリシーのトラブルシューティングを行うときにのみ、詳細ロギングを有効にすることをおすすめします。詳細ログを有効にすると、プレビュー モードのルールと、標準オペレーション中のアクティブな(プレビューされていない)ルールが有効になります。

事前構成済みの WAF ルールが特定のリクエストによってトリガーされた理由を判断できない例について考えてみましょう。Google Cloud Armor のデフォルトのイベントログには、トリガーされたルールとサブシグネチャが含まれます。ただし、トラブルシューティング、ルールの検証、またはルールの調整を目的として、ルールをトリガーした受信リクエストの詳細情報が必要になることがあります。これは一例であり、詳細ログを有効にすることをおすすめします。

Google Cloud Armor ロギングレベルを構成してセキュリティ ポリシーごとに詳細なロギングを有効にするには、gcloud CLI で --log-level フラグを使用します。

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

--log-level=[NORMAL | VERBOSE]

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

次に例を示します。

  gcloud compute security-policies update ca-policy-1 \
      --log-level=VERBOSE
  

最初にポリシーを作成するとき、ポリシーを変更するとき、またはポリシーのトラブルシューティングを行うときに、詳細ログを有効にすることをおすすめします。

詳細ロギングが有効な場合に記録される値

詳細ロギングが有効になっている場合、Cloud Logging に送信されるロード バランシング リクエスト ログに追加情報が記録されます。詳細ロギングが有効になっている場合、リクエストに次の追加フィールドが含まれます。

  • matchedFieldType(文字列): 一致を引き起こすフィールドのタイプです。

    • ARG_NAMES
    • ARG_VALUES
    • BODY

      • ログに BODY フィールドが含まれている場合、投稿の本文全体がルールに一致することを意味します。
    • COOKIE_VALUES

    • COOKIE_NAMES

    • FILENAME

    • HEADER_VALUES

    • RAW_URI

    • REFERER

    • REQUEST_LINE

    • URI

    • USER_AGENT

    • HEADER_NAMES

    • ARGS_GET

    • X_FILENAME

    • ARG_NAME_COUNT

    • TRANSFER_ENCODING

    • REQUEST_METHOD

  • matchedFieldName(文字列): Key-Value ペアの値の部分と一致すると、このフィールドに Key-Value が保存されます。それ以外の場合は空になります。

  • matchedFieldValue(文字列): フィールド内で照合する部分の接頭辞。最大 16 バイトです。

  • matchedFieldLength(整数): フィールドの合計長。

  • matchedOffset(整数): 一致の原因となるフィールド内の開始オフセット。

  • matchedLength(整数): 一致の長さ。

たとえば、SQL インジェクション WAF ルールが有効なプロジェクトにリクエストを送信できます。

curl http://IP_ADDR/?sql_table=abc%20pg_catalog%20xyz

ログ エクスプローラのエントリは次のようになります。

enforcedSecurityPolicy: {
 name: "user-staging-sec-policy"
 priority: 100
 configuredAction: "DENY"
 outcome: "DENY
 preconfiguredExprIds: [
   0: "owasp-crs-v030001-id942140-sqli"
  ]
matchedFieldType: "ARG_VALUES"
matchedFieldName: "sql_table"
matchedFieldValue: "pg_catalog"
matchedFieldLength: 18
matchedOffset: 4
matchedLength: 10
}

詳細ログが有効な場合のプライバシーの維持

詳細ロギングを使用すると、Google Cloud Armor は、事前構成された特定の WAF ルールをトリガーする受信リクエストの要素の一部をログに記録します。これらのスニペットには、リクエスト ヘッダー、リクエスト パラメータ、POST 本文の要素などが含まれることがあります。リクエスト ヘッダーや本文の内容、WAF ルールがトリガーする内容によっては、スニペットに IP アドレスやその他の機密データが含まれる場合があります。

詳細ログを有効にすると、機密性のあるデータが Logging のログに記録される可能性があります。詳細ロギングは、ルールの作成と検証中、またはトラブルシューティングでのみ有効にすることをおすすめします。通常の処理では、詳細ログを無効にしておくことをおすすめします。

次のステップ