[アップデート] Amazon QuickSight でカスタムアクセス制限をロールごとに一括設定出来るようになりました

2023.11.20

いわさです。

先日 Amazon QuickSight にて、次のちょっと便利なアップデートがありました。

QuickSight はユーザーごとに管理者・作成者・閲覧者の 3 つのロールのどれかを割り当てることで使える権限を制御出来るのですが、次の記事で紹介されている「カスタムアクセス制限」という追加のオプションを使うと、さらに追加の制限をユーザーに課すことが出来ます。

例えば、作成者として分析を操作させたいが、このユーザーにはデータセットの作成機能は提供したくない。などの細かいアクションごとに追加の制限を行いたい時に使うことが出来ます。
このカスタムアクセス制限は便利なのですが、ユーザー毎に AWS CLI でカスタム設定を行う必要があり、ちょっと運用するには手間でした。

今回のアップデートはこのカスタムアクセス制限をユーザーではなくロールに割り当てることが出来るようになりました。
これにより、標準の管理者・作成者・閲覧者のロールを一括でカスタマイズすることが出来るようになります。

カスタムアクセス許可を構成してみる

まず、QuickSight の管理画面でカスタムアクセス許可を作成します。
ユーザー機能の「アクセス許可を管理」から作成することが可能で、これは従来から存在していた機能です。

カスタムアクセス許可と表示されていますが、実体は追加のカスタムアクセス制限といったところです。
次のアクションごとに拒否するものにチェックをいれていきます。

カスタムアクセス許可が作成された後、従来は AWS CLI のregister-userupdate-userでカスタムアクセス制限をユーザーに割り当てていました。

今回のアップデートで新しいコマンドが追加されており AWS CLI の v1.30.2、v2.13.37 以上で使うことが出来ます。

ロールにカスタムアクセス制限を設定する

update-role-custom-permissionコマンドを使うことで、ロールに先程作成したカスタムアクセス許可を割り当てることが出来ます。

ここでは次のように作成者(AUTHOR)に割り当ててみます。

% cat hoge.json 
{
    "CustomPermissionsName": "hoge1119custom",
    "Role": "AUTHOR",
    "AwsAccountId": "123456789012",
    "Namespace": "default"
}
% aws quicksight update-role-custom-permission --cli-input-json file://hoge.json --profile hogeadmin 
{
    "RequestId": "c2296d80-5908-46c4-8de6-a633fe542c3b",
    "Status": 200
}

割り当てに成功しました。
ロールに何のカスタムアクセス制限が割り当てられているかも追加されたコマンドで確認することが出来ます。

先程割り当てたカスタムアクセス許可を確認することが出来ますね。

% aws quicksight describe-role-custom-permission --role AUTHOR --aws-account-id 123456789012 --namespace default --profile hogeadmin
{
    "CustomPermissionsName": "hoge1119custom",
    "RequestId": "f2668f9d-aed4-4a19-873e-20798c091a4a",
    "Status": 200
}

なお、カスタムアクセス許可が割り当てられていない場合は次のようなエラーが発生します。
今回の場合だと AUTHOR 以外の ADMIN や READER ではエラーメッセージを確認することが出来ます。

% aws quicksight describe-role-custom-permission --role ADMIN --aws-account-id 123456789012 --namespace default --profile hogeadmin 

An error occurred (ResourceNotFoundException) when calling the DescribeRoleCustomPermission operation: The Role is not mapped to a custom permission

% aws quicksight describe-role-custom-permission --role READER --aws-account-id 123456789012 --namespace default --profile hogeadmin

An error occurred (ResourceNotFoundException) when calling the DescribeRoleCustomPermission operation: The Role is not mapped to a custom permission

さて、カスタムアクセス制限が設定されたので作成者で QuickSight へアクセスしてみましょう。
データセット機能にアクセスは出来るのですが、データセットの作成ボタンがありませんね。

このようにロールごとで共通の操作領域をカスタムアクセス制限を使って制御することが出来ます。
従来まではユーザーごとに毎回設定が必要だったのですが、ロールに一度設定しておけば対象ロールのユーザーに自動で適用されるので大量のカスタムアクセス許可を運用しない場合は便利なケースが多いのではないでしょうか。

欲を言うと標準ロールではなくカスタムロールを作成出来ると完璧だと思います。
さらなるアップデートに期待したいところです。

ロールのカスタムアクセス制限を削除する

ロールにカスタムアクセス制限を設定しましたが、カスタムアクセス制限が不要になったという場合は削除することも出来ます。
削除するためのコマンドも新たに追加されています。

% cat hoge.json 
{
    "Role": "AUTHOR",
    "AwsAccountId": "123456789012",
    "Namespace": "default"
}
% aws quicksight delete-role-custom-permission --cli-input-json file://hoge.json --profile hogeadmin
{
    "RequestId": "21540431-dab6-4896-a32a-1b04a25f2dd5",
    "Status": 200
}

削除することが出来ました。
先程のデータセットの作成出来なかった作成者で画面をリロードしてみましょう。

今度はデータセットの作成ができるようになりましたね。

さいごに

本日は Amazon QuickSight でカスタムアクセス制限がロールごとに一括設定出来るようになったので確認してみました。

標準ロールのアクセス許可をカスタマイズしたいというユースケースにおいては始めにロールごとにカスタムアクセス制限を設定しておけば良いので、運用が楽になると思います。

一方で、標準ロールに加えて追加のカスタムロールを想定してカスタムアクセス制限を使っていた場合は引き続きユーザーごとの設定が必要になります。