[アップデート] QuickSight 制限付き共有フォルダがサブフォルダをサポートしました

[アップデート] QuickSight 制限付き共有フォルダがサブフォルダをサポートしました

QuickSight 制限付き共有フォルダがサブフォルダをサポートしました 。
Clock Icon2024.10.18

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

本日 2024/10/17(日本時間 2024/10/18)のアップデートで、QuickSight 制限付き共有フォルダがサブフォルダをサポートしました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/10/quicksight-subfolders-restricted-folders-data-sharing/

QuickSight では「共有フォルダ」という概念でアセットをフォルダ分けすることができます。その中でも「制限付き共有フォルダ」はより強固な制限が必要なアセットを管理するために利用できます。制限付き共有フォルダについては以下ブログを参照ください。

https://dev.classmethod.jp/articles/quicksight-restricted-folder/
https://dev.classmethod.jp/articles/quicksight-restricted-shared-folder-operations/

この制限付き共有フォルダは今までサブフォルダ(子フォルダ)をサポートしていなかったのですが、今回のアップデートでサポートされました。
さっそくサブフォルダの作成と権限の付与を試してみました。

検証結果イメージ

最初に検証結果をイメージで描きます。
制限付き共有フォルダに付与された権限は、サブフォルダに継承されました。
サブフォルダのみに権限を付与し、親の制限付き共有フォルダにアクセスさせない、という構成も可能でした。
サブフォルダ内に作成した分析から、親の制限付き共有フォルダにダッシュボードを配置することもできました。
quicksight-restricted-shared-folder-sub-folder_68

サブフォルダ配下に更にサブフォルダを作成することもできました。
quicksight-restricted-shared-folder-sub-folder_67

事前準備

事前に、QuickSight ユーザー「DataAnalysisUser1」を、グループ「test-group」に所属させておきます。
quicksight-restricted-shared-folder-sub-folder_2

QuickSight のユーザー・グループの作成方法は以下ブログを参照ください。
https://dev.classmethod.jp/articles/create-and-delete-quicksight-users-groups/

制限付き共有フォルダの作成

制限付き共有フォルダは QuickSight コンソールからは作成できません。API 操作でのみ作成可能です。
まず、QuickSight への権限がある IAM ユーザーで制限付き共有フォルダを作成します。
quicksight-restricted-shared-folder-sub-folder_76

AWS マネジメントコンソールログインし、CloudShell から AWS CLI で制限付き共有フォルダを作成していきます。

まず、制限付き共有フォルダに権限を付与する QuickSight グループの一覧を表示します。

aws quicksight list-groups --aws-account-id 123456789012 --namespace default

実行結果

[cloudshell-user@ip-10-130-57-248 ~]$ aws quicksight list-groups --aws-account-id 123456789012 --namespace default
{
    "GroupList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:group/default/test-group",
            "GroupName": "test-group",
            "Description": "test-group",
            "PrincipalId": "group/d-956747a400/7d75c34e-667b-41ed-9a29-xxxxxxxxxx"
        }
    ],
    "Status": 200,
    "RequestId": "b25b4fa2-cfce-4007-88b4-d97f193e9bea"
}
[cloudshell-user@ip-10-130-57-248 ~]$ 

グループの ARN arn:aws:quicksight:ap-northeast-1:123456789012:group/default/test-group をメモしておきます。

次に AWS CLI スケルトンで制限付き共有フォルダを作成する JSON ファイル create-folder-for-test-group.json を作成します。

aws quicksight create-folder --generate-cli-skeleton > create-folder-for-test-group.json

実行結果

[cloudshell-user@ip-10-130-57-248 ~]$ aws quicksight create-folder --generate-cli-skeleton > create-folder-for-test-group.json
[cloudshell-user@ip-10-130-57-248 ~]$ 

スケルトンファイルの中身を確認します。

[cloudshell-user@ip-10-130-57-248 ~]$ ls
create-folder-for-test-group.json  
[cloudshell-user@ip-10-130-57-248 ~]$ cat create-folder-for-test-group.json 
{
    "AwsAccountId": "",
    "FolderId": "",
    "Name": "",
    "FolderType": "SHARED",
    "ParentFolderArn": "",
    "Permissions": [
        {
            "Principal": "",
            "Actions": [
                ""
            ]
        }
    ],
    "Tags": [
        {
            "Key": "",
            "Value": ""
        }
    ],
    "SharingModel": "ACCOUNT"
}
[cloudshell-user@ip-10-130-57-248 ~]$ 

create-folder-for-test-group.json を vim などで以下のように編集します。

create-folder-for-test-group.json
{
    "AwsAccountId": "123456789012",
    "FolderId": "shared_restricted_folder_for_test-group",
    "Name": "Shared restricted folder for test-group",
    "FolderType": "RESTRICTED",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:group/default/test-group",
            "Actions": [
                "quicksight:CreateFolder",
                "quicksight:DescribeFolder",
                "quicksight:CreateFolderMembership",
                "quicksight:DeleteFolderMembership",
                "quicksight:DescribeFolderPermissions"
            ]
        }
    ]
}

これは test-group に含まれる QuickSight ユーザーに寄稿者権限を付与するスケルトンファイルです。
"Permissions""Principal" にはメモしておいたグループの ARN arn:aws:quicksight:ap-northeast-1:123456789012:group/default/test-group を記入します。

では、create-folder コマンドで制限付き共有フォルダを作成します。

aws quicksight create-folder \
  --cli-input-json file://create-folder-for-test-group.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight create-folder \
>   --cli-input-json file://create-folder-for-test-group.json
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/shared_restricted_folder_for_test-group",
    "FolderId": "shared_restricted_folder_for_test-group",
    "RequestId": "914e4965-c977-404a-87bb-6ea9c559bd06"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

制限付き共有フォルダが作成されたか、list-folders コマンドで確認します。

aws quicksight list-folders --aws-account-id 123456789012

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight list-folders --aws-account-id 123456789012
{
    "FolderSummaryList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/shared_restricted_folder_for_test-group",
            "FolderId": "shared_restricted_folder_for_test-group",
            "Name": "Shared restricted folder for test-group",
            "FolderType": "RESTRICTED",
            "CreatedTime": "2024-10-18T03:44:50.613000+00:00",
            "LastUpdatedTime": "2024-10-18T03:44:50.613000+00:00",
            "SharingModel": "ACCOUNT"
        }
    ],
    "Status": 200,
    "RequestId": "dd38e763-f8d5-46a9-b629-29a1425d51b8"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

「Shared restricted folder for test-group」という名前の制限付き共有フォルダが作成されたことが確認できました。

さて、制限付き共有フォルダを作成した IAM 権限のある QuickSight ユーザー「xxxkitani.emi」は「test-group」に所属していませんので、QuickSight コンソール画面上では制限付き共有フォルダが確認できません。
quicksight-restricted-shared-folder-sub-folder_3

「test-group」に所属している「DataAnalysisUser1」で、制限付き共有フォルダが確認できました。制限付き共有フォルダには鍵マークが表示されます。
quicksight-restricted-shared-folder-sub-folder_4

制限付き共有フォルダ「Shared restricted folder for test-group」の権限を「View permissions」で確認します。
quicksight-restricted-shared-folder-sub-folder_5

「test-group」に寄稿者の権限が付与されていることが分かります。
quicksight-restricted-shared-folder-sub-folder_6

制限付き共有フォルダのサブフォルダの作成

では、サブフォルダを作成します。

制限付き共有フォルダ「Shared restricted folder for test-group」内から「+新規」をクリックすると、「フォルダ」が選択できるようになっています。クリックします。
quicksight-restricted-shared-folder-sub-folder_7

サブフォルダの名前を入力して「作成」をクリックします。今回は「sub-folder」という名前にしました。
quicksight-restricted-shared-folder-sub-folder_8

サブフォルダ「sub-folder」ができました。
quicksight-restricted-shared-folder-sub-folder_9

サブフォルダ「sub-folder」の権限を見てみます。
quicksight-restricted-shared-folder-sub-folder_10

何も表示されません。
quicksight-restricted-shared-folder-sub-folder_11

「継承されたアクセス許可を表示」にチェックを入れると、親の制限付き共有フォルダに付与されていた権限が表示されました。親の制限付き共有フォルダに付与された権限はサブフォルダにも継承されることが分かります。
quicksight-restricted-shared-folder-sub-folder_12

quicksight-restricted-shared-folder-sub-folder_75

サブフォルダ内でのアセット作成

サブフォルダ内でアセットを作成してみます。
quicksight-restricted-shared-folder-sub-folder_74

今回は CSV ファイルをアップロードしてみました。
quicksight-restricted-shared-folder-sub-folder_13

quicksight-restricted-shared-folder-sub-folder_14

quicksight-restricted-shared-folder-sub-folder_15

CSV データを確認したら、「保存して公開」をクリックしてデータセットとして保存します。
quicksight-restricted-shared-folder-sub-folder_16

ここでフォルダの階層が選べますね。サブフォルダ「sub-folder」を選択して「追加」してみます。
quicksight-restricted-shared-folder-sub-folder_17

サブフォルダ「sub-folder」にデータセットを作成できました。このデータセットは別の共有フォルダに移動したり、フォルダから削除したりできないようです。
quicksight-restricted-shared-folder-sub-folder_18

さて、今度は作成したデータセットから分析を作成します。「保存して視覚化」を選択すると、またフォルダ選択画面が表示されました。このまま同じサブフォルダ「sub-folder」内に分析を作成していきます。
quicksight-restricted-shared-folder-sub-folder_19

分析でデータを可視化します。ビジュアルは垂直積み上げ棒グラフにしました。「公開」をクリックしてダッシュボードを作成します。
quicksight-restricted-shared-folder-sub-folder_20

ダッシュボードの名前を指定します。このまま進むとダッシュボードはサブフォルダ「sub-folder」内に作成されると表示されています。「CHANGE FOLDER」でフォルダを変更できそうなので、「CHANGE FOLDER」をクリックしてみます。
quicksight-restricted-shared-folder-sub-folder_21-2

親の制限付き共有フォルダが選択できそうです。親の制限付き共有フォルダ「Shared restricted folder for test-group」を選択して「追加」を押してみます。
quicksight-restricted-shared-folder-sub-folder_22

注意書きを読んでみると、

Dashboard must be saved within the restricted folder root of this analysis(このダッシュボードは、この分析の制限付きフォルダーのルートに保存する必要があります。)

とのことでした。なるほど、制限付き共有フォルダのルート配下ならどこでも配置できそうです。
今回はこのまま親の制限付き共有フォルダ「Shared restricted folder for test-group」を選択した状態で「ダッシュボードの公開」をクリックします。
quicksight-restricted-shared-folder-sub-folder_23

ダッシュボードが作成されました。
quicksight-restricted-shared-folder-sub-folder_24

親の制限付き共有フォルダ「Shared restricted folder for test-group」配下を見ると、サブフォルダ「sub-folder」と、ダッシュボードが配置されているのが分かります。サブフォルダ内の分析から、サブフォルダの外にダッシュボードができていますね。
quicksight-restricted-shared-folder-sub-folder_25

再度、サブフォルダ「sub-folder」配下のデータセットから分析を作成し、今度は水平積み上げ棒グラフで可視化しました。ダッシュボードはこのままサブフォルダ「sub-folder」に作成してみます。
quicksight-restricted-shared-folder-sub-folder_26

サブフォルダ「sub-folder」にもダッシュボードが作成できました。
quicksight-restricted-shared-folder-sub-folder_27

サブフォルダ内のアセットも、別の共有フォルダに移動したり、フォルダから削除したりはできないようです。「最近のスナップショットを見る」と「削除」は選択できそうです。
quicksight-restricted-shared-folder-sub-folder_28

グループにユーザーを追加

グループ「test-group」に QuickSight ユーザー「DataAnalysisUser2」を追加して、想定通りアセットが見えるか確認してみます。
quicksight-restricted-shared-folder-sub-folder_73

まずはユーザーを作成して、
quicksight-restricted-shared-folder-sub-folder_29

グループ「test-group」に追加します。
quicksight-restricted-shared-folder-sub-folder_30

親の制限付き共有フォルダ内は見えますね。
quicksight-restricted-shared-folder-sub-folder_31

quicksight-restricted-shared-folder-sub-folder_32

サブフォルダ内も見えます。
quicksight-restricted-shared-folder-sub-folder_33

quicksight-restricted-shared-folder-sub-folder_34

ちなみに QuickSight の閲覧者権限のユーザーは、フォルダやアセットに三点リーダが表示されず、権限を確認することができません。
quicksight-restricted-shared-folder-sub-folder_35

サブフォルダのみに権限を付与

次は、サブフォルダのみに権限を付与し、「親の制限付き共有フォルダのアセットは見えないが、サブフォルダ内のアセットは見える」状態が可能かやってみます。
quicksight-restricted-shared-folder-sub-folder_71

検証用に QuickSight ユーザー「DataAnalysisUser3」を作成します。特にグループに追加はしません。
quicksight-restricted-shared-folder-sub-folder_36

まだ何も見えません。
quicksight-restricted-shared-folder-sub-folder_37

サブフォルダーの権限設定も画面からはできないようなので、CloudShell から AWS CLI で実施します。

まず list-users コマンドで QuickSight ユーザー一覧を取得します。

aws quicksight list-users \
  --aws-account-id 123456789012 \
  --namespace default

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight list-users \
>   --aws-account-id 123456789012 \
>   --namespace default
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/xxx/xxxkitani.emi",
            "UserName": "xxx/xxxkitani.emi",
            "Email": "xxxxx",
            "Role": "ADMIN",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/XXXXXXXXXX:xxxkitani.emi"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser1",
            "UserName": "DataAnalysisUser1",
            "Email": "xxxxx",
            "Role": "AUTHOR",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/XXXXXXXXXX"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser2",
            "UserName": "DataAnalysisUser2",
            "Email": "xxxxx",
            "Role": "READER",
            "IdentityType": "QUICKSIGHT",
            "Active": true,
            "PrincipalId": "user/d-956747a400/06dd5d12-3976-47d1-8505-e7e5c7ef4f70"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3",
            "UserName": "DataAnalysisUser3",
            "Email": "xxxxx",
            "Role": "READER",
            "IdentityType": "QUICKSIGHT",
            "Active": true,
            "PrincipalId": "user/d-956747a400/b342ac19-97ca-406b-a1ee-853baaf79b72"
        }
    ],
    "Status": 200,
    "RequestId": "9457b6de-6bfd-4b54-8eae-cd6772079ad0"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

「DataAnalysisUser3」の ARN arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3 をメモしておきます。

次に、サブフォルダのフォルダ ID を確認します。list-folders を実行します。

aws quicksight list-folders --aws-account-id 123456789012

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight list-folders --aws-account-id 123456789012
{
    "FolderSummaryList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/9e740b22-b78f-4115-8307-032d3c48bc2f",
            "FolderId": "9e740b22-b78f-4115-8307-032d3c48bc2f",
            "Name": "sub-folder",
            "FolderType": "RESTRICTED",
            "CreatedTime": "2024-10-18T03:53:41.553000+00:00",
            "LastUpdatedTime": "2024-10-18T03:53:41.553000+00:00",
            "SharingModel": "ACCOUNT"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/shared_restricted_folder_for_test-group",
            "FolderId": "shared_restricted_folder_for_test-group",
            "Name": "Shared restricted folder for test-group",
            "FolderType": "RESTRICTED",
            "CreatedTime": "2024-10-18T03:44:50.613000+00:00",
            "LastUpdatedTime": "2024-10-18T03:44:50.613000+00:00",
            "SharingModel": "ACCOUNT"
        }
    ],
    "Status": 200,
    "RequestId": "a56723a3-a317-4ef8-a60c-c3852c9b7b4d"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

「sub-folder」の FolderId "9e740b22-b78f-4115-8307-032d3c48bc2f" をメモしておきます。

次に AWS CLI スケルトンで制限付き共有フォルダのサブフォルダの権限を変更する JSON ファイル update-sub-folder-permissions.json を作成します。

aws quicksight update-folder-permissions --generate-cli-skeleton > update-sub-folder-permissions.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight update-folder-permissions --generate-cli-skeleton > update-sub-folder-permissions.json
[cloudshell-user@ip-10-132-91-55 ~]$

スケルトンファイルの中身を確認します。

[cloudshell-user@ip-10-132-91-55 ~]$ ls
create-folder-for-test-group.json  update-sub-folder-permissions.json
[cloudshell-user@ip-10-132-91-55 ~]$ cat update-sub-folder-permissions.json 
{
    "AwsAccountId": "",
    "FolderId": "",
    "GrantPermissions": [
        {
            "Principal": "",
            "Actions": [
                ""
            ]
        }
    ],
    "RevokePermissions": [
        {
            "Principal": "",
            "Actions": [
                ""
            ]
        }
    ]
}
[cloudshell-user@ip-10-132-91-55 ~]$

update-sub-folder-permissions.json を vim などで以下のように編集します。

update-sub-folder-permissions.json
{
  "AwsAccountId": "123456789012",
  "FolderId": "9e740b22-b78f-4115-8307-032d3c48bc2f",
  "GrantPermissions": [
      {
          "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3",
          "Actions": [
              "quicksight:DescribeFolder"
          ]
      }
  ]
}

これは「DataAnalysisUser3」に表示者権限を付与するスケルトンファイルです。
"FolderId" にはメモしておいたフォルダ ID "9e740b22-b78f-4115-8307-032d3c48bc2f" を記入します。
"GrantPermissions""Principal" にはメモしておいた「DataAnalysisUser3」の ARN arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3 を記入します。

では、update-folder-permissions コマンドでサブフォルダの権限を変更します。

aws quicksight update-folder-permissions \
  --cli-input-json file://update-sub-folder-permissions.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight update-folder-permissions \
>   --cli-input-json file://update-sub-folder-permissions.json
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/9e740b22-b78f-4115-8307-032d3c48bc2f",
    "FolderId": "9e740b22-b78f-4115-8307-032d3c48bc2f",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3",
            "Actions": [
                "quicksight:DescribeFolder"
            ]
        }
    ],
    "RequestId": "071bcb16-b02e-46f3-9726-fb522404e107"
}
[cloudshell-user@ip-10-132-91-55 ~]$

では、制限付き共有フォルダの権限を見てみます。
quicksight-restricted-shared-folder-sub-folder_39

親の制限付き共有フォルダ「Shared restricted folder for test-group」の権限は先ほどと同じです。
quicksight-restricted-shared-folder-sub-folder_40

サブフォルダ「sub-folder」の権限を見ると、継承されたアクセス許可の他に、「DataAnalysisUser3」の表示者権限が追加されていることが分かります。
quicksight-restricted-shared-folder-sub-folder_41

quicksight-restricted-shared-folder-sub-folder_42

quicksight-restricted-shared-folder-sub-folder_43

DataAnalysisUser3 で共有フォルダを確認すると、親の制限付き共有フォルダ「Shared restricted folder for test-group」が見えていてクリックできるようになっています。
quicksight-restricted-shared-folder-sub-folder_44

親の制限付き共有フォルダ「Shared restricted folder for test-group」内にはダッシュボードも配置したはずですが、DataAnalysisUser3 では見えません。
quicksight-restricted-shared-folder-sub-folder_45

サブフォルダ「sub-folder」に入り込むと、ダッシュボードが見えました。
quicksight-restricted-shared-folder-sub-folder_46

quicksight-restricted-shared-folder-sub-folder_47

親の制限付き共有フォルダには権限を付与せず、サブフォルダのみに権限を付与することが可能だと分かりました。
quicksight-restricted-shared-folder-sub-folder_72

権限の継承を削除できるか

次は、親の制限付き共有フォルダに付与した権限がサブフォルダに継承されないようにできるか(サブフォルダの継承権限を削除できるか)試してみます。
quicksight-restricted-shared-folder-sub-folder_69

検証用に QuickSight ユーザー「DataAnalysisUser4」を作成します。特にグループに追加はしません。
quicksight-restricted-shared-folder-sub-folder_48

まだ何も見えません。
quicksight-restricted-shared-folder-sub-folder_49

まずは、親の制限付き共有フォルダ「Shared restricted folder for test-group」に「DataAnalysisUser4」の表示者権限を付与します。

list-users コマンドで QuickSight ユーザー一覧を取得します。

aws quicksight list-users \
  --aws-account-id 123456789012 \
  --namespace default
実行結果
[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight list-users \
>   --aws-account-id 123456789012 \
>   --namespace default
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/xxx/xxxkitani.emi",
            "UserName": "xxx/xxxkitani.emi",
            "Email": "xxxxx",
            "Role": "ADMIN",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/XXXXXXXXXX:xxxkitani.emi"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser1",
            "UserName": "DataAnalysisUser1",
            "Email": "xxxxx",
            "Role": "AUTHOR",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/XXXXXXXXXX"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser4",
            "UserName": "DataAnalysisUser4",
            "Email": "xxxxx",
            "Role": "READER",
            "IdentityType": "QUICKSIGHT",
            "Active": true,
            "PrincipalId": "user/d-956747a400/003e084d-1f9c-44f3-972c-3685c2e76ea6"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser2",
            "UserName": "DataAnalysisUser2",
            "Email": "xxxxx",
            "Role": "READER",
            "IdentityType": "QUICKSIGHT",
            "Active": true,
            "PrincipalId": "user/d-956747a400/06dd5d12-3976-47d1-8505-e7e5c7ef4f70"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3",
            "UserName": "DataAnalysisUser3",
            "Email": "xxxxx",
            "Role": "READER",
            "IdentityType": "QUICKSIGHT",
            "Active": true,
            "PrincipalId": "user/d-956747a400/b342ac19-97ca-406b-a1ee-853baaf79b72"
        }
    ],
    "Status": 200,
    "RequestId": "b862392a-0390-44b5-9b6e-94fd062bd5dc"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

「DataAnalysisUser4」の ARN arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser4 をメモしておきます。

次に AWS CLI スケルトンで制限付き共有フォルダのサブフォルダの権限を変更する JSON ファイル update-sub-folder-permissions2.json を作成します。

aws quicksight update-folder-permissions --generate-cli-skeleton > update-sub-folder-permissions2.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight update-folder-permissions --generate-cli-skeleton > update-sub-folder-permissions2.json
[cloudshell-user@ip-10-132-91-55 ~]$ 

スケルトンファイルの中身を確認します。

[cloudshell-user@ip-10-132-91-55 ~]$ ls
create-folder-for-test-group.json  update-sub-folder-permissions2.json  update-sub-folder-permissions.json
[cloudshell-user@ip-10-132-91-55 ~]$ cat update-sub-folder-permissions2.json 
{
    "AwsAccountId": "",
    "FolderId": "",
    "GrantPermissions": [
        {
            "Principal": "",
            "Actions": [
                ""
            ]
        }
    ],
    "RevokePermissions": [
        {
            "Principal": "",
            "Actions": [
                ""
            ]
        }
    ]
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

update-sub-folder-permissions2.json を vim などで以下のように編集します。

update-sub-folder-permissions2.json
{
  "AwsAccountId": "123456789012",
  "FolderId": "shared_restricted_folder_for_test-group",
  "GrantPermissions": [
      {
          "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser4",
          "Actions": [
              "quicksight:DescribeFolder"
          ]
      }
  ]
}

これは「DataAnalysisUser4」に表示者権限を付与するスケルトンファイルです。
"FolderId" には親の制限付き共有フォルダのフォルダ ID "shared_restricted_folder_for_test-group" を記入します。
"GrantPermissions""Principal" にはメモしておいた「DataAnalysisUser4」の ARN arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser4 を記入します。

では、update-folder-permissions コマンドでサブフォルダの権限を変更します。

aws quicksight update-folder-permissions \
  --cli-input-json file://update-sub-folder-permissions2.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight update-folder-permissions \
>   --cli-input-json file://update-sub-folder-permissions2.json
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/shared_restricted_folder_for_test-group",
    "FolderId": "shared_restricted_folder_for_test-group",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser4",
            "Actions": [
                "quicksight:DescribeFolder"
            ]
        },
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:group/default/test-group",
            "Actions": [
                "quicksight:CreateFolder",
                "quicksight:DescribeFolder",
                "quicksight:CreateFolderMembership",
                "quicksight:DeleteFolderMembership",
                "quicksight:DescribeFolderPermissions"
            ]
        }
    ],
    "RequestId": "fae515ba-2cbc-401d-998f-d7ce68da34c2"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

親の制限付き共有フォルダ「Shared restricted folder for test-group」の権限を確認します。
quicksight-restricted-shared-folder-sub-folder_50

「DataAnalysisUser4」が表示者権限で追加されているのが分かります。
quicksight-restricted-shared-folder-sub-folder_51

サブフォルダの権限も確認します。
quicksight-restricted-shared-folder-sub-folder_52

親フォルダからの継承で、「DataAnalysisUser4」が表示者権限になっているのが分かります。
quicksight-restricted-shared-folder-sub-folder_53

「DataAnalysisUser4」からの見え方も確認します。親の制限付き共有フォルダ「Shared restricted folder for test-group」は見えていますね。
quicksight-restricted-shared-folder-sub-folder_54

親の制限付き共有フォルダ「Shared restricted folder for test-group」配下のダッシュボードも見えています。
quicksight-restricted-shared-folder-sub-folder_55

サブフォルダ配下のダッシュボードも見えています。
quicksight-restricted-shared-folder-sub-folder_56

quicksight-restricted-shared-folder-sub-folder_57

quicksight-restricted-shared-folder-sub-folder_58

親の制限付き共有フォルダに付与した表示者権限がサブフォルダに継承されているのが分かりました。続いて、サブフォルダ側で継承された権限を削除しようとします。

AWS CLI スケルトンで制限付き共有フォルダのサブフォルダの権限を変更する JSON ファイル update-sub-folder-permissions3.json を作成します。

aws quicksight update-folder-permissions --generate-cli-skeleton > update-sub-folder-permissions3.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight update-folder-permissions --generate-cli-skeleton > update-sub-folder-permissions3.json
[cloudshell-user@ip-10-132-91-55 ~]$ 

update-sub-folder-permissions3.json を vim などで以下のように編集します。

update-sub-folder-permissions3.json
{
  "AwsAccountId": "123456789012",
  "FolderId": "9e740b22-b78f-4115-8307-032d3c48bc2f",
  "RevokePermissions": [
      {
          "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser4",
          "Actions": [
              "quicksight:DescribeFolder"
          ]
      }
  ]
}

これはサブフォルダから「DataAnalysisUser4」の表示者権限を削除するスケルトンファイルです。
"FolderId" にはサブフォルダのフォルダ ID "9e740b22-b78f-4115-8307-032d3c48bc2f" を記入します。
"RevokePermissions""Principal" には「DataAnalysisUser4」の ARN を記入します。

では、update-folder-permissions コマンドでサブフォルダの権限を変更します。

aws quicksight update-folder-permissions \
  --cli-input-json file://update-sub-folder-permissions3.json

実行結果

[cloudshell-user@ip-10-132-91-55 ~]$ aws quicksight update-folder-permissions \
>   --cli-input-json file://update-sub-folder-permissions3.json
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/9e740b22-b78f-4115-8307-032d3c48bc2f",
    "FolderId": "9e740b22-b78f-4115-8307-032d3c48bc2f",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/DataAnalysisUser3",
            "Actions": [
                "quicksight:DescribeFolder"
            ]
        }
    ],
    "RequestId": "6375d377-fdfb-4511-a33d-0a1c20111add"
}
[cloudshell-user@ip-10-132-91-55 ~]$ 

エラーにはならずに完了しました。

「DataAnalysisUser4」からの見え方を確認すると、サブフォルダの中のダッシュボードまで見えてしまいます。
quicksight-restricted-shared-folder-sub-folder_59

quicksight-restricted-shared-folder-sub-folder_60

quicksight-restricted-shared-folder-sub-folder_61

サブフォルダの権限を確認しましたが、継承されたアクセス許可には「DataAnalysisUser4」が表示されたままで、変わっていません。
quicksight-restricted-shared-folder-sub-folder_62

継承されたアクセス許可はサブフォルダ側で削除できないことが分かりました。
quicksight-restricted-shared-folder-sub-folder_70

サブフォルダのサブフォルダを作成

ついでにサブフォルダ配下に更にサブフォルダができるかもやってみました。いけます。
quicksight-restricted-shared-folder-sub-folder_63

名前は「sub-sub-folder」にしました。
quicksight-restricted-shared-folder-sub-folder_64

できました。
quicksight-restricted-shared-folder-sub-folder_65

今回はこれ以上やりませんが、更に階層化できそうです。
quicksight-restricted-shared-folder-sub-folder_66

終わりに

制限付き共有フォルダでサブフォルダがサポートされたので、いろいろと試してみました。
制限付き共有フォルダ内でアセットがバラバラにならないようまとめるのに役立ちそうです。サブフォルダのみに権限が付与できるのも面白いですね。
通常の制限付き共有フォルダと同様、サブフォルダからのアセットの移動やサブフォルダへのアセットの移動はできないので、フォルダ構成の設計は注意する必要があります。
サブフォルダに継承される権限は変更できないので注意してください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.