Cloud Armor SQLi検知ログ分析環境の構築¶
ステータス:承認済み(開発中)
このPRDは承認され、現在開発が進められています。 👉 関連する開発チケット: https://linear.app/soarig/issue/SOA-66/cloud-armor-ログ管理
1. メタデータ¶
- 作成者: 秋田隼豊
- 作成日: 2026/03/26
- 承認日: 2026/03/27
2. 目的と背景 (Why)¶
- なぜこれを作るのか?:
現在、Cloud ArmorにてSQLインジェクション対策(
sqli-stable)をPriority 101でプレビューモード(deny設定だが実際は遮断せずログのみ出力)として設定している。 これは、正規のリクエストを誤って遮断するリスクを避けるためである。本番適用(プレビュー解除)に向けて、現在どのルールがどのようなリクエストに過剰反応しているかを洗い出し、除外ルール(excludedRules)を策定する必要がある。 しかし、現状は検知ログを効率的に集計・確認する環境がないため、この分析環境を構築する。 - 目指すゴール: プレビューモードで検知されたリクエストの傾向(どのシグネチャIDが、どのURLに対して、どれくらい反応しているか)をインフラ担当者が簡単に確認でき、誤検知の判定とチューニングをスムーズに行える状態にする。
3. ターゲットユーザー (Who)¶
- 誰のための機能か?:
- インフラストラクチャ担当エンジニア
- セキュリティ担当エンジニア
4. ユーザーメリットと想定効果 (Value & ROI)¶
- ユーザーが得られる価値:
- ログの海から手動でSQLiの検知ログを探し出す手間が省ける。
- どのシグネチャが誤検知を起こしやすいかが可視化され、チューニングの意思決定が迅速になる。
- 想定効果:
- WAFルールのチューニング工数の大幅削減。
- 正規ユーザーのアクセス遮断リスクを最小化しつつ、SQLi保護を本番稼働させるリードタイムの短縮。
5. 機能要件 (What)¶
- 主要な機能 / ユーザーストーリー:
- [インフラ担当者] は [SQLiルールの誤検知を特定] するために [プレビューモードで検知(deny評価)されたリクエストの一覧と詳細] を確認できる。
- [インフラ担当者] は [除外ルールを決定] するために [シグネチャID(例:
owasp-crs-v030001-id942200-sqli等)ごとの検知回数ランキング] を閲覧できる。 - 確認できる主なログ項目:
- アクセス元のIPアドレス
- リクエストURLパス
- ユーザーエージェント
- トリガーされたシグネチャIDとスニペット(どの文字列に反応したか)
6. 設計上の検討事項(未決定)¶
6-1. ログの分析基盤:BigQueryエクスポートするか否か¶
Cloud Armorの検知ログをBigQueryにエクスポートするか、Cloud LoggingのLog Explorerでクエリ検索するだけにとどめるかを検討する。
| BigQueryエクスポートあり | Log Explorerでクエリ検索のみ | |
|---|---|---|
| メリット | Looker Studioとの連携が容易でダッシュボード構築しやすい | 追加設定ゼロ・コストなし |
| パス別・シグネチャ別の集計が容易 | ||
| 長期保存・他のデータソースとのJOINが可能 | ||
| デメリット | ストレージ・クエリのコストが発生 | 集計ができないため傾向把握が困難 |
| ログシンクの設定が必要 | 件数が多いと手作業での分析が限界になる | |
| 向いているケース | パス単位で除外ルールを設定したい場合 / 継続的にダッシュボードを運用したい場合 | 件数が少なく目視で確認できる場合 |
→ 未決定。以下を確認してから判断する:
- チューニング完了後もダッシュボードを継続運用するか
- excludedRules をシグネチャID単位にするか、パス(URL)単位にするか(パス単位の場合はパス別集計が必要になるためBigQuery推奨)
→ BigQueryエクスポートで決定。
7. 非機能要件・やらないこと¶
- システム要件:
- 開発工数を最小化するため、アプリケーション側での専用管理画面の開発は行わない。
- Google Cloudネイティブなサービス(Cloud Logging, Log Analytics / BigQuery, Looker Studioなど)の組み合わせで実現する。
- 今回のスコープ外:
- SQLi以外のルール(XSS等)の分析ダッシュボード構築(まずはSQLiに絞る)。
- Terraformを通さない手動での
excludedRulesの適用(除外設定自体は引き続きIaCで管理する)。