セキュリティ上の理由から、AWSマネジメントコンソールへのログインイベントを、メールやSlackに通知することはよくありますよね。現在ではAWS User Notificationsを使えば、簡単に実現できます。
それとは別に、アクセスキーの使用を検出したいことってないでしょうか? 筆者はありました。というわけで備忘録がてら、簡単に手順をまとめておきます。
APIの呼び出しを追跡するためのCloudTrailと、通知を送信するためのSNSトピックが必要ですので、あらかじめ作成しておいてください。注意点として、Trailの管理イベントには「書き込み」を指定しておいてください。
SNSトピックは、AWS Chatbotを経由してSlackに通知することにしました。こちらの設定方法は省略します。
EventBridgeを開き、ルールを作成します。ルールタイプは「イベントパターンを持つルール」です。
イベントソースは「その他」を選択します。
JSONでルールにマッチするイベントパターンを記述します。検出するアクセスキーは、リスト内に複数列挙することができます。
ターゲットタイプは「AWSのサービス」を選択し、あらかじめ作成しておいSNSトピックを選択します。
これで該当のアクセスキーが使用された際に、通知が飛ぶようになります。
なお検出できるのは、管理イベントのみとなります。例えばS3であれば、データイベントであるGetObject等は通知の対象になりませんが、管理イベントであるCreateBucketであれば通知されます。
稀にしか起こらないコンソールログインとは異なり、APIの呼び出しをすべてキャッチしてしまうとエラいことになるため、通常であればこんなことをする必要はないでしょう。ですが「稀にしか使わないんだけど、消すわけにもいかないアクセスキーがあって、使われたタイミングを知りたい」「変なところで使われてないか検出したい」みたいな時に、もしかしたら覚えておくと役に立つかもしれません。