このページでは、詳細ログを構成する方法について説明します。これは 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_NAMESARG_VALUESBODY- ログに
BODYフィールドが含まれている場合、リクエスト本文全体がルールに一致することを意味します。
- ログに
COOKIE_VALUESCOOKIE_NAMESFILENAMEHEADER_VALUESRAW_URIREFERERREQUEST_LINEURIUSER_AGENTHEADER_NAMESARGS_GETX_FILENAMEARG_NAME_COUNTTRANSFER_ENCODINGREQUEST_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 ルールをトリガーした受信リクエストの要素の一部がログに記録されます。これらのスニペットには、リクエスト ヘッダー、リクエスト パラメータ、リクエスト本文の要素などが含まれることがあります。リクエスト ヘッダーや本文の内容、WAF ルールがトリガーされた理由によっては、スニペットに IP アドレスや受信リクエストの機密データなどが含まれる場合があります。
詳細ログを有効にすると、機密データが Logging のログに記録されるリスクがあります。詳細ログは、ルールの作成中と検証中、またはトラブルシューティング目的でのみ有効にすることをおすすめします。通常のオペレーションでは、詳細ログを無効にしておくことをおすすめします。