Amazon QuickSight でアカウント内のアセット管理が出来るようになりました

2022.11.22

いわさです。

本日のアップデートで QuickSight の管理機能でアカウント内のアセットが一元管理出来るようになりました。

ここでいうアセットというのは分析、ダッシュボード、データセット、データソース、共有フォルダを指しています。
QuickSight ではそれぞれのオブジェクトに所有者が存在しており、コンソール上に表示されるものは所有権あるいは共有されたオブジェクトのみです。

今回のアップデートでは管理者が使える管理メニューに「アセットの管理」機能が追加されました。
この機能を使うことで他のユーザーが所有するアセット、さらに別の名前空間のアセットに関しても一元的にリスト表示することができ、管理者は全てのオブジェクトのリストを管理することが出来ます。
さらに、そこから管理者は共有や移管の操作を行うことも出来ます。

実際に使ってみましたので利用方法などを紹介します。

使い方

今回の機能は前提として Enterprise エディションでのみ利用が可能です。
そして、管理メニュー内の機能なので管理者権限を持つユーザーへのみ提供される機能です。

以下のように管理メニュー内に「アセットの管理」が追加されています。

アセットの管理メニューからコンソール画面へ移動が出来ます。

ここで何が出来るのか見ていきましょう。

アセットの検索が出来る

まず、アセットの検索を行うことが出来ます。
以下は分析の一覧を表示したものです。
名前とタイプと ID までが確認出来ます。ここからは分析がどのデータセットを使っているのか、あるいはデータセットのデータストアがファイルアップロードなのか Athena なのか、などはわかりません。
概要レベルで一覧表示出来る感じですね。

アセットタイプとしては分析、ダッシュボード、データセット、データソース、共有フォルダがサポートされています。

ユーザーあるいはグループでアクセス権をもつオブジェクトが検索出来る

ユーザーあるいはグループで検索することが出来ます。

所有権および閲覧権のあるオブジェクトを検索することが出来ます。

他のユーザーが所有する未共有のオブジェクトも検索対象

管理者に対して共有されていないオブジェクトも検索することが出来ます。
以下では特定の作成者が独自に取り込んだデータセットです。

管理者には共有していない状態なので、管理者がデータセット一覧画面はアクセスしてもオブジェクトの存在に気づくことが出来ません。

しかし、アセット管理画面からは共有されていないデータセットも以下のように参照することが出来ます。

また、先程のユーザーに紐づくオブジェクトで検索するときも同様に共有されていないオブジェクトも検索対象となっています。

別の名前空間のオブジェクトも横断的に管理出来る

QuickSight には名前空間という概念があります。
特に意識していなければ普段はデフォルトの default 名前空間を使っています。
そこへ分離された別の名前空間を用意し、ユーザーやオブジェクトを切り離して管理することが出来ます。

このアセット管理機能では名前空間を横断してアセット検索が出来ます。

上記を参考に別の名前空間を作成し、そこに管理者を一人作成しましょう。

% aws quicksight create-namespace --aws-account-id 748796684458 --namespace hoge1 --identity-store QUICKSIGHT
{
    "Status": 202,
    "Name": "hoge1",
    "CapacityRegion": "ap-northeast-1",
    "CreationStatus": "CREATING",
    "IdentityStore": "QUICKSIGHT",
    "RequestId": "3b69a7c8-db61-4cf1-85d2-5d0943a4f0ad"
}
% aws quicksight register-user --identity-type IAM --email hoge+hoge1admin@example.com --user-role ADMIN --iam-arn arn:aws:iam::123456789012:user/hogeadmin --aws-account-id 123456789012 --namespace hoge1
{
    "Status": 201,
    "User": {
        "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/hoge1/hogeadmin",
        "UserName": "hogeadmin",
        "Email": "hoge+hoge1admin@example.com",
        "Role": "ADMIN",
        "IdentityType": "IAM",
        "Active": false,
        "PrincipalId": "federated/iam/AKIAIOSFODNN7EXAMPLE"
    },
    "RequestId": "a4891689-7467-4ad7-a716-d52079dd939f"
}

そして追加した名前空間上でデータセットを作成しましょう。

デフォルト名前空間に戻ってアセット管理機能を開いてみると以下のように、デフォルト以外の名前空間のアセットが認識されましたね。

別の名前空間のユーザーやグループで検索することも可能です。名前空間の存在を認識出来るのか。

逆に、作成した名前空間からデフォルト名前空間のオブジェクトも検索可能です。

これ、名前空間のユースケースによってはある名前空間の管理者が別の名前空間のデータにアクセスさせたくないケースがありそうですが、管理者に限ってはテナント越境可能 という再認識が必要そうです。

同一リージョン内のみ参照可能

逆に同一名前空間内であって、別リージョンの場合は参照が出来ませんでした。
以下のようにバージニア北部にデータセットを作成してみましたが東京リージョンのアセット管理画面からは参照出来ませんでした。

共有と移管が出来る

ここまで参照出来る条件を確認しました。
アセット管理機能ではリストしたオブジェクトに対して共有と移管の操作が可能です。

共有

共有はそのままですが、所有権はそのままに、追加の参照権を別のユーザーやグループに追加します。
一覧画面で複数オブジェクトを選択するかあるいは右側のメニューから「共有」機能を利用することが出来ます。

アセット共有ダイアログが表示されるので、権限を設定するユーザーやグループを検索して共有操作を確定させます。

移管

続いて移管の機能です。
QuickSight ではオブジェクトの所有者の概念がありますが、そのユーザーを削除した場合は所有しているオブジェクトを誰かに移管する必要があります。
従来はユーザーの削除時に誰にオブジェクト所有権を移管するのか選択する形でした。

アセット管理機能で一括で所有権の移管を行うことが出来るようになりました。ユーザーの削除も不要です。
作成者がたくさんいると所有権周りごちゃごちゃになることがたまにあったので、これは結構便利かもしれない。

先程作成した追加の名前空間のデータセットを移管してみましょう。

移管先にデフォルトの名前空間のユーザーを指定してみたいと思います。出来るか...?

お、問題なく出来ました。

移管設定画面に英語で書いてありましたが、移管すると元のユーザーから所有権が削除されます。
そのため、追加名前空間の先程までオブジェクトを所有していたユーザーからはデータセットが確認できなくなりました。

そして、デフォルト名前空間の移管先ユーザーのデータセットに表示されるようになりました。

さいごに

本日は Amazon QuickSight でアカウント内のアセット管理が出来るようになったので早速触ってみました。

管理者であっても他の作成者が作成したデータセットなどの存在を簡単に気づくことが難しく、手動で SPICE 容量など検索する際に苦労した記憶がありますので管理者にとってはありがたい機能ですね。

一方で、マルチテナントの実現に名前空間を使っていてかつ名前空間ごとに管理者を作成して運用している場合は、管理者が別テナントの名前空間名やオブジェクト名ユーザー名の存在を知ることが出来てしまいますので管理者は名前空間を横断してアクセス出来るのでマルチテナント設計をされる際にはご注意ください。
このあたりは例えば管理コンソールのグループ機能ではデフォルト名前空間のユーザーのみ表示されるような現象もあったので、名前空間利用時でも QuickSight 管理者ユーザーはテナント全体を通しての管理者である必要があるという点を再度意識しておきましょう。