CloudTrailとCloudWatchLogsを使用してIAM関連イベントの通知

エンタメ系企業の社内もろもろを担当しているakibinです。

最近はハマっている[Summer FeelingsのPV](https://www.youtube.com/watch?v=ciYqExAGO24)がシティ・ポップぽくていい感じ。あー遊びに行きたいよ早くワクチン打たせてくれ！（年代バレる）

# やりたいこと
IAM関連の操作がされた場合にメール通知してほしいと思いました。
IAM関連の作業はセキュリティインシデントに直結しますが、複数人で管理者やってる場合や、SDKの作業でどうしても開発者がIAMロールいじらないといけない場合など、念の為どんな作業してるか把握するためです。

これを実現するのにCloudTrailの証跡を作成する必要があり、証跡はS3に保存されるので、S3への保存費用が発生します。

# 作業の流れ
* CloudTrailに証跡を作成
    * それ用のCloudWatchLogsも同時に作成
* CloudWatchLogsでメトリクスフィルターを設定
* 作成したメトリクスフィルターにアラートを設定

# 前提条件
Amazon SNSでメール通知用の設定がされている前提です。設定したことが無い方は以下の記事がわかりやすいので参照して作成してください。
[[基本操作]Amazon SNSでメールを送信する](https://dev.classmethod.jp/articles/amazon-sns-2017/)

# CloudTrailに証跡を作成（それ用のCloudWatchLogsも同時に作成）
1. CloudTrail > [証跡] > [証跡の作成]をクリック
1. [全般的な詳細]を入力
    * 証跡名：任意の名前
    * ストレージの場所：今回は新しいS3を作成
    * ログファイルのSSE-KMS暗号化：今回はなし（必要であれば暗号化実施してください）
    * ログファイルの検証：有効
    * SNS通知の配信：なし（SNSとの紐付けはCloudWatchLogsで実施します）
![スクリーンショット 2021-07-15 15.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/0c9534fd-48d3-3c06-ad08-54ccaed39e5d.png)
3. CloudWatch Logsにチェック
    * ロググループ、IAMロールはどちらも新規に作成、任意の名前を入れる
![スクリーンショット 2021-07-15 15.15.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/daa938ac-c870-3529-1e9d-c9438c544125.png)
4. 次に進んで、[ログイベントを選択]
    * IAM関連の操作のみが対象なので、今回は管理イベントのみでOKです。
    * 管理イベントのAPIアクティビティはデフォルトの[読み取り]と[書き込み]でOK
![スクリーンショット 2021-07-15 15.17.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/b020c6d2-a4a2-c683-e039-4a606761cdcd.png)
5. 次に進んで、[確認と作成]で内容を確認して[証跡を作成]

# CloudWatckLogsでメトリクスフィルターを設定
1. 先程CloudTrailで作成したロググループを開き、[メトリクスフィルター]から[メトリクスフィルターを作成]をクリック
![スクリーンショット 2021-07-15 18.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/b1b31745-b41f-123b-88f6-516d70921cda.png)
2. [パターン定義]のフィルターパターンに`{ $.eventSource = "iam.amazonaws.com" }`を入力して[Next]
![スクリーンショット 2021-07-15 19.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/a6520438-6eb8-2ead-e2df-015bb105eda2.png)
3. [メトリクスの割り当て]で各項目を入力して[Next]
    * フィルター名（任意の名前）：`IAM_Changes`
    * メトリクス名前空間（任意の名前）：`CloudTrailMetrics`
    * メトリクス値：`1`
    * デフォルト値：`0`
![スクリーンショット 2021-07-15 19.07.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/769b7f79-09ab-6b48-9179-b89a74537bd2.png)
4. 設定内容を確認して[メトリクスフィルターを作成]
![スクリーンショット 2021-07-15 19.12.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/c513ab06-0b91-091d-4eca-52e72101e511.png)

# 作成したメトリクスフィルターにアラートを設定
1. 作成したメトリクスフィルターにチェックを入れ、[アラームを作成]
![スクリーンショット 2021-07-15 19.17.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/b3e72872-12a8-1336-2322-54fe7e486bdd.png)
2. デフォルト以外は以下を設定して[次へ]
    * 統計：`最大`
    * しきい値：`0`
    * 欠落データの処理：`欠落データを適性として処理`
![スクリーンショット 2021-07-15 20.07.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/d61397ba-685d-1c82-c2a0-d20f124c1858.png)

3. [アクションの設定]で事前に作成したSNSを選択して[次へ]
![スクリーンショット 2021-07-15 19.25.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/508e435c-ba34-a6b9-d7a1-57b0b4cd8e4a.png)
4. 任意の[アラーム名]を入力して[次へ]
![スクリーンショット 2021-07-15 19.29.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/50ef3de0-b338-9bd6-63d8-b17f7519cb96.png)
5. プレビューを確認、問題なければ[アラームの作成]

![スクリーンショット 2021-07-15 19.31.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/14e4bbd3-bc64-5085-b7f1-0c2506dbfa0a.png)

# 動作確認
試しにIAMユーザを作成。
![スクリーンショット 2021-07-15 19.34.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/5273a935-18c0-0b14-d14f-02e23f8b52e5.png)

きっちりアラームがメールで飛んできました！
![スクリーンショット 2021-07-15 19.59.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/6f5b78aa-ec20-d7e0-b5b8-e1696f15e049.png)


# おまけ？
ちなみに、CloudCloudWatchEventsでもCloudTrailと連携してEC2関連のイベントとかの通知が可能なようですが、サービス名にIAMを選択できなかったので、IAM関連はいけないっぽい？なので、今回はCloudWatchLogsと連携で設定しました。もしEventsでも可能という方、教えてください！
![スクリーンショット 2021-07-15 15.24.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/fd2ba8af-9d19-dafd-db54-b1b85a8ad475.png)

# こちらもチェックお願いします！
[Twitterアカウント](https://twitter.com/akibinmusic)
[Youtubeチャンネル](https://www.youtube.com/channel/UC-JOpwEnJn3gCrUA4NdCYgg)