QuickSight のカスタムアクセス許可(制限)を削除する
コーヒーが好きな emi です。
以下のブログで設定したカスタムアクセス許可(制限)を削除する検証をおこなったので共有します。
2024/11/14 で新規登場した delete-custom-permissions コマンドを使えば良さそうです。
1. ユーザーとロールに付与されているカスタムアクセス許可(制限)を外す
まず、ユーザーとロールに付与されているカスタムアクセス許可(制限)を外します。
1-1. カスタム許可プロファイルとユーザーへの権限付与状況確認
QuickSight ユーザー管理画面からはこのように test ユーザーに対して「restrict-datasets」というカスタム許可プロファイルを付与し、カスタムアクセス許可(制限)を設定しています。
また、画面からは確認できませんが作成者(AUTHOR)ロールにも「restrict-datasets2」というカスタム許可プロファイルを付与し、カスタムアクセス許可(制限)を設定しています。
カスタム許可プロファイルはこんな感じです。
list-custom-permissions コマンドで、カスタム許可プロファイルの一覧を表示してみます。
aws quicksight list-custom-permissions \
--aws-account-id 123456789012
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight list-custom-permissions \
> --aws-account-id 123456789012
{
"CustomPermissionsList": [
{
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:custompermissions/restrict-datasets",
"CustomPermissionsName": "restrict-datasets",
"Capabilities": {
"CreateAndUpdateDatasets": "DENY",
"CreateAndUpdateDataSources": "DENY",
"ViewAccountSPICECapacity": "DENY"
}
},
{
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:custompermissions/restrict-datasets2",
"CustomPermissionsName": "restrict-datasets2",
"Capabilities": {
"CreateAndUpdateDatasets": "DENY",
"CreateAndUpdateDataSources": "DENY"
}
}
],
"Status": 200,
"RequestId": "7afbe1f5-2d2a-463a-a244-b193561b65ec"
}
[cloudshell-user@ip-10-132-64-70 ~]$
参考:describe-custom-permissions の結果
describe-custom-permissions コマンドで、カスタム許可プロファイルの詳細も表示して見ましたが、list-custom-permissions コマンドで確認した結果と大差ありませんでした。
test ユーザーに付与されている「restrict-datasets」の詳細は以下です。
aws quicksight describe-custom-permissions \
--aws-account-id 123456789012 \
--custom-permissions-name restrict-datasets
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-custom-permissions \
> --aws-account-id 123456789012 \
> --custom-permissions-name restrict-datasets
{
"Status": 200,
"CustomPermissions": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:custompermissions/restrict-datasets",
"CustomPermissionsName": "restrict-datasets",
"Capabilities": {
"CreateAndUpdateDatasets": "DENY",
"CreateAndUpdateDataSources": "DENY",
"ViewAccountSPICECapacity": "DENY"
}
},
"RequestId": "eac1a4ab-3177-4ccd-998a-7f7c57d2dc02"
}
[cloudshell-user@ip-10-132-64-70 ~]$
作成者(AUTHOR)ロールに付与されている「restrict-datasets2」の詳細は以下です。
aws quicksight describe-custom-permissions \
--aws-account-id 123456789012 \
--custom-permissions-name restrict-datasets2
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-custom-permissions \
> --aws-account-id 123456789012 \
> --custom-permissions-name restrict-datasets2
{
"Status": 200,
"CustomPermissions": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:custompermissions/restrict-datasets2",
"CustomPermissionsName": "restrict-datasets2",
"Capabilities": {
"CreateAndUpdateDatasets": "DENY",
"CreateAndUpdateDataSources": "DENY"
}
},
"RequestId": "79f555db-02eb-465c-b1c2-857a56fce9a8"
}
[cloudshell-user@ip-10-132-64-70 ~]$
参考:describe-role-custom-permission の結果
describe-role-custom-permission コマンドで、作成者(AUTOR)ロールに付与されたカスタム許可プロファイルを見てみます。
aws quicksight describe-role-custom-permission \
--role AUTHOR \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-role-custom-permission \
> --role AUTHOR \
> --aws-account-id 123456789012 \
> --namespace default
{
"CustomPermissionsName": "restrict-datasets2",
"RequestId": "1ed1c97e-152d-4520-940c-6db70d7a26d6",
"Status": 200
}
[cloudshell-user@ip-10-132-64-70 ~]$
参考:describe-user の結果
describe-user コマンドで、ユーザーの詳細を見てみます。
test ユーザーの確認
aws quicksight describe-user \
--user-name test \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test",
"UserName": "test",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/7d27667c-056e-434b-a438-679305c069ce",
"CustomPermissionsName": "restrict-datasets"
},
"RequestId": "626d2911-179f-4d16-b045-d873cc5b2be6"
}
[cloudshell-user@ip-10-132-64-70 ~]$
test2 ユーザーの確認
aws quicksight describe-user \
--user-name test2 \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test2 \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test2",
"UserName": "test2",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/01eda5ba-7059-4354-a8a8-b3327ab9c3e1",
"CustomPermissionsName": "restrict-datasets2"
},
"RequestId": "0d4bb504-6f1c-4b7c-b565-2e64a1942024"
}
[cloudshell-user@ip-10-132-64-70 ~]$
test3 ユーザーの確認
aws quicksight describe-user \
--user-name test3 \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test3 \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test3",
"UserName": "test3",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/bebc971f-e4b6-4640-9135-a65182ccad66",
"CustomPermissionsName": "restrict-datasets2"
},
"RequestId": "9e4036a5-4bfd-463f-85a9-cc2ee078ba54"
}
[cloudshell-user@ip-10-132-64-70 ~]$
1-2. ユーザーに付与されているカスタムアクセス許可(制限)を外す
delete-user-custom-permission コマンドで、test ユーザーに付与したカスタム許可プロファイルを外します。
aws quicksight delete-user-custom-permission \
--user-name test \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight delete-user-custom-permission \
> --user-name test \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"RequestId": "20a706f8-e818-4506-981a-8bfbd6caf3a7"
}
[cloudshell-user@ip-10-132-64-70 ~]$
カスタム許可プロファイルが外れたか確認します。
aws quicksight describe-user \
--user-name test \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test",
"UserName": "test",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/7d27667c-056e-434b-a438-679305c069ce",
"CustomPermissionsName": "restrict-datasets2"
},
"RequestId": "fbcfcadd-c67a-48bd-b21e-544629530780"
}
[cloudshell-user@ip-10-132-64-70 ~]$
QuickSight 管理画面に戻ると、test ユーザーの「アクセス許可」列に表示されていた「restrict-datasets」が消えています。
カスタム許可プロファイル自体は残っています。紐づけだけが外れたイメージです。
データセット画面を見ると、「restrict-datasets」を外したにもかかわらず「新しいデータセット」ボタンが表示されていません。
これは、まだ作成者(AUTHOR)ロールに「restrict-datasets2」というカスタム許可プロファイルが割当たっているからです。
1-3. ロールに付与されているカスタムアクセス許可(制限)を外す
次は作成者ロールに付与されているカスタム許可プロファイルを外します。
delete-role-custom-permission コマンドを使います。
aws quicksight delete-role-custom-permission \
--role AUTHOR \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight delete-role-custom-permission \
> --role AUTHOR \
> --aws-account-id 123456789012 \
> --namespace default
{
"RequestId": "61d724d8-47c0-4899-a0b2-847a9ffce473",
"Status": 200
}
[cloudshell-user@ip-10-132-64-70 ~]$
ロールからカスタム許可プロファイルを外しました。ユーザーの権限の状態を確認します。
test ユーザーの権限
aws quicksight describe-user \
--user-name test \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test",
"UserName": "test",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/7d27667c-056e-434b-a438-679305c069ce"
},
"RequestId": "44b380bc-d201-472e-bade-8dfa38b43e95"
}
[cloudshell-user@ip-10-132-64-70 ~]$
test2 ユーザーの権限
aws quicksight describe-user \
--user-name test2 \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test2 \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test2",
"UserName": "test2",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/01eda5ba-7059-4354-a8a8-b3327ab9c3e1"
},
"RequestId": "4917b473-5f71-4523-bafe-d12ca1dc09a9"
}
[cloudshell-user@ip-10-132-64-70 ~]$
test3 ユーザーの権限
aws quicksight describe-user \
--user-name test3 \
--aws-account-id 123456789012 \
--namespace default
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight describe-user \
> --user-name test3 \
> --aws-account-id 123456789012 \
> --namespace default
{
"Status": 200,
"User": {
"Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/test3",
"UserName": "test3",
"Email": "XXXXX",
"Role": "AUTHOR",
"IdentityType": "QUICKSIGHT",
"Active": true,
"PrincipalId": "user/d-956747a400/bebc971f-e4b6-4640-9135-a65182ccad66"
},
"RequestId": "0629828a-1ed6-4208-8ae4-2828e8361289"
}
[cloudshell-user@ip-10-132-64-70 ~]$
カスタムアクセス許可を表す "CustomPermissionsName"
の項目が消えています。
ユーザーの管理画面を見ても変化は特にありませんが、
データセット画面を見ると「新しいデータセット」ボタンが表示されるようになりました!
2. カスタム許可プロファイルを削除する
delete-custom-permissions コマンドでも消せますが、カスタム許可プロファイルの削除は画面上からできるので、画面からやってみます。カスタムアクセス許可の管理画面で「削除」をクリックします。
「restrict-datasets」が消えました。同様に「restrict-datasets2」も削除します。
削除されました。
以上で QuickSight のカスタムアクセス許可(制限)の削除は完了です。
3. ユーザーにカスタムアクセス許可(制限)が割当たっている状態でカスタム許可プロファイルを削除しようとするとどうなるのか?
一つ思いついたのですが、わざわざユーザーとの紐づけを削除するという手間をかけずとも、カスタムアクセス許可(制限)の元になるカスタム許可プロファイルを消してしまえばよいのでは?と思ったので試しました。
コマンドでフォルダの操作を禁止し、update-user-custom-permission でカスタム許可プロファイルを test ユーザーに付与します。
aws quicksight update-user-custom-permission \
--user-name test \
--aws-account-id 123456789012 \
--namespace default \
--custom-permissions-name restrict-folders
▼実行結果
[cloudshell-user@ip-10-132-64-70 ~]$ aws quicksight update-user-custom-permission \
> --user-name test \
> --aws-account-id 123456789012 \
> --namespace default \
> --custom-permissions-name restrict-folders
{
"Status": 200,
"RequestId": "48973dc4-883f-47e2-9db7-2739437cc086"
}
[cloudshell-user@ip-10-132-64-70 ~]$
aws quicksight update-user-custom-permission \
--user-name test \
--aws-account-id 123456789012 \
--namespace default \
--custom-permissions-name restrict-datasets
成功しました。
test ユーザーに「restrict-folders」が付与できています。
では、カスタム許可プロファイル「restrict-folders」を削除しようとします。
以下のエラーで削除できませんでした。
このカスタムアクセス許可は 1 人以上のユーザーに割り当てられています。削除するには、まず割り当てを削除する必要があります。
カスタム許可プロファイルがユーザーやロールに紐づいていると、削除できないことが分かりました。
終わりです。