- 結論
- QuickSightのユーザータイプについて
- 検証に使用するユーザー
- QuickSight管理ユーザーの場合
- IAMユーザの場合
- 補足1.CloudTrailイベント履歴の列「ユーザー名」はどのデータが表示されている?
- 補足2.AWSドキュメント記載内容との差異について
- 補足3.CloudTrailログをAthenaで確認する方法
- 感想
暑すぎて厚揚げになってしまった技術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を用意すれば確認することは容易なのですが、少しめんどくさいため今回記事にさせていただきました。 どなたかの手間を削減できれば幸いです。