コンテンツにスキップ

レポートの読み方

daily_brief の出力はこのような形です。

# Cloud Armor brief — project example-prod, last 26h
## Enforced DENY: >= 2000 (capped at 2000)
  rule 101 (自リージョン外からの深いパス巡回をブロック): 1803
  rule 500 (AutoDiscover 探索のブロック): 149
  rule 1002 (OWASP LFI 対策): 35
## JP-sourced DENY (false-positive lens): 214, suspicious 12
  rule 1002 (OWASP LFI 対策)  198.51.100.7  https://198.51.100.7/.git/config
  ...
## Preview DENY: 0

ルール別 enforce 遮断

どのルールが発火したかで分けた、平常時の遮断量です。数が大きいこと自体は問題では ありません。公開サイトには常時スキャンが来るので、それを遮断しているのは WAF が 仕事をしている証拠です。

注目すべきは内訳の変化です。今まで発火していなかったルールが急に大半を占める、 あるいは発火していたルールがゼロになる(ルールの編集・無効化、または手前のルールに 先にマッチするようになった可能性)といった変化が確認の対象になります。

>= N (capped) は下限値です

クエリが上限に達すると見出しは >= N (capped at N) になります。実際の総数は それより大きく、しばしば大幅に大きい値です。上限に達した数値と達していない 数値を比べて「減った」と判断しないでください。 正確な値が必要なときは CLOUDARMOR_MAX_ENTRIES を上げるか since_hours を短くします。

自リージョン発の遮断(誤検知レンズ)

自国・自地域に属する IP から来て、それでも遮断されたリクエストです。誤りを捕まえる のはこのセクションです。海外のスキャナー向けのルールが自組織の利用者に当たることは 本来まれだからです。

known_normal_priorities に挙げた優先度は抑制された件数としてまとめられ、それ以外は 送信元 IP とリクエスト URL 付きで表示されるので、内容から判断できます。

見えているもの 判断
住宅・モバイル回線からの通常のブラウジング経路、または正規のクローラー 要対応 — 誤検知の可能性が高い(ルールが広すぎる)
ホスト名ではなくロードバランサの IP アドレス宛のリクエスト 正常 — 利用者ではなくスキャナー
.git/config.envwp-login.php・パストラバーサルのエンコード 正常 — 自リージョン発でも遮断が正しい
単一の内部ホストが1つのルールで大量に遮断されている 要調査 — 攻撃ではなく内部ツールの設定不備であることが多い

suspicious が 0 のときは何も出力しないのではなく、その旨を明示します。「出力が無い」 状態を解釈する必要が生じないようにするためです。

preview 遮断

ドライラン中のルールです。Cloud Armor は「遮断したはずの内容」を遮断せずに記録します。 一定期間、自リージョン発のヒットが出ない preview ルールは enforce への昇格候補です。

逆も同じくらい有用です。自リージョンの利用者を遮断してしまう preview ルールは、 本番投入前に条件を絞る必要があることを、無コストで教えてくれます。

実運用のリズム

daily_brief は1日1回、実行間隔より少し長い期間で回します(既定の since_hours=26 は日次実行に2時間の重なりを持たせた値なので、開始が多少遅れても穴が空きません)。 誤検知の詳細だけを見たいときは home_region_denies を単独で呼びます。