CloudTrail と CloudWatch Logs を使って Management Console のセキュリティを上げる
Posted on
- #aws
先日 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 へのログインが記録されます。
こんな感じで設定しました。ここまでは、これまで通りです。
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 のアラームを設定するだけです。今回の目的は不正ログインの検知なので、フィルタに 1 回でもマッチすれば SNS 通知を飛ばすようにしています。
まとめ
AWS アカウントのセキュリティを保つために 2 段階認証を設定するのはもちろんのことですが、ワンタイムパスワードを生成するトークンやスマホが盗まれる可能性もあります。 CloudTrail と CloudWatch Logs の連携は簡単にできるので、転ばぬ先の杖として設定してみてはいかがでしょう?
他にもいろいろな使い方ができるので試してみたいと思います。