【初学者向け】CloudTrail + Athenaで監査レポートを作成する

1.まずはAWSコンソールから「Athena」のサービスページへ移行

Amazon Athena

https://ap-northeast-1.console.aws.amazon.com/athena/home?region=ap-northeast-1

2.クエリエディタを起動

特に何もいじってません

エディタ.png

3.まずはクエリ結果の保存先S3バケットを設定しておきましょう

S3.png

上部「設定」より指定できます

S3_2.png

4.Athena内でテーブルの作成

まずはテーブルの作成です。以下を実行します。

1行目終わりの「records_202403」がテーブルの名前になるので任意で変更が必要なのと、

最終行でS3のディレクトリ(CloudTrailログの方)を指定する必要があります

1CREATE EXTERNAL TABLE IF NOT EXISTS records_202403 (2  records ARRAY<3    STRUCT<4      eventTime:STRING,5      eventSource:STRING,6      eventName:STRING,7      awsRegion:STRING,8      sourceIPAddress:STRING,9      userIdentity:STRUCT<10        type:STRING,11        arn:STRING12      >13    >14  >15)16ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'1718LOCATION 's3://[CloudTrailログ出力バケット名]/[prefix指定があれば]/AWSLogs/[AWSアカウントID]/CloudTrail/[Region]/2024/03';

実行前

実行1.png
実行作成されました!

実行

作成されました!

実行2.png

5.とりあえず表示してみる

以下を実行してみましょう。

SELECT以下に書いてある項目が表示されるかと思います。

FROMは作成したテーブル名です!

LIMITの部分の数字を変更すれば表示数を増減できます。

1  record.eventTime,2  record.eventSource,3  record.eventName,4  record.awsRegion,5  record.sourceIPAddress,6  record.userIdentity.type,7  record.userIdentity.arn8FROM records_2024039CROSS JOIN UNNEST(records) AS t (record)10LIMIT 10;
実行3.png

6.必要な項目をフィルタリング

次は「WHERE」で必要なものをフィルタリングします

ここでは「eventName」から目についた「AssumeRole」を指定してみました。

1  record.eventTime,2  record.eventSource,3  record.eventName,4  record.awsRegion,5  record.sourceIPAddress,6  record.userIdentity.type,7  record.userIdentity.arn8FROM records_2024039CROSS JOIN UNNEST(records) AS t (record)10WHERE record.eventName = 'AssumeRole'11LIMIT 10;

指定した10件分が出ました!

実行4.png

ちなみに参考記事にある「ConsoleLogin」でフィルタした所、エラーが出たのでそもそも発生していないイベントとかだとエラーを返すのかも…?と思っています。

実行5.png

7.エクスポートする

もうお気づきかと思いますが、クエリを実行すると「結果をダウンロード」項目がでます。

ここからエクスポートするか保存先のS3からエクスポートしてみましょう。

結果.png
後、繰り返し実行する場合はS3側のライフサイクル等も設定して不要なファイルが溜まらないようにしましょう。以上です!(これを書いてから気づきましたがCloudTrail側から簡単に実行できるみたいですね…こっちもやってみようと思います)

後、繰り返し実行する場合はS3側のライフサイクル等も設定して不要なファイルが溜まらないようにしましょう。

以上です!

(これを書いてから気づきましたがCloudTrail側から簡単に実行できるみたいですね…こっちもやってみようと思います)

111.png

この記事を書いた人

aws-recipe-user