Security HubのイベントをAWS ChatbotでSlackへ通知

記事タイトルとURLをコピーする

表題の通りです。 Security Hubで検出されたアレやコレをSlackに流し込むようにします。

AWS Chatbot が一般公開されました!の記事では、CloudWatchアラームの内容をSlackに流していましたが、今回はCloudWatchイベントの内容をSlackに流します。

全体構成はこんなイメージ

Security Hubで集約したセキュリティ系イベントを自動的にSlackに通知したい場合、残念ながら直接はできません。 EventBridge、SNS、そしてAWS Chatbotを経由する必要があります。

1.SNS Topic作成

SNS Topicを作成します。 Topicの名前は指定する必要がありますが、その他のSubscription等の設定は不要です。

2.Event Bridge作成

イベントルール名 EventBridgeでイベントルールを作成します。 適当なルール名をつけます。

パターンを定義 Security Hubのイベントでフィルタするためにパターンを指定します。 今回はSecurity Hubの全イベントを対象にしてみました。

{
  "source": [
    "aws.securityhub"
  ]
}

ターゲットを選択 先ほど作成したSNS Topicへ転送されるようにターゲットを指定します。

3.AWS Chatbotの設定

AWS Chatbot > 設定済みクライアント > 新しいクライアントを設定

クライアントとしてSlackを指定

Slackワークスペースにログイン ブラウザでSlackにログインしていない場合は、ログイン画面へのリダイレクトが発生します。

Slackワークスペースへアクセスする権限を与える いろいろ書いてありますが、権限をカスタマイズはできず、AllowかCancelかの2択となります。

なお、このタイミングでSlackに登録しているメールアドレスに通知メールが送られてきます。 AWS Chatbotがワークスペースにインストールされたという内容になります。

AWS Chatbotの設定画面に自動的に戻ってきます。

AWS Chatbot > 設定済みクライアント > Slackワークスペース: > 新しいチャネルを設定

設定名

Slackチャネル 通知を流すチャネルを指定します。

アクセス許可 AWS ChatbotのサービスにアタッチするIAMロールを作成します。

デフォルトでは、ポリシーテンプレートが「通知のアクセス許可」となっています。今回はそのままで問題ありません。

なお、「通知のアクセス許可」の実際のポリシーは以下となります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "cloudwatch:Describe*",
                "cloudwatch:Get*",
                "cloudwatch:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

ちなみに説明を読むと、 AWS ChatbotがAmazon CloudWatchからメトリクスグラフを取得できるようになります。 とありますね。 今回はメトリクスグラフは関係ないので、このポリシーは削除してしまっても構いません。

通知 作成したSNS Topicを指定します。

4.Slackチャネルに@awsをinvite

このようなメッセージが表示されます。

メッセージに従い、AWS Chatbotで指定したチャネルの中で /invite @aws を実行しましょう。

これで設定完了です。

5.動作確認

Security Hubの検出結果がSlackに通知されるようにできました。

渡辺 信秀 (記事一覧)