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

AWS運用自動化サービス「Cloud Automator」

表題の通りです。
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の全イベントを対象にしてみました。

ターゲットを選択
先ほど作成した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ロールを作成します。

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

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

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

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

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

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

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

これで設定完了です。

5.動作確認

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

AWS運用自動化サービス「Cloud Automator」