表題の通りです。 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
を実行しましょう。
これで設定完了です。
5.動作確認
Security Hubの検出結果がSlackに通知されるようにできました。
渡辺 信秀(記事一覧)
2017年入社 / 地味な内容を丁寧に書きたい