新しくなった Security Hub の検出結果をフィルタして通知したい
はじめに
コンサルティング部のぐっさんです。
2025年12月に GA となった新しい Security Hub(2025年6月に Preview 開始)で通知設定を考える機会がありました。従来の Security Hub とはイベントフォーマットが異なるため、EventBridge のフィルタパターンの書き方が若干変わっています。
本記事では、新 Security Hub の検出を通知する際の EventBridge フィルタパターンの書き方 をまとめます。
今回通知先として Slack を使っていますが、SNS トピックや Amazon Q Developer in chat applications(旧 AWS Chatbot)のセットアップ手順は本記事では扱いません。
従来の Security Hub のフィルタ設定に関しては以下の記事を参照ください。
新しい Security Hub の機能等の概要についてはこちらを参照ください。
構成
簡単な構成イメージです。

GuardDuty、Inspector、Macie など各種セキュリティサービスの検出結果が Security Hub に集約されるため、EventBridge でフィルタをかけて条件に合致した Findings のみを SNS 経由で Slack に通知します。なお Security Hub の CSPM 機能(従来の Security Hub )による検出も含まれます。
SNS のサブスクリプションにメールアドレスを設定すればメール通知も可能です。
新 Security Hub のイベント形式
新 Security Hub では、イベント結果のフォーマットが OCSF(Open Cybersecurity Schema Framework) に変更されました。
主な変更点
| 項目 | 従来(ASFF) | 新(OCSF) |
|---|---|---|
| イベントタイプ | Security Hub Findings - Imported | Findings Imported V2 |
| 重大度のキー | Severity.Label | severity(小文字) |
| 重大度の値 | CRITICAL, HIGH 等 | Critical, High 等(アッパーキャメル) |
EventBridge フィルタパターンの書き方
基本:重大度でフィルタ
High の Findings のみ通知する場合
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"severity": ["High"]
}
}
}
ポイント
detail-typeがFindings Imported V2に変更severityが小文字- 値は
High(アッパーキャメルケース)
大文字小文字を無視する
小ネタですが EventBridge のフィルタパターン演算子である equals-ignore-case を使うと、大文字小文字を無視してマッチできました。
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"severity": [{
"equals-ignore-case": "high"
}]
}
}
}
複数の重大度(High と Critical)
High と Critical の両方を通知する場合はリストにします。
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"severity": [{
"equals-ignore-case": "high"
}, {
"equals-ignore-case": "critical"
}]
}
}
}
サービス別のフィルタパターン
新 Security Hub のコンソールは、検出結果を以下の5つのカテゴリに分類して表示します。
| コンソール上の分類 | 主な検出元 | metadata.product.name |
重大度の範囲 |
|---|---|---|---|
| 脅威(Threats) | GuardDuty | GuardDuty |
Low〜Critical |
| 脆弱性(Vulnerabilities) | Inspector | Inspector |
Informational〜Critical |
| 機密データ(Sensitive data) | Macie | Macie |
Low〜High |
| 体制管理(Posture management) | Security Hub(CSPM) | Security Hub |
Informational〜Critical |
| 露出(Exposure) | Security Hub(相関分析の結果) | Security Hub Exposure Detection |
Low〜Critical |
サービスごとに SNS トピックを分けたい場合などに、以下の metadata.product.name によるフィルタが使えます。
GuardDuty(脅威)の通知
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"activity_name": ["Create"],
"status": ["New"],
"severity": [{
"equals-ignore-case": "high"
}, {
"equals-ignore-case": "critical"
}],
"metadata": {
"product": {
"name": ["GuardDuty"]
}
}
}
}
}
フィルタ条件の説明
activity_name: Create- 新規 Findings の作成イベントstatus: New- ステータスが New のものseverity- High または Criticalmetadata.product.name- GuardDuty からの検出
Inspector(脆弱性)の通知
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"activity_name": ["Create"],
"status": ["New"],
"severity": [{
"equals-ignore-case": "high"
}, {
"equals-ignore-case": "critical"
}],
"metadata": {
"product": {
"name": ["Inspector"]
}
}
}
}
}
Security Hub CSPM(体制管理)の通知
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"activity_name": ["Create"],
"status": ["New"],
"severity": [{
"equals-ignore-case": "high"
}, {
"equals-ignore-case": "critical"
}],
"metadata": {
"product": {
"name": ["Security Hub"]
}
}
}
}
}
Macie(機密データ)の通知
Macie は S3 バケット内の機密データ(個人情報、クレジットカード番号等)を検出するサービスです。
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"activity_name": ["Create"],
"status": ["New"],
"severity": [{
"equals-ignore-case": "high"
}],
"metadata": {
"product": {
"name": ["Macie"]
}
}
}
}
}
Exposure(露出)の通知
Exposure は、複数サービスの検出結果を相関分析して出力されるため、通常は検出頻度が少ないです。また、そもそも出る時点でそれなりに重要な項目だと想定できるため、最初は検出状況を伺いつつ重大度フィルタなしで全件通知しても問題ないかもしれません。
{
"source": ["aws.securityhub"],
"detail-type": ["Findings Imported V2"],
"detail": {
"findings": {
"metadata": {
"product": {
"name": ["Security Hub Exposure Detection"]
}
}
}
}
}
運用上の注意点
旧ルールとの重複に注意
従来の Security Hub(CSPM)用に EventBridge ルールを設定している場合、新 Security Hub のルールと重複する可能性があります。
Security Hub CSPM の結果に EventBridge ルールが定義されている場合、ルールは Security Hub に定義されているルールと重複する可能性があります。結果が重複して送信されないようにするには、Security Hub CSPM に定義したルールを評価して、Security Hub に定義したルールと重複しているかどうかを確認します。
重複している場合は、古いルールを無効化または削除で良さそうです。
Slack 通知の実例
実際に通知されると、Slack 上では以下のように表示されます。
ちなみに EventBridge では、ターゲットに Chatbot と紐づく SNS トピックを指定したのみで特に Lambda 等の処理は挟んでいません。だいぶシンプルですね。

通知には検出結果 ID が含まれています。この ID を使って Security Hub コンソールから該当の検出結果を確認できました。
コンソール左ペインの「すべての検出結果」の画面で、通知された値でフィルタして検索します。


すると対象の検出が表示されました。詳細情報の検出結果 ID が一致しています。
メール通知よりもだいぶシンプルですが情報が絞られていてわかりやすいです。

まとめ
検出結果の形式が変わったことで従来の設定をそのまま使うとフィルタが効かないため、新しい Security Hub の検出イベントを使用する場合は設定見直しが必要です。
今回記事で扱ったパターンは実際に検証した内容を載せていますが、運用に合わせて適宜変更して使ってみていただけたらと思います。
最後までお読みいただきありがとうございました!






