今回はAWS User Notifications サービスを利用しルートユーザーのコンソールログインをメール通知してみます。コンソールログインの通知はCloudTrail、EventBridge、SNSサービスを個々に利用することでも実現可能ですが、AWS User Notifications を利用すると、より簡単に構築でき、通知を見やすい形式で一元管理することも可能になります。
AWS User Notifications とは
AWSサービスからの通知を集約し、ユーザーに通知するためのマネージドサービスです。AWS Health イベント、Amazon CloudWatch アラーム、EC2 インスタンスの状態変化などの通知を簡単にセットアップでき、複数アカウント、複数リージョンに跨る情報を一元的に管理することが出来ます。
- 通知先はE メール、チャットボット、モバイルプッシュに対応
- 通知は専用のコンソールで一元管理される。CloudTrail→EventBrige→SNS通知と比較し、通知情報も見やすい形で提供される
- 通知内容のカスタマイズは出来ない
- 通知頻度の設定が可能(即時、10 分以内、または 12 時間以内)
- 複数アカウントへの通知も可能
- AWS User Notification自体は無料。ただし間接的に利用するEventBridgeなどの料金は発生する
事前準備
ルートユーザーのサインインイベント
今回はルートユーザーのサインイベント通知を行いますが、イベント検知にはCloudTrailログが必要になります。ルートユーザーのサインインイベントは「us-east-1」リージョンに記録される点に注意してください。
ルートユーザー以外のサインイベントを通知したい場合は、対象リージョンのCloudTrailログが必要になりますが、状態によって記録先が変わります。詳細は以下を参照してください。
AWS Management Console サインインイベント
CloudTrail証跡の有効化
サインインイベントはCloudTrailから検知するため、事前に「CloudTrail証跡」を有効にしておく必要があります。今回はルートユーザーのサインイベントを検知するために米国バージニア北部(us-east-1)でCloudTrail証跡を有効にしておきます。設定方法は以下を参照してください。
CloudTrail コンソールで証跡を作成する
AWS User Notificationsの設定
通知ハブの作成(データの保存先)
通知ハブはデータの保存先です。「AWS User Notifications」コンソールを開き、通知ハブを作成します。任意のリージョンを選択します。

配信チャンネルの設定(通知先)
配信チャンネルで通知先の設定を行います。
ここではEメールを設定します。「Eメール」の追加を押下して通知先のメールアドレスを設定してください。Chatbotを利用しSlackやTeamsなどへ通知することも可能です。

通知設定
通知設定を作成します。ここでどのようなイベントをどのようなルールでフィルタリングして通知するかを設定します。
名前と説明には任意の内容を入力します。

AWSのサービスの名前は「AWS Console Sign-in」を選択。
イベントタイプは「サインインイベント」を選択

ルートユーザーのサインインイベントのみを通知するにはフィルターのカスタマイズが必要です。「ARNによる特定のユーザー」を選択し、高度なフィルターに以下の内容を入力します。このフィルターの記載はEventBrigdeルールと同じです。リージョンは「US East(N.Virginia)」を選択します。

集約通知はでは通知頻度をしていします。お好きな設定で問題ありませんが、今回は即時通知してほしいので「集約しない」を選択します。

最後に配信チャンネル(通知先)の指定です。先ほど作成したEメールの通知先を選択します。

これで設定は完了です。ルートユーザーでサインインして通知の確認を行いましょう。
通知イベントの確認
通知先にイベントの概要が通知されますが、通知センターからイベントの詳細を確認することが可能です。

「サービスコンソールで表示」を押下するとCloudTrailコンソールへ移動し、該当イベントの詳細が確認出来ます。
不要になったリソースの削除
AWS User Notificationsの機能を無効にしても、関連リソースは残るので不要になった場合は削除しておきましょう。S3ログやCloudTrailログはリージョン毎に削除する必要がある点に注意してください。
- AWS User Notificationsで作成した通知設定や配信先の削除
- S3に保存されたCloudTrailログのバケット削除(リージョン毎)
- CloudTrail証跡の削除(リージョン毎)
以上