はじめに
Security Hubを使用し、Inspectorの脆弱性を重要度別に通知していたところパッケージの脆弱性(CVE)の通知が多く、その他の脆弱性が見えにくいという課題がありました。
実際の運用では、パッケージのHIGH通知が数百件ある一方で、ネットワーク到達性など運用現場でより優先度の高いイベントが埋もれ、見逃しそうになることがありました。
そこでEventBridgeのイベントパターンを使ってFindingのタイプごとに通知する重要度を変える設定で対応しました。以下に設定値と検証方法を記載します。
なお、実現した通知ポリシーは以下のとおりです。
- パッケージの脆弱性(CVE): CRITICALのみ通知
- その他の脆弱性(ネットワーク到達性など): HIGHとCRITICALを通知
調査: イベントのどのキーにタイプ情報があるか
EventBridgeのイベントパターンを組み立てるには、Security Hubから届くイベントのどこに「Findingの種類」が入っているかを把握する必要があります。
Security Hubで検出されたFindingのJSONを確認したところ、FindingProviderFields配下のTypes にタイプ情報があることが分かりました。
- パッケージの脆弱性:
Software and Configuration Checks/Vulnerabilities/CVE - その他の脆弱性(例):
Software and Configuration Checks/AWS Security Best Practices/Network Reachability
※EventBridgeに渡るイベントでは、このTypesがdetail.findings内の構造に含まれる形で届くため、パターンではdetail.findings配下でTypesを参照します。
イベントパターンの設計
上記を踏まえ、以下の方針でEventBridgeのイベントパターンを作成しました。
- CRITICAL → タイプに関係なくすべて通知する
- HIGH → パッケージ脆弱性(CVE)は対象外とし、それ以外の脆弱性を通知する
これを満たすイベントパターンは以下のとおりです。例ではInspector(ProductName: ["Inspector"])に絞っていますが、ここを変えれば他製品のFindingにもそのまま応用できます。
{
"source": ["aws.securityhub"],
"detail-type": ["Security Hub Findings - Imported"],
"detail": {
"findings": {
"ProductName": ["Inspector"],
"RecordState": ["ACTIVE"],
"Workflow": { "Status": ["NEW"] },
"$or": [
{
"Severity": { "Label": ["CRITICAL"] }
},
{
"Severity": { "Label": ["HIGH"] },
"Types": [
{
"anything-but": ["Software and Configuration Checks/Vulnerabilities/CVE"]
}
]
}
]
}
}
}
パターンの解説:
$orで「CRITICAL」か「HIGHかつCVE以外」のどちらかでマッチさせています。- HIGHのときだけ
anything-butで CVE を除外しているため、パッケージ脆弱性のHIGHは通知されず、それ以外のHIGHは通知されます。
EventBridgeのテスト機能によるイベントパターン検証
ルール反映前に、EventBridgeのイベントパターンテスト機能で動作確認を行いました。
検証内容、期待値、実行結果は以下のとおりです。
| 検証内容 | 期待値 |
|---|---|
| パッケージの脆弱性かつ重要度CRITICALのイベント | イベントパターンと一致 |
| パッケージの脆弱性かつ重要度HIGHのイベント | イベントパターンと一致しない |
| パッケージ以外の脆弱性かつ重要度CRITICALのイベント | イベントパターンと一致 |
| パッケージ以外の脆弱性かつ重要度HIGHのイベント | イベントパターンと一致 |
実行結果は、テスト実施時の画面を以下に示します。
- パッケージの脆弱性+CRITICAL: イベントパターンと一致することを確認しました。

- パッケージの脆弱性+HIGH: イベントパターンと一致しないことを確認しました。

- パッケージ以外+CRITICAL: イベントパターンと一致することを確認しました。

- パッケージ以外+HIGH: イベントパターンと一致することを確認しました。

さいごに
Security Hubの通知を「一律HIGH/CRITICAL」ではなく、Findingの種類や重要度ごとに通知先や通知有無を変えたい場合に、EventBridgeのイベントパターン($or と anything-but の組み合わせ)で実現できることが分かりました。
ProductNameやTypesの条件を変えれば、他のサービスや別タイプのFindingにも応用できますので、運用方針に合わせてカスタマイズしていただければと思います。