コンテンツにスキップ

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で管理する)。