AWS CloudTrail Lakeを使ってみたので、実際どんな感じで使うのかシェアします。
CloudTrailとは
その前に、CloudTrailを軽くおさらいします。 簡単に言えば、CloudTrailはAWSアカウントで行われた操作(イベント)を監視し、ログを残すサービスです。 管理者がユーザーが不正を行っていないか監視することに使うことができますね。
公式ユーザーガイドを貼っておきます。参考までに。 https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-user-guide.html
CloudTrail Lakeとは
本題です。CloudTrail LakeはCloudTrailのログに対して、イベントに対してSQLベースのクエリを実行することができます。 また、その結果をS3に保存できたりします。
使い方
ここからは具体的な使い方についてです。CloudTrailの中にあるので、AWSコンソール上では特に迷うことなくCloudTrail Lakeにたどり着けると思います。 基本的にはSQLなので、そこまで難しくはないですが、一例を載せておきます。
SELECT userIdentity.userName AS userName, eventName, eventSource FROM {イベントデータストア ID} WHERE userIdentity.accessKeyId='{IAMのアクセスキー}' AND (eventName='StartInstances' OR eventName='StopInstances')
これは指定したIAMのアクセスキーをもつユーザーのec2のインスタンスの開始、休止を抽出することができます。
WHEREの中を変えることで、簡単に検索対象を変えることができます。CloudTrailはJSON形式で保存されていますが、以下のドキュメントをみることで知ることができます。
https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-event-reference.html
例えば、他にこんなSQLを書くことができます。
SELECT userIdentity.userName AS userName, eventName, eventSource FROM {イベントデータストア ID} WHERE userIdentity.arn IS NOT NULL AND eventSource='rds.amazonaws.com' AND eventTime > '2023-02-23 00:00:00' AND eventTime < '2023-02-24 00:00:00'
eventTimeで時間指定できます。
eventSourceは以下のサイトを参考にしました。 https://qiita.com/daikiojm/items/41937865afbbfa2e13a9
eventNameは公式ドキュメントの各サービスにあるAPI Referenceに書いてある、Actionsの名前です。 RDSだと、こちら
まとめ
今回はAWS CloudTrail Lakeについて軽く紹介しました。 SQLに触れていれば誰でも簡単にイベントのログを検索することができます。是非試してみてください。