表題の通りです。
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ワークスペースへアクセスする権限を与える
いろいろ書いてありますが、権限をカスタマイズはできず、AllowかCancelかの2択となります。
なお、このタイミングでSlackに登録しているメールアドレスに通知メールが送られてきます。
AWS Chatbotがワークスペースにインストールされたという内容になります。
AWS Chatbotの設定画面に自動的に戻ってきます。
AWS Chatbot > 設定済みクライアント > Slackワークスペース: > 新しいチャネルを設定
アクセス許可
AWS ChatbotのサービスにアタッチするIAMロールを作成します。
デフォルトでは、ポリシーテンプレートが「通知のアクセス許可」となっています。今回はそのままで問題ありません。
なお、「通知のアクセス許可」の実際のポリシーは以下となります。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*" ], "Effect": "Allow", "Resource": "*" } ] }
ちなみに説明を読むと、 AWS ChatbotがAmazon CloudWatchからメトリクスグラフを取得できるようになります。
とありますね。
今回はメトリクスグラフは関係ないので、このポリシーは削除してしまっても構いません。
4.Slackチャネルに@awsをinvite
メッセージに従い、AWS Chatbotで指定したチャネルの中で /invite @aws
を実行しましょう。
これで設定完了です。