この記事は ウィルゲート Advent Calendar 2022 21 日目の記事です。
セキュリティ上の観点から、AWS CloudTrailの証跡ログの中でAWS IAM関連の操作履歴をSlackに通知したいと言う要望があったので、AWSさんの記事を参考に、AWS IAMの操作履歴をSlackに通知する仕組みを作りました。
今回はその作業工程を書いていきます。
通知方法を決める
- Amazon CloudWatchを使う方法
- Amazon EventBrigeを使う方法
いろいろ調べてみると上記の方法があるらしいとのことで、今回はAmazon EventBrigeを使用してAWS CloudTrailの証跡ログの中からIAMの操作履歴をSlackに通知するような仕組みを作成することに決めました。
構成図を作成する

構成図としてはとても簡単ですが、AWS IAM関連のAWS CloudTrailの証跡は「米国東部 (バージニア北部) us-east-1」に出力されるので、Amazon EventBridgeとAmazon SNSもus-east-1上に作る必要があります。
作業
AWS CloudTrailの証跡をAmazon S3に残す設定
基本的に下記の画像のようにログ記録をしておく状態になっているはずです。
もし、なっていない場合は「証跡の作成」から設定をしてください。
ログ記録をしていない場合でもAWS CloudTrailのイベント履歴は見ることができます。
ですが、通知は送ることはできません。

Amazon SNSを設定
タイプ、名前、表示名を入力しAmazon SNSトピックを作成します。

Chatbotを設定
Slackに通知をするので、[新しいクライアントを設定]からSlackの設定を行います。

クライアントの設定が終わったら[新しいチャネルを設定]から設定を行います。

Amazon EventBridgeを設定
Amazon EventBrigeの設定はAWSのドキュメントを参考に行います。
1.リージョンを[バージニア北部]にし、[ルール]を選択します。

2.[ルールを作成]を選択します。

3.名前、説明を入力します。イベントパスは[default]、ルールタイプは[イベントパターンを持つルール]で大丈夫です。

4.イベントソースは[AWS イベントまたは EventBridge パートナーイベント]を選択します。

5.作成のメソッドを[パターンフォームを使用する]を選択し、イベントパターンに通知したい項目を考えて入力します。

今回使用したイベントパターン
{
"source": ["aws.iam"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["iam.amazonaws.com"],
"eventName": ["CreateUser", "CreateLoginProfile", "UpdateLoginProfile", "CreateAccessKey", "UpdateAccessKey", "DeleteAccessKey", "DeleteLoginProfile", "DeleteUser", "CreateRole", "UpdateAssumeRolePolicy", "DeleteRole", "CreatePolicy", "CreatePolicyVersion", "CreatePolicyVersion", "DeletePolicy"]
}
}
参考
6.ターゲットは[AWSのサービス]を選択し、先ほど作成したSNSトピックを選択します。

7.タグを設定したら設定完了です。
最後に
設定完了後、試しにIAM Userを作成してみたところ無事。Slackへ通知が行われました。

今後、不正な操作があった場合に早期発見ができる状況を作成できたと思います。
「ウィルゲート Advent Calendar 2022」、翌日は
高萩尚明さんの「デザイン思考について」です!