コンテンツにスキップ

cloudarmor-mcp

Google Cloud Armor の WAF ログを点検する MCP サーバーです。ルール別の遮断集計・自リージョン発の誤検知チェック・preview(ドライラン)ルールのレビューを、Cloud Logging から直接読み取ります。

毎日の「WAF は健全か?」の点検のために作りました。daily_brief を1回呼べば、何をブロックしたか・ブロックすべきでない相手をブロックしていないか・preview ルールは昇格できる状態か が一度に分かります。

ツール

ツール 用途
daily_brief 朝の点検用サマリー1コール。ルール別 enforce 遮断・自リージョン発の誤検知レンズ・preview 遮断
enforce_denies ルール優先度別の enforce 遮断件数
home_region_denies 送信元 IP が自リージョンに属する enforce 遮断。known-normal に指定していないルールでの遮断は誤検知の候補
preview_denies preview(ドライラン)遮断件数。静かな preview ルールは enforce への昇格候補
health_check バージョン・設定の有無・Cloud Logging への最小プローブ

全ツールが読み取り専用です。Cloud Armor にも Cloud Logging にも書き込みません。認証に使うサービスアカウントの権限も roles/logging.viewer のみです。

設計方針

件数を黙って切り捨てない。 各クエリには上限(既定 2000 件)があります。上限に達した場合は正確に見える数字を出さず >= N (capped at N) と表示します。上限に達した件数は下限値であり、それを合計として扱うことが「忙しい日を静かな日と読み違える」原因になります。

組織固有の値をコードに持たない。 プロジェクト・バックエンドサービス・自リージョン・ルール番号はすべて環境変数か任意の INI ファイルから読みます。同じパッケージをそのまま別組織で使えますし、ルール番号をプロンプトに貼り付ける必要もありません。

集計出力にログの中身を載せない。 サマリー系のツールが返すのは優先度と件数だけです。送信元 IP とリクエスト URL は home_region_denies(および daily_brief の対応セクション)にのみ現れます。そこではそれ自体が確認対象だからです。

次に読むもの