【AWS】Security Hubの通知が多すぎる？負担を減らす対処法

# はじめに

Qiita Advent Calendarに連日で埋めてしまって焦っているところです。。

# AWS Security Hubとは？

ものすごく簡単にいうと、AWS のセキュリティチェックの自動化とセキュリティアラートの一元化するAWSサービス

参考）[AWS Security Hub の特徴](https://aws.amazon.com/jp/security-hub/features/?nc=sn&loc=2)

今回は、SecurityHubに一元化されたセキュリティアラートを自分のメールに通知させた時に、大量の通知がきた話をしようと思います！

# 今回設定した通知設定

AWS Security Hub → Amazon EventBridge → Amazon SNS
の流れで通知設定をしました！
Amazon EventBridgeのイベントパターンがこちらになります。

```
  {
    "source" : ["aws.securityhub"],
    "detail-type" : ["Security Hub Findings - Imported"],
    "detail" : {
      "findings" : {
        "Compliance" : {
          "Status" : ["FAILED", "WARNING"]
        },
        "RecordState" : ["ACTIVE"],
        "Severity" : {
          "Label" : ["CRITICAL", "HIGH", "MEDIUM"]
        },
        "Workflow" : {
          "Status" : ["NEW"]
        }
      }
    }
  }
```

# 大量の通知が来る理由

1. 通知レベルが広い
通知設定で"MEDIUM"レベル以上を対象にしていると、影響が小さめのイベントも含めて通知されるため、件数が増えがちです。

2. サービス統合が多い
AWS InspectorやConfigなど、他のAWSサービスと統合している場合、それぞれのサービスが独自の通知を出すため、さらに通知が増えます。
参考）[AWS のサービス と Security Hub との統合](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-internal-providers.html)

3. 検知サイクルのたびに通知が来る
SecurityHubは一定のサイクルでリソースをチェックします。そのたびに、同じ内容でも再度通知が来るため、結果として通知の量が増えます。

1と2はまあ仕方ないとしても、**3だけは正直許せない。**。同じ内容の通知が検知サイクルのたびに何度も飛んでくるのはさすがにストレス。ここはなんとかして対策を考えないとダメですね。

# 検知サイクルのたびに通知が来るのを阻止する方法

今回は、以下の二つのやり方とそれぞれの特徴についてまとめます。EventBridgeのイベントパターンで除外する方法もあるかと思いますが、一旦簡単にSecurityHubの機能で通知を抑制する方法を考えてみます。

- AWS Security Hub コントロールを無効化
- Security Hub 検出結果のワークフローステータスを「SUPPRESSED(抑制済み)」に変更


## 方法１：AWS Security Hub コントロールを無効化

![スクリーンショット 2024-12-07 19.31.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1611984/ca0dd25b-d022-a314-606d-6059febdc17f.png)

- 使い所
    - このコントロールに対して、既存リソース含めて**今後新規で作成されるリソースに対しても**対応しないことが決定されている場合
- 注意点
    - コントロールのセキュリティチェックは実行されなくなり、新規リソースに対しても検知してくれなくなる

参考）[Security Hub でのコントロールの無効化](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/disable-controls-overview.html)


:::note info
AWSで無効化が推奨されるコントロールがあります。スキャンしなくなりコストも抑えられるため、コントロールの無効化を検討してみても良い！
- マルチリージョンでSecurityHubを有効化している場合
    - 1 つのリージョンを除くすべてのグローバルリソースの記録を無効にする
    - 参考）[Security Hubのグローバルリソースに関するコントロールを無効化して不要なコストを削減しよう](https://dev.classmethod.jp/articles/reduce-costs-securityhub-global-resource-controls/)
- AWS CloudTrailのマルチリージョン集約設定をしている場合
- Amazon GuardDutyを使用している場合

参考）[Security Hub で無効化を推奨するコントロール](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/disable-controls-overview.html)
:::

## 方法２：Security Hub 検出結果のワークフローステータスを「SUPPRESSED(抑制済み)」に変更

![スクリーンショット 2024-12-07 20.20.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1611984/0ef14849-e91e-613b-2806-ea94bd0c9890.png)


- 使い所
    - 既存リソースに対して対応しないことが決定されている場合
    - 内容は把握しており、今後対応することが決まっている場合
- 注意点
    - スキャンを止めているわけではないので、スキャンにかかる料金が若干かかっていることを忘れずに


参考）[AWS Security Hub の料金](https://aws.amazon.com/jp/security-hub/pricing/)



:::note info
Q. 他のワークフローステータスの値[NOTIFIED(通知済み), RESOLVE(解決済み)]じゃダメなの？？
A. ダメではないですが、NEWにリセットされる可能性があります。


Security Hub は以下の場合に、ワークフローステータス NOTIFIED または RESOLVED を NEW にリセットします。
- RecordState が ARCHIVED から ACTIVE に変更した場合
- Compliance.Status が PASSED から FAILED 、WARNING、または NOT_AVAILABLE に変更した場合

参考）[Security Hub 検出結果のワークフローステータスの設定](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/findings-workflow-status.html)
:::

# まとめ

たくさんSecurityHubからの通知が来てしまい、他の重要な通知が埋もれてしまう可能性があるから、SecurityHubコントローラ無効化やワークフローステータスを変えようとしている所で、どちらの抑制方法を実施しようとしている方のお役に立てればと思います。

:::note warn
タスクのチケット化を忘れずに
対応が必要なSecurityHubからの通知に関してはチケットを発行してから、ワークフローのステータスを「SUPPRESSED(抑制済み)」にするのが良いかなと思います！
忘れないように、、
:::