CloudTrail と CloudWatch Logs を使って Management Console のセキュリティを上げる

Posted on

先日 CloudTrail と CloudWatch Logs の連携が発表されました。この機能を待ちわびていました!

これまで CloudTrail のログをリアルタイムに監視するには自分で作り込むか、APN のサービスに頼る必要がありましたが、簡単な監視であればこの連携で十分です。

CloudTrail と CloudWatch Logs が連携できるようになったことをお伝えします。この連携により CloudTrail が特定の API 操作を記録した際に、CloudWatch で SNS 通知が行えるようになります。

今回は Management Console のセキュリティを上げるために、普段と違う IP アドレスからログインされたときに通知を飛ばしてみます(普段はオフィスなど固定 IP アドレスからログインしているという前提です)。

CloudTrail の設定

CloudWatch Logs はまだ東京リージョンで使えないので、バージニアリージョンの CloudTrail で設定します。リージョンが違っても、オプション設定の "Include global services?" を Yes にすれば Management Console へのログインが記録されます。

CloudTrail の設定

こんな感じで設定しました。ここまでは、これまで通りです。

CloudWatch Logs の設定

次に CloudWatch Logs の設定です。 CloudTrail で連携を有効にすれば、すでにログが流れてきているはずです。このログの中から引っかけたい条件をフィルタに追加します。今回の場合だと「Management Console へのログインが成功してて、かつ普段の IP アドレスと違う」となります。

Create Metric Filter を選択して、Filter Pattern に次のようなシンタックスで入力します。

{ $.responseElements.ConsoleLogin = "Success" && $.sourceIPAddress != "xxx.xxx.xxx.xxx" }

Test Pattern で直近 50 行のログに対してマッチするかテストできますが、ログの流れるスピードが速いのでマッチしないと思います。気にせず Assign Metric でフィルタを作ります。

CloudWatch Logs のフィルタ設定

あとは普段と同じように CloudWatch のアラームを設定するだけです。今回の目的は不正ログインの検知なので、フィルタに 1 回でもマッチすれば SNS 通知を飛ばすようにしています。

まとめ

AWS アカウントのセキュリティを保つために 2 段階認証を設定するのはもちろんのことですが、ワンタイムパスワードを生成するトークンやスマホが盗まれる可能性もあります。 CloudTrail と CloudWatch Logs の連携は簡単にできるので、転ばぬ先の杖として設定してみてはいかがでしょう?

他にもいろいろな使い方ができるので試してみたいと思います。