📌

Athenaを使ってCloudTrailのイベントヒストリーをARNでクエリしたい

2022/09/03に公開

自分の欲しいクエリがなくて右往左往したのでメモ

やりたかったこと

Customer KMSでいつ使ったか分からないものがあり、ARN指定でCloudTrailを調べたかった

はまったこと

  • arnはresourcesの配列中にある。定義は以下のようにTRUCTのARRAYで、何も考えずに(where resources.arnとかで)クエリすると失敗します。
    resources ARRAY<STRUCT<
        arn: STRING,
        accountId: STRING,
        type: STRING>>,

やったこと

  • CloudTrailのEventHisotryからAthenaを開く。設定はデフォルト。

  • クエリは、docを参考に

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudtrail-logs.html#cloudtrail-logs-nested-fields

例:
<ここにcloudtrail_logs_aws_cloudtrail_logs_xxxxxxxxxxxxxxxxxxx> と <ここにARN>は変えてくだい。

注: FROMの最後のtを消さないこと

SELECT 
    *
FROM <ここにcloudtrail_logs_aws_cloudtrail_logs_xxxxxxxxxxxxxxxxxxx> t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE unnested.resources_entry.ARN LIKE '%<ここにARN>'
ORDER BY eventtime

docの例:(項目絞っている)

SELECT 
    awsregion,
    replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as s3_resource,
    eventname,
    eventtime,
    useragent
FROM <ここにcloudtrail_logs_aws_cloudtrail_logs_xxxxxxxxxxxxxxxxxxx> t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE unnested.resources_entry.ARN LIKE '%<ここにARN>'
ORDER BY eventtime

kmsのCloudtrail内での項目

https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/deleting-keys-determining-usage.html#deleting-keys-usage-cloudtrail

Discussion