AWS CloudWatch Events + Amazon SNSで、AWS管理コンソールのサインインを検知しメールで通知する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、CloudWatchに面白い新機能が実装されました。

CloudWatch EventsはEC2の状態遷移やスケジュール、API呼び出し、AWS管理コンソールへのサインイン、Auto ScalingのEC2の起動や削除の成功/失敗といった、イベントをトリガーに駆動する機能です。Lambdaもそうですが、こういったイベント駆動型のサービスが増えることで、各サービスを簡単に結合することが出来、ますますサーバレスなシステム構築が簡単になります。

さて、今回はAWS CloudWatch Eventsを使って、AWS管理コンソールへのサインインを検知しメールで通知する仕組みを作ってみました。

やってみた

事前準備

CloudWatch EventsでAWS管理コンソールのサインインを検知するためには、CloudTrailが有効になっている必要がありますので、事前に設定しておきます。

SNSの設定

まず、通知を行うためのSNSの設定を行います。AWS管理コンソールのSNS画面で[Create Topics]をクリックします。

AWS_SNS

[Create new topic]画面が表示されます。[Topic name]と[Display name]に、適当なわかりやすい名前を入力します。[Create topic]ボタンをクリックします。

AWS_SNS 2

Topicが作成されます。次に通知するメールアドレスの登録をしますので、[Create Subscription]ボタンをクリックします。

AWS_SNS 5

[Create Subscription]画面が表示されます。[Protocol]で[Email]を選択し、[Endpoint]で通知先のメールアドレスを入力します。[Create Subscription]ボタンをクリックします。

AWS_SNS 4

設定したメールアドレスに以下のような[AWS Notification]メールが届きますので、[Confirm Subscription]をクリックします。

AWS_Notification_-_Subscription_Confirmation_-_sasaki_daisuke_classmethod_jp_-_Classmethod_jp_メール

以下の画面が表示されるとSubscriptionが成功です。

sns_mail

これでSNSの準備ができました。

CloudWatch Eventsの設定

AWS管理コンソールのCloudWatch画面から[Events]をクリックします。

CloudWatch_Management_Console

[Create rule]をクリックします。

CloudWatch_Management_Console 2

[Create rule]画面が表示されます。[Event selector]で[AWS console sign-in]を選びます。

CloudWatch_Management_Console 3

[Targets]で[Add Target]をクリックします。

CloudWatch_Management_Console 4

[SNS topic]を選択します。[topic]には上記で作成したSNS Topicを指定します。[configure details]ボタンをクリックします。

CloudWatch_Management_Console 5

[Configure rule details]画面が表示されます。[Name]に適当な名前、[Description]に説明を入力します。[State]で[Enabled]にチェックが入っていることを確認します。[Create rule]ボタンをクリックします。

CloudWatch_Management_Console 6

これでCloudWatch Eventsのためのruleが作成されました。

CloudWatch_Management_Console 7

通知してみる

それではAWS管理コンソールにログインしてみましょう。

以下のようなメールが通知されれば成功です!

AWS_Notification_Message_-_sasaki_daisuke_classmethod_jp_-_Classmethod_jp_メール

さいごに

難しいことはしておらず、CloudWatch Eventsに用意された機能だけで簡単に設定できます。AWS管理コンソールへサインインすること自体がとても重要なイベントであり、ログとしての管理やメールでの通知をすることで、不正な利用があった場合にも早期に検知できます。

CloudWatch Eventsはとても可能性のある機能だと思います。いろいろな活用方法を検討したいと思います!