QuickSight利用ユーザー名をCloudTrailログから確認する方法

記事タイトルとURLをコピーする

暑すぎて厚揚げになってしまった技術4課の前田(青)です。
QuickSight上のダッシュボードを誰が使用したか確認する目的などでユーザー名をCloudTrailから確認したい場合があるのですが、ユーザーの種類によって確認すべき箇所が異なるため、今回記事にさせていただきました。

結論

QuickSight上で作成するユーザーの場合

CloudTrailイベント履歴の列「ユーザー名」にユーザー名は表示されません。Athenaなどを使用してuserIdentity.userNameを確認しましょう。

IAMユーザーの場合

CloudTrailイベント履歴の列「ユーザー名」から確認できます。

QuickSightのユーザータイプについて

QuickSightのユーザー管理方式には3種類あります。

①emailアドレス管理(QuickSight独自)
②IAM + フェデレーションによるSSO
③Active Directory連携

各ユーザーの詳細については、弊社の福島のブログをご覧ください。 blog.serverworks.co.jp

今回は①②で管理されるユーザーについて、CloudTrailログでどのように表示されるかを見ていきたいと思います。 以降は①のユーザーをQuickSight管理ユーザー、②のユーザーをIAMユーザーと呼称します。

検証に使用するユーザー

今回の検証には下記のユーザーを使用します。

ユーザータイプ ユーザー名
QuickSight管理ユーザー user_managed_quicksight
IAMユーザー administrator


QuickSight管理画面から確認するとこんな感じで


CLIから確認するとこんな感じです。IdentityTypeを見るとQuickSight管理ユーザーは「QUICKSIGHT」、IAMユーザーは「IAM」と表示されているため、
ユーザータイプの条件は確実に満たせていると言えます。

QuickSight管理ユーザーの場合

CloudTrailイベント履歴から確認

CloudTrailのイベント履歴の列「ユーザー名」には、前章のCLI実行結果から確認できる「PrincipalId」の値が表示されます。(※補足1)(※補足2

Athenaから確認

ユーザー名そのものを確認したい場合はAthenaから確認することをお勧めします。 CloudTrailログは下記のような構造でログが取れるのですが、QuickSight管理ユーザー名はuserIdentity.userNameに記録されます。

{"Records": [{
    "eventVersion": "1.0",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Alice",
        "accountId": "123456789012",
        "accessKeyId": "EXAMPLE_KEY_ID",
        "userName": "Alice",
        "sessionContext": {"attributes": {
            "mfaAuthenticated": "false",
            "creationDate": "2014-03-25T18:45:11Z"
        }}
    },
    "eventTime": "2014-03-25T21:08:14Z",
    "eventSource": "iam.amazonaws.com",
    "eventName": "AddUserToGroup",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "127.0.0.1",
    "userAgent": "AWSConsole",
    "requestParameters": {
        "userName": "Bob",
        "groupName": "admin"
    },
    "responseElements": null
}]}

実際にAthenaで確認してみる(※補足3)と、確かにQuickSight管理ユーザー名が表示されていることが分かります。

IAMユーザの場合

管理コンソール上で操作を実行したIAMユーザを確認する時のように、イベント履歴の列「ユーザー名」から確認することができます。

Athena上においてもuserIdentity.userNameから確認できます。

補足1.CloudTrailイベント履歴の列「ユーザー名」はどのデータが表示されている?

下記画像の内容から、userIdentity.arn中の値(より正確に言うと、「/」で区切った時の最右端の値)が表示されているようです。

補足2.AWSドキュメント記載内容との差異について

2023年8月時点では、AWS CloudTrail を使用した操作のログへの記録 - Amazon QuickSightにおいて、下記のように「QuickSight管理ユーザー名はunknownで表示される」と記載されています。

ユーザーが Amazon QuickSight によってプロビジョニングされた場合、CloudTrail はユーザーを unknown と表示します。このように表示されるのは、これらのユーザーが既知の IAM ID のタイプではないためです。

しかし実際には、前述したように「PrincipalId」の値が表示されるためご注意ください。(AWS側にも確認済みの動作となります。)

補足3.CloudTrailログをAthenaで確認する方法

CloudTrailログをAthenaで確認する方法については弊社の山﨑のブログをご覧ください。
今回使用したCloudTrailログテーブルも、下記ブログのCREATE文を使用して作成しました。 blog.serverworks.co.jp


ちなみに、今回確認に使用したSQLは下記になります。

SELECT 
    eventtime,
    useridentity.userName,
    eventname,
    eventsource
FROM "default"."cloudtrail_logs_pp"
where
    eventsource = 'quicksight.amazonaws.com'
    and eventtime between  '2023-08-18T06:22:0Z' and '2023-08-18T06:24:00Z'
    and timestamp = '2023/08/18' --←スキャン量を抑えてクエリ実行速度を高めるために書いています。
order by eventtime desc

感想

QuickSightとAthenaを用意すれば確認することは容易なのですが、少しめんどくさいため今回記事にさせていただきました。 どなたかの手間を削減できれば幸いです。

前田 青秀(執筆記事の一覧)

2023年2月入社 技術4課改めCR課

AWS資格12冠

ジムに通い始めましたが、なるべく楽してマッチョになりたい…