QuickSight のカスタムアクセス許可(制限)を削除する

QuickSight のカスタムアクセス許可(制限)を削除する

QuickSight のカスタムアクセス許可(制限)の紐づけを解除し、削除してみました。
Clock Icon2024.11.30

コーヒーが好きな emi です。

以下のブログで設定したカスタムアクセス許可(制限)を削除する検証をおこなったので共有します。
https://dev.classmethod.jp/articles/quicksight-set-custom-access-permissions-without-iam/

2024/11/14 で新規登場した delete-custom-permissions コマンドを使えば良さそうです。

1. ユーザーとロールに付与されているカスタムアクセス許可(制限)を外す

まず、ユーザーとロールに付与されているカスタムアクセス許可(制限)を外します。
quicksight-delete-custom-access-permissions_1

1-1. カスタム許可プロファイルとユーザーへの権限付与状況確認

QuickSight ユーザー管理画面からはこのように test ユーザーに対して「restrict-datasets」というカスタム許可プロファイルを付与し、カスタムアクセス許可(制限)を設定しています。
また、画面からは確認できませんが作成者(AUTHOR)ロールにも「restrict-datasets2」というカスタム許可プロファイルを付与し、カスタムアクセス許可(制限)を設定しています。
quicksight-delete-custom-access-permissions_4

カスタム許可プロファイルはこんな感じです。
quicksight-delete-custom-access-permissions_5

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」が消えています。
quicksight-delete-custom-access-permissions_6

カスタム許可プロファイル自体は残っています。紐づけだけが外れたイメージです。
quicksight-delete-custom-access-permissions_7

データセット画面を見ると、「restrict-datasets」を外したにもかかわらず「新しいデータセット」ボタンが表示されていません。
quicksight-delete-custom-access-permissions_8

これは、まだ作成者(AUTHOR)ロールに「restrict-datasets2」というカスタム許可プロファイルが割当たっているからです。
quicksight-delete-custom-access-permissions_23

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" の項目が消えています。
ユーザーの管理画面を見ても変化は特にありませんが、
quicksight-delete-custom-access-permissions_9

データセット画面を見ると「新しいデータセット」ボタンが表示されるようになりました!
quicksight-delete-custom-access-permissions_10

quicksight-delete-custom-access-permissions_11

quicksight-delete-custom-access-permissions_12

quicksight-delete-custom-access-permissions_13

2. カスタム許可プロファイルを削除する

quicksight-delete-custom-access-permissions_2

delete-custom-permissions コマンドでも消せますが、カスタム許可プロファイルの削除は画面上からできるので、画面からやってみます。カスタムアクセス許可の管理画面で「削除」をクリックします。
quicksight-delete-custom-access-permissions_14

quicksight-delete-custom-access-permissions_15

「restrict-datasets」が消えました。同様に「restrict-datasets2」も削除します。
quicksight-delete-custom-access-permissions_16

quicksight-delete-custom-access-permissions_17

削除されました。
quicksight-delete-custom-access-permissions_18

以上で QuickSight のカスタムアクセス許可(制限)の削除は完了です。

3. ユーザーにカスタムアクセス許可(制限)が割当たっている状態でカスタム許可プロファイルを削除しようとするとどうなるのか?

一つ思いついたのですが、わざわざユーザーとの紐づけを削除するという手間をかけずとも、カスタムアクセス許可(制限)の元になるカスタム許可プロファイルを消してしまえばよいのでは?と思ったので試しました。
quicksight-delete-custom-access-permissions_3

コマンドでフォルダの操作を禁止し、update-user-custom-permission でカスタム許可プロファイルを test ユーザーに付与します。

quicksight-delete-custom-access-permissions_19

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 ~]$ 

describe-custom-permissions

aws quicksight update-user-custom-permission \
  --user-name test \
  --aws-account-id 123456789012 \
  --namespace default \
  --custom-permissions-name restrict-datasets

成功しました。

test ユーザーに「restrict-folders」が付与できています。
quicksight-delete-custom-access-permissions_24

では、カスタム許可プロファイル「restrict-folders」を削除しようとします。
quicksight-delete-custom-access-permissions_25

以下のエラーで削除できませんでした。

このカスタムアクセス許可は 1 人以上のユーザーに割り当てられています。削除するには、まず割り当てを削除する必要があります。

quicksight-delete-custom-access-permissions_26

カスタム許可プロファイルがユーザーやロールに紐づいていると、削除できないことが分かりました。

終わりです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.