リファレンス¶
ツール¶
全ツールが読み取り専用です。health_check を除き、いずれも since_hours
(float・既定 26)を受け取ります。
daily_brief(since_hours=26)¶
朝の点検サマリーを1コールで返します。ルール別 enforce 遮断・自リージョン発の
誤検知レンズ(CLOUDARMOR_HOME_REGION 設定時のみ)・preview 遮断。クエリに失敗した
セクションは query failed — <理由> としてその場に表示され、他のセクションは
そのまま実行されます。
enforce_denies(since_hours=26)¶
enforce 遮断をルール優先度別に集計し、多い順に返します。
preview_denies(since_hours=26)¶
同じ内容を preview(ドライラン)モードのルールについて返します。
home_region_denies(since_hours=26)¶
送信元 IP が CLOUDARMOR_HOME_REGION に属する enforce 遮断を返します。
known_normal_priorities の優先度は件数として集約・抑制し、それ以外は送信元 IP と
リクエスト URL 付きで列挙します(最大40行、超過分は件数表示)。自リージョンが
未設定の場合はエラーではなく、その旨の文を返します。
health_check()¶
キー構成が常に一定の dict を返します。監視側でキーの有無を分岐する必要がありません。
| キー | 意味 |
|---|---|
status |
healthy(設定+プローブ成功)/degraded(設定は OK・プローブ失敗)/error(設定が使えない) |
service |
常に cloudarmor-mcp |
version |
パッケージのバージョン |
project |
解決されたプロジェクト ID、または null |
backend_services |
解決されたフィルタ一覧 |
home_region |
解決されたリージョンコード、または null |
rules_ini |
中身のあるルール INI を読み込めた場合に true |
probe |
ok、または失敗理由 |
環境変数¶
| 変数 | 必須 | 既定 | 意味 |
|---|---|---|---|
CLOUDARMOR_PROJECT |
○ | — | ロードバランサのログが入る GCP プロジェクト ID |
GOOGLE_APPLICATION_CREDENTIALS |
○ | — | サービスアカウント鍵のパス(roles/logging.viewer) |
CLOUDARMOR_BACKEND_SERVICES |
全て | バックエンドサービス名(カンマ区切り) | |
CLOUDARMOR_HOME_REGION |
無効 | 誤検知レンズで使う ISO リージョンコード | |
CLOUDARMOR_RULES_INI |
なし | ルールのラベルと known-normal 優先度 | |
CLOUDARMOR_MAX_ENTRIES |
2000 | 1クエリあたりの取得件数。解釈できない値は既定にフォールバック |
CLI¶
cloudarmor-mcp # stdio で MCP サーバーとして起動
cloudarmor-mcp --version # バージョンを表示して終了
cloudarmor-mcp --check # 設定と API アクセスを確認
cloudarmor-mcp --brief # daily_brief を標準出力へ
cloudarmor-mcp deny-export --date YYYY-MM-DD [--tz ZONE] [--kind both|enforced|preview] [--max-entries N] [--backend a,b]
# 1 日分の DENY エントリーを JSON で(README 参照)
cloudarmor-mcp traffic-export --date YYYY-MM-DD [--tz ZONE] [--sample RATE] [--max-entries N] [--backend a,b]
# 1 日分の全リクエストを間引いて JSON で(README 参照)
終了コード:
| コマンド | 0 | 1 | 2 |
|---|---|---|---|
--check |
healthy | CLOUDARMOR_PROJECT 未設定 |
degraded(プローブ失敗) |
--brief |
全セクションを描画 | いずれかのセクションのクエリが失敗 | — |
deny-export |
書き出した | Cloud Logging のクエリが失敗(標準出力に途中までの文書が残ることがある)、または読み手が標準出力を閉じた | 使い方・設定の誤り。CLOUDARMOR_PROJECT 未設定、クライアントを作れない(認証情報)、まだ終わっていない日を含む |
traffic-export |
書き出した | deny-export と同じ |
deny-export と同じ。範囲外の --sample(0.000001〜1 の外)も含む |
--brief は cron やスモークテストに向いた形です。終了コードが非ゼロかどうかで
「WAF が静かだった」のか「ログを読めなかった」のかを区別できます。テキストの
レポートだけでは区別がつきません。
traffic-export の文書¶
形とレコードの項目は deny-export と同じで、違いは次のとおりです。
| 項目 | 意味 |
|---|---|
schema |
cloudarmor-mcp/traffic-export/1 |
sample |
sample(insertId, ...) に渡した割合。kind の代わりに入る |
entries[] |
間引いて残った、ロードバランサーの全リクエスト(許可・拒否・キャッシュからの応答) |
entries[].cache_hit |
CDN のキャッシュから返したとき true(deny-export のレコードにも入るが、実際には常に false) |
entries[].enforced |
バックエンドのセキュリティポリシーが評価しなかったとき(CDN のキャッシュ命中など)null。そのとき region と asn も null。キャッシュ命中かどうかは cache_hit で見分ける |
capped |
deny-export と同じ。true のときは古い順に読んだ 1 日の前半だけなので、1 / sample 倍しない |
ログフィルタ¶
参考までに、サーバーが組み立てる Cloud Logging フィルタは次の形です。
resource.type="http_load_balancer"
jsonPayload.enforcedSecurityPolicy.outcome="DENY"
[jsonPayload.securityPolicyRequestData.remoteIpInfo.regionCode="JP"]
[resource.labels.backend_service_name="..." | =("a" OR "b")]
timestamp >= "<RFC3339 UTC>"
preview のクエリでは outcome の行が
jsonPayload.previewSecurityPolicy.configuredAction="DENY" に置き換わります。
エントリは新しい順に取得します。
traffic-export は outcome の行を持たず、1 日の範囲(timestamp >= と timestamp <)の後ろに
sample(insertId, RATE) を付けます(RATE が 1 のときは付けません)。エントリは古い順に取得します。