[小ネタ] 請求レポートから QuickSight 利用ユーザを確認する

Guten Tag、ベルリンから伊藤です。

お問い合わせから確認した小ネタを紹介します。

QuickSight の料金をCSVの請求レポートから確認した時にリソースIDが入っていますが、実際のQuickSightユーザ名とは異なるので、この調べ方を確認しました。

請求レポートでのQuickSightのリソースID

まずは、Cost and Usage Report をダウンロードし、CSVファイルから整形して確認しました。(弊社のメンバーズのお客様は、Members Portalのご利用料金の画面からCSVをダウンロードできます。)

利用料金極小でサンプル少なめですが、検証に利用したQuickSightのコストにフィルターすると、リソースIDを含む行があります。しかし、実際のQuickSightのユーザ名とは異なり、システムに割り振られたようなIDとなっています。

しかも、よく見ると「ds」= Directory Service で、QuickSightのリソースARNではなく、以下のような形式になっています。

arn:aws:ds:us-east-1:<AWS Account ID>:user/<Directory ID>/<Directory User ID>

※QuickSightの利用リージョンに関わらず、us-east-1(バージニア北部)です。

なお、"d-" から始まるディレクトリIDを念の為 Directory Service のコンソールやCLIで探しましたが、存在していません。今回のQuickSightユーザはもちろんADなどと紐づけているわけでもなく、手動でユーザ追加しています。

QuickSightユーザについて

下記のブログでQuickSightのユーザの解説がされていて、ここでもIAMの許可アクションに「ds:」が含まれていますが、恐らくユーザの管理に内部的にディレクトリサービスが使用されているのでしょう。(※現時点で公式には情報公開されていません)

Amazon QuickSight: ユーザー管理やパーミッション設定について

QuickSightコンソールでは、ユーザ名が表示されるだけでARNの情報はありません。CLIのlist-usersを実行してみても、QuickSightのARNが表示され、請求レポートのARNとは異なります。

$ aws quicksight list-users --aws-account-id=<AWS Account ID> --namespace=default | jq .
{
  "Status": 200,
  "UserList": [
    {
      "UserName": "ito@example.com",
      "Active": true,
      "Role": "AUTHOR",
      "Email": "ito@example.com",
      "Arn": "arn:aws:quicksight:eu-west-1:<AWS Account ID>:user/default/ito@example.com"
    }
  ],
  (後略)

QuickSightのユーザと請求レポートのARNをひもづける

この請求レポートのARNですが、CloudTrailの情報を使って、QuickSightのユーザとひもづけることが可能です。

CloudTrailコンソールのイベント履歴を開いて、 フィルター属性に「ユーザー名」、ルックアップ値に先ほどの <Directory User ID> を入力します。

すると、イベントが検索に引っかかりました。

詳細を開いて[イベントの表示]をクリックすると、userIdentity 下の属性 userName としてQuickSightのユーザ名が表示されました。

もちろん、CLIの lookup-events の使用も可能です。

下記のコマンドで、対象のARNに一致するユーザ名のみを取得できました。

$ aws cloudtrail lookup-events --profile <Profile Name> \
--lookup-attributes AttributeKey=Username,AttributeValue=<Directory User ID> \
 | jq -r .Events[0].CloudTrailEvent | jq -r .userIdentity.userName 

参考:CloudTrail を使用してリソースに対するアクションを検索する

以上、どなたかのお役に立てば幸いです!