このページでは、詳細ログを構成する方法について説明します。これは Cloud Armor のセキュリティ ポリシーで使用できるオプションの機能です。
ログに記録される詳細レベルを調整できます。最初にポリシーを作成するとき、ポリシーを変更するとき、またはポリシーのトラブルシューティングを行うときにのみ、詳細ロギングを有効にすることをおすすめします。詳細ログを有効にすると、プレビュー モードのルールと、標準オペレーション中のアクティブな(プレビューされていない)ルールで有効になります。
事前構成 WAF ルールが特定のリクエストによってトリガーされた理由がわからない例を考えてみましょう。Cloud Armor のデフォルトのイベントログには、トリガーされたルールとサブシグネチャが含まれます。ただし、トラブルシューティング、ルールの検証、ルールの調整などの目的で、ルールをトリガーした受信リクエストの詳細情報が必要になることがあります。この例では、詳細ログを有効にすることをおすすめします。
Cloud Armor のロギングレベルを構成して各セキュリティ ポリシーの詳細なロギングを有効にするには、Google Cloud 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
フィールドが含まれている場合、POST 本文全体がルールに一致することを意味します。
- ログに
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 ペアの値の部分と一致すると、このフィールドにキー値が保存されます。それ以外の場合は空になります。matchedFieldValue
(文字列): フィールドの一致している部分の接頭辞。最大 16 バイトです。matchedFieldLength
(整数): フィールドの合計長。matchedOffset
(整数): 一致しているフィールド内の開始オフセット。matchedLength
(整数): 一致の長さ。inspectedBodySize
(整数):--request-body-inspection-size
フラグを使用して設定したリクエスト本文の構成済みの検査上限(バイト数)。この上限の詳細については、POST および PATCH 本文の検査における制限をご覧ください。
たとえば、SQL インジェクション WAF ルールが有効なプロジェクトに次のリクエストを送信できます。
curl http://IP_ADDR/?sql_table=abc%20pg_catalog%20xyz
ログ エクスプローラのエントリは次のようになります。
enforcedSecurityPolicy: { name: "user-staging-sec-policy" priority: 100 configuredAction: "DENY" outcome: "DENY inspectedBodySize: 65536 preconfiguredExprIds: [ 0: "owasp-crs-v030001-id942140-sqli" ] matchedFieldType: "ARG_VALUES" matchedFieldName: "sql_table" matchedFieldValue: "pg_catalog" matchedFieldLength: 18 matchedOffset: 4 matchedLength: 10 }
詳細ログが有効な場合のプライバシーの維持
詳細ロギングを使用すると、特定の事前構成 WAF ルールをトリガーした受信リクエストの要素の一部がログに記録されます。これらのスニペットには、リクエスト ヘッダー、リクエスト パラメータ、POST 本文の要素などが含まれることがあります。リクエスト ヘッダーや本文の内容、WAF ルールがトリガーされた理由によっては、スニペットに IP アドレスや受信リクエストの機密データなどが含まれる場合があります。
詳細ログを有効にすると、機密データが Logging のログに記録されるリスクがあります。詳細ログは、ルールの作成中と検証中、またはトラブルシューティング目的でのみ有効にすることをおすすめします。通常のオペレーションでは、詳細ログを無効にしておくことをおすすめします。