Security Hubの通知を重要度でフィルタリング設定する

2022.02.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Security Hubの通知を実装している方で、メール件数が多くて次第に見なくなってしまった方も多いのではないでしょうか。

そんなときは、イベントを検知するEventBridgeルールに重要度のフィルタリングを入れることでノイズとなる通知を減らすことを検討してみて下さい。

まず初めに

既に通知するためのEventBridgeルールが作成されていることを想定していますので、通知設定をしたい方は以下のブログをご参照ください。

他のフィルタリング例も知りたい方はこちらをご参照ください。

Security Hubの重要度について

Security Hubのセキュリティチェックには項目ごとに以下5つの重要度が設定されています。

  • INFORMATIONAL— 問題は見つかりませんでした。
  • LOW— この問題は単独で対処する必要はありません。
  • MEDIUM— この問題は対処する必要がありますが、緊急ではありません。
  • HIGH— この問題は優先事項として対処する必要があります。
  • CRITICAL— この問題はエスカレートしないようすぐに修正する必要があります。
    – 引用:ASFF の属性 - AWS Security Hub

Security Hubのコンソールで確認してみると、重要度と表記されている部分が該当します。

この重要度を全て通知するように設定してしまうと環境にもよりますが、毎日大量のメールやSlack通知が飛んできてしまいます。そのため、まずは重要度が高く優先して対応が必要なもの(HIGH、CRITICAL)に絞って通知するように変更します。

重要度でフィルタリングしてみる

私の環境ではSecurity Hubを東京リージョンに結果を集約しているため、EventBridgeのルールも東京リージョンに作成しています。

EventBridgeのコンソールから左のナビゲーションバーで「ルール」を開きます。

イベントバスはdefaultのまま、検知に使用しているルールを開きます。(弊社のセキュアアカウントを利用している場合はルール名「cm-securityhub-alert-rule」で検索して下さい。)

通知に使用しているイベントパターンを編集するため、画面右上の編集をクリックします。

編集画面の[パターンを定義]というセクションに現状設定されているイベントパターンが記載されています。ここの中身を少しだけ変更します。

AWS 基礎セキュリティのベストプラクティス v1.0.0でチェックに失敗したものを全て通知するように設定していたのが以下の通りです。

{
  "source": ["aws.securityhub"],
  "detail-type": ["Security Hub Findings - Imported"],
  "detail": {
    "findings": {
      "Compliance": {
        "Status": ["FAILED", "WARNING", "NOT_AVAILABLE"]
      },
      "RecordState": ["ACTIVE"],
      "Workflow": {
        "Status": ["NEW"]
      },
      "ProductFields": {
        "StandardsArn": ["arn:aws:securityhub:::standards/aws-foundational-security-best-practices/v/1.0.0"]
      },
      "Severity": {
        "Label": ["LOW", "MEDIUM", "HIGH", "CRITICAL", "INFORMATIONAL"]
      }
    }
  }
}

編集する場合は、重要度でフィルタリングしたい場合は、Severity.Labelの値を変更する必要があります。そのため[編集]をクリックして編集状態にします。

今回は通知するものとして、直ちに修正が必要なHIGHCRITICAL のみを通知させたいので、Severity.Labelをこの二つだけに絞りました。

AWS 基礎セキュリティのベストプラクティス v1.0.0を有効化していて、同じように重要度の高いものだけに通知を絞りたい方はそのままコピー&ペーストしてご利用下さい。

{
  "source": ["aws.securityhub"],
  "detail-type": ["Security Hub Findings - Imported"],
  "detail": {
    "findings": {
      "Compliance": {
        "Status": ["FAILED", "WARNING", "NOT_AVAILABLE"]
      },
      "RecordState": ["ACTIVE"],
      "Workflow": {
        "Status": ["NEW"]
      },
      "ProductFields": {
        "StandardsArn": ["arn:aws:securityhub:::standards/aws-foundational-security-best-practices/v/1.0.0"]
      },
      "Severity": {
        "Label": ["HIGH", "CRITICAL"]
      }
    }
  }
}

上記のように変更した後、イベントパターンを保存します。修正時に構文エラーがなければ保存できるはずです。

そのまま一番下までスクロールして[更新]をクリックすれば変更内容を保存できます。

更新後の画面でイベントパターンを確認してみると、更新内容が反映されていることを確認できますね。

今回はHIGHCRITICAL で絞りましたが、MEDIUMも通知したい場合は、Severity.Labelを以下のように定義すれば追加できます。利用している環境に合わせて通知する重要度を変更してみて下さい。

{
  "source": ["aws.securityhub"],
  "detail-type": ["Security Hub Findings - Imported"],
  "detail": {
    "findings": {
      "Compliance": {
        "Status": ["FAILED", "WARNING", "NOT_AVAILABLE"]
      },
      "RecordState": ["ACTIVE"],
      "Workflow": {
        "Status": ["NEW"]
      },
      "ProductFields": {
        "StandardsArn": ["arn:aws:securityhub:::standards/aws-foundational-security-best-practices/v/1.0.0"]
      },
      "Severity": {
        "Label": ["MEDIUM","HIGH", "CRITICAL"]
      }
    }
  }
}

通知を確認する

念のため通知できるか確認するためにEventBridgeの再生機能を使ってみました。

再生すると、以下のようなメールで重要度がHIGHCRITICAL のものだけが通知されました。

上記のメール内容は弊社提供のセキュアアカウントで通知されるメールです。(メールタイトルの緊急度は重要度がHIGHCRITICAL のものを「高」として扱っています。)

まとめ

大量の通知が飛んできてしまいがちなSecurity Hubのアラートを重要度でフィルタリングしてみました。重要度の高いものから対応することが大事なので、上手くフィルタリングしてSecurity Hubを運用して頂ければ幸いです。