Security Command Centerの検出結果をBigQueryへエクスポートしてSQLで分析する

Security Command Centerの検出結果をBigQueryへエクスポートしてSQLで分析する

2026.01.26

はじめに

こんにちは。
クラウド事業本部コンサルティング部の渡邉です。

Google Cloud環境のセキュリティ管理において、Security Command Centerは非常に重要なサービスです。SCCで検出された脆弱性や脅威の情報を、より詳細に分析したいと思ったことはありませんか?

今回は、Security Command Center Premiumの検出結果をBigQueryへエクスポートし、SQLを用いて分析する方法について解説します。

Security Command CenterのBigQueryエクスポートとは

BigQueryエクスポートとは、SCCで検出された脆弱性や脅威の情報をBigQueryのテーブルにエクスポートする機能です。BigQueryにエクスポートすることで、以下のようなメリットがあります。

  • SQLを使用した柔軟な検出結果の検索・分析
  • 長期間の検出結果の保持と履歴分析
  • Looker Studioなどと連携したダッシュボードの作成
  • 他のデータソースとのクロス分析

SCCのコンソール上でも検出結果を確認することはできますが、大量の検出結果を効率的に分析したい場合や、カスタムレポートを作成したい場合には、BigQueryエクスポートが非常に有効です。

BigQueryエクスポートの仕組み

SCCのBigQueryエクスポートには、以下の2種類があります。

エクスポート種別 説明
継続的エクスポート 新しい検出結果や更新された検出結果をリアルタイムでBigQueryにエクスポートする
1回限りのエクスポート 特定の時点での検出結果をエクスポートする

今回は、継続的に検出結果を収集・分析することを想定し、継続的エクスポートの設定方法を紹介します。

アーキテクチャ

BigQueryエクスポートのアーキテクチャは以下のようになります。
SCCで検出された脆弱性や脅威は、継続的エクスポートの設定に基づいてBigQueryへ自動的にストリーミングされます。ユーザはBigQuery上でSQLを用いて検出結果を検索・分析することができます。

alt text

事前準備

必要なIAM権限

BigQueryエクスポートを設定するには、以下のIAM権限が必要です。

ロール 説明
セキュリティセンター管理者 (roles/securitycenter.admin) または BigQueryエクスポート編集者 (roles/securitycenter.bigQueryExportsEditor) SCCのエクスポート設定を管理する権限
BigQuery データオーナー (roles/bigquery.dataOwner) BigQueryデータセットへの書き込み権限

BigQueryデータセットの作成

エクスポート先となるBigQueryデータセットを事前に作成しておく必要があります。

# BigQueryデータセットの作成
bq mk --dataset \
    --location="US" \
    --description="Security Command Center Findings" \
    $GOOGLE_CLOUD_PROJECT:scc_findings

alt text

BigQueryエクスポートの設定

gcloudコマンドからの設定

gcloudコマンドを使用して、BigQueryエクスポートを設定していきます。

# 組織レベルでのBigQueryエクスポート設定
gcloud scc bqexports create scc-findings-export \
    --organization=ORGANIZATION_ID \
    --dataset=projects/$GOOGLE_CLOUD_PROJECT/datasets/scc_findings \
    --location=global \
    --filter='state="ACTIVE" AND NOT mute="MUTED" AND (severity="HIGH" OR severity="CRITICAL")' \
    --description="SCC findings export"

フィルタを設定して、特定の検出結果のみをエクスポートすることも可能です。

エクスポート設定の確認

設定が完了したら、以下のコマンドでエクスポート設定を確認することができます。

# エクスポート設定の一覧を表示
gcloud scc bqexports list \
    --organization=ORGANIZATION_ID \
    --location=global

エクスポート設定後、新しい検出結果が発生すると自動的にBigQueryにストリーミングされます。

BigQueryで検出結果を分析してみた

BigQueryにエクスポートされた検出結果を、SQLを使用して分析してみます。
エクスポートされると、データセット内にfindingsテーブルが自動的に作成されます。

テーブルスキーマの確認

findingsテーブルには、検出結果に関する詳細な情報が格納されています。主要なカラムは以下のとおりです。

カラム名 説明
source_id STRING 検出ソースの一意識別子
finding_id STRING 検出結果の一意識別子
event_time TIMESTAMP イベント発生時刻
bulk_export_id STRING 1回限りのエクスポートの場合の一意識別子
finding RECORD 検出結果の詳細情報(ネストされた構造)
resource RECORD 対象リソースの情報(ネストされた構造)

findingカラムには、以下のようなサブフィールドが含まれています。

サブフィールド 説明
finding.category 検出結果のカテゴリ(例: OPEN_FIREWALL, PUBLIC_BUCKET_ACL)
finding.severity 重大度(CRITICAL, HIGH, MEDIUM, LOW)
finding.state 状態(ACTIVE, INACTIVE)
finding.create_time 検出結果の作成日時
finding.mute ミュート状態(MUTED, UNMUTED)

resourceカラムには、以下のようなサブフィールドが含まれています。

サブフィールド 説明
resource.name 対象リソースの完全なリソース名
resource.project_name プロジェクト名
resource.type リソースタイプ

分析クエリの例

いくつかの分析クエリ例を紹介します。

1. カテゴリ別の検出結果を集計

SELECT
  finding.category AS category,
  finding.severity AS severity,
  COUNT(*) AS finding_count
FROM
  `PROJECT_ID.scc_findings.findings`
WHERE
  finding.state = 'ACTIVE'
GROUP BY
  category, severity
ORDER BY
  finding_count DESC
LIMIT 20;

どのような種類の脆弱性が多く検出されているかを把握することができます。

SCC_BQ_Export02

2. プロジェクト別の検出結果数を集計

SELECT
  resource.project_display_name AS project_name,
  finding.severity AS severity,
  COUNT(*) AS finding_count
FROM
  `PROJECT_ID.scc_findings.findings`
WHERE
  finding.state = 'ACTIVE'
GROUP BY
  project_name, severity
ORDER BY
  finding_count DESC;

組織内のどのプロジェクトに脆弱性が集中しているかを特定することができます。

SCC_BQ_Export03

3. 直近7日間の検出結果のトレンドを分析

SELECT
  DATE(event_time) AS detection_date,
  finding.severity AS severity,
  COUNT(*) AS finding_count
FROM
  `PROJECT_ID.scc_findings.findings`
WHERE
  event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
GROUP BY
  detection_date, severity
ORDER BY
  detection_date DESC, severity;

検出結果のトレンドを時系列で分析することで、セキュリティ状況の変化を把握することができます。

SCC_BQ_Export04

4. 未対応のCRITICAL/HIGH重大度の検出結果一覧

SELECT
  finding_id,
  finding.category AS category,
  finding.severity AS severity,
  resource.name AS resource_name,
  FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', event_time, 'Asia/Tokyo') AS event_time_jst
FROM
  `PROJECT_ID.scc_findings.findings`
WHERE
  finding.state = 'ACTIVE'
  AND finding.severity IN ('CRITICAL', 'HIGH')
ORDER BY
  CASE finding.severity WHEN 'CRITICAL' THEN 1 ELSE 2 END,
  event_time DESC
LIMIT 100;

優先的に対応が必要な検出結果を一覧化し、是正対応の優先順位付けに活用することができます。

SCC_BQ_Export05

Looker Studioでのダッシュボード化

BigQueryにエクスポートされた検出結果は、Looker Studioと連携してダッシュボードを作成することもできます。
ダッシュボードを作成することで、以下のようなメリットがあります。

  • リアルタイムでセキュリティ状況を可視化
  • ステークホルダーへの定期報告の効率化
  • トレンド分析による異常検知

今回はLooker Studioでのダッシュボードでの可視化は行いませんので、詳細な手順については、別途検証します。

料金について

BigQueryエクスポートを利用する際のコストは以下のとおりです。BigQueryでのSQLでの分析コストや、ストレージコストはかかりますが、SCCでのBigQueryへのエクスポートは無料で利用することができますので気軽に利用することができると思います。

項目 料金
SCC BigQueryエクスポート 無料(SCCの機能として提供)
BigQuery ストレージ データ量による(最初の10GB/月は無料)
BigQuery クエリ クエリ量による(月1TB無料)

BigQueryの料金詳細については、以下の公式ドキュメントをご確認ください。

https://cloud.google.com/bigquery/pricing?hl=ja

最後に

今回は、Security Command Center Premiumの検出結果をBigQueryへエクスポートし、SQLを用いて分析する方法を紹介しました。

BigQueryエクスポートを活用することで、SCCの検出結果をより柔軟に分析することができます。特に、組織全体のセキュリティ状況を把握したい場合や、定期的なセキュリティレポートを作成したい場合には非常に有効な機能です。

また、Premium Tierを利用している場合は、Event Threat DetectionやContainer Threat Detectionなどの高度な脅威検出機能の結果もBigQueryにエクスポートすることができるため、より包括的なセキュリティ分析が可能になります。

ぜひ、SCCのBigQueryエクスポート機能を活用して、組織のセキュリティガバナンスを強化してください。

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部コンサルティング部の渡邉でした!

この記事をシェアする

FacebookHatena blogX

関連記事