AWS CloudTrail Lakeを使ってみた

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に触れていれば誰でも簡単にイベントのログを検索することができます。是非試してみてください。