新しくなった Security Hub の検出結果をフィルタして通知したい

新しくなった Security Hub の検出結果をフィルタして通知したい

2026.02.11

はじめに

コンサルティング部のぐっさんです。

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 のフィルタ設定に関しては以下の記事を参照ください。

https://dev.classmethod.jp/articles/filter-security-hub-notifications-by-severity/

新しい Security Hub の機能等の概要についてはこちらを参照ください。

https://dev.classmethod.jp/articles/security-hub-ga-awsreinvent-regrowth/

構成

簡単な構成イメージです。

ach

GuardDuty、Inspector、Macie など各種セキュリティサービスの検出結果が Security Hub に集約されるため、EventBridge でフィルタをかけて条件に合致した Findings のみを SNS 経由で Slack に通知します。なお Security Hub の CSPM 機能(従来の Security Hub )による検出も含まれます。
SNS のサブスクリプションにメールアドレスを設定すればメール通知も可能です。


新 Security Hub のイベント形式

新 Security Hub では、イベント結果のフォーマットが OCSF(Open Cybersecurity Schema Framework) に変更されました。

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-ocsf.html

主な変更点

項目 従来(ASFF) 新(OCSF)
イベントタイプ Security Hub Findings - Imported Findings Imported V2
重大度のキー Severity.Label severity(小文字)
重大度の値 CRITICAL, HIGH 等 Critical, High 等(アッパーキャメル)

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-v2-cwe-event-types.html


EventBridge フィルタパターンの書き方

基本:重大度でフィルタ

High の Findings のみ通知する場合

{
  "source": ["aws.securityhub"],
  "detail-type": ["Findings Imported V2"],
  "detail": {
    "findings": {
      "severity": ["High"]
    }
  }
}

ポイント

  • detail-typeFindings Imported V2 に変更
  • severity が小文字
  • 値は High(アッパーキャメルケース)

大文字小文字を無視する

小ネタですが EventBridge のフィルタパターン演算子である equals-ignore-case を使うと、大文字小文字を無視してマッチできました。

{
  "source": ["aws.securityhub"],
  "detail-type": ["Findings Imported V2"],
  "detail": {
    "findings": {
      "severity": [{
        "equals-ignore-case": "high"
      }]
    }
  }
}

https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-create-pattern-operators.html#eb-filtering-equals-ignore-case-matching

複数の重大度(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 または Critical
  • metadata.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 に定義したルールと重複しているかどうかを確認します。

重複している場合は、古いルールを無効化または削除で良さそうです。

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-v2-eventbridge-automations.html


Slack 通知の実例

実際に通知されると、Slack 上では以下のように表示されます。
ちなみに EventBridge では、ターゲットに Chatbot と紐づく SNS トピックを指定したのみで特に Lambda 等の処理は挟んでいません。だいぶシンプルですね。

slack

通知には検出結果 ID が含まれています。この ID を使って Security Hub コンソールから該当の検出結果を確認できました。

コンソール左ペインの「すべての検出結果」の画面で、通知された値でフィルタして検索します。

sh_1

sh_2

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

sh_3


まとめ

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


参考リンク

この記事をシェアする

FacebookHatena blogX

関連記事