[アップデート] Amazon QuickSight で IAM Identity Center グループに QuickSight ロールをマッピングする API が追加されました

2023.12.07

いわさです。

Amazon QuickSight では IAM ユーザーではなく QuickSight アクセス用のユーザー管理が行われています。
その QuickSight ユーザーは認証基盤として IAM などをサポートしていますが、数ヶ月前に IAM Identity Center ユーザーがサポートされました。

IAM Identity Center を統合する場合、QuickSight のロール(管理者、作成者、閲覧者)に IAM Identity Center のグループを割り当てる形となり、IAM Identity Center グループにユーザーが追加されるとそのユーザーはグループにマッピングされたロールに従って QuickSight ユーザーとして自動でプロビジョニングされます。
これによってユーザーの権限コントロールを QUickSight ではなく IAM Identity Center で行うことが出来るようになります。

ただし、グループとロールのマッピングは QuickSight 管理コンソール上で行う必要があり、例えば新しいグループとユーザーが追加されても QuickSight 管理画面で管理者がオンボーディング(ロールの紐づけ)をするまでは QuickSight にアクセスが出来ませんでした。

このグループとロールの紐づけが、先日のアップデートで AWS CLI や AWS SDK などの API 経由で実行することが出来るようになりました。

これによって、IAM Identity Center でグループが作成されたあとの自動化処理でマッピング API を実行が出来るようになったので、管理者のオンボーディング操作なしに新しいユーザーやグループがすぐに QuickSight で使用出来るようになります。

通常の IAM Identity Center 統合の挙動確認

新規で QuickSight アカウントをセットアップすると認証方法に IAM Identity Center を選択することが出来ます。
前提として所属している組織(AWS Organizations)で IAM Identity Center の組織インスタンスが有効化されている必要があります。

IAM Identity Center を認証基盤に選択する場合、管理者・作成者・閲覧者に IAM Identity Center のグループをマッピングします。
そうすると、そのグループに所属しているユーザーは自動で QuickSight 上のロールも得ることが出来ます。

次は閲覧者グループに対して参加した IAM Identity Center ユーザーです。
ダッシュボードのみ利用可能な閲覧者ユーザーとして認識されていることがわかります。

このユーザーを QuickSight のユーザー確認 API で確認しても READER 権限であることがわかります。

% aws quicksight list-users --cli-input-json file://list-users.json --profile hoge1126 --region ap-northeast-1
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1122user1",
            "UserName": "hoge1122user1",
            "Email": "hogehoge+hoge1122user1@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "67a4ba38-2011-70d6-6445-e300bf9e25a8"
        }
    ],
    "Status": 200,
    "RequestId": "04861cc1-e0cb-4e5e-a732-b9e577843c8c"
}

グループにユーザーを追加しただけで QuickSight ユーザーとして認識されるようだ

今回知ったのですが IAM Identity Center の場合は QuickSight 側にアクセスしなくてもグループにユーザーが追加された瞬間に QuickSight ユーザーとして追加されるようです。

試しに次のように新規ユーザーを作成時に閲覧者グループに所属するようにしてみました。

IAM Identity Center より対象ユーザーへ招待メールが送信されますが、ここで Accept をせずにユーザー一覧を確認してみましょう。

すると、次のように READER としてこの時点で追加されていることがわかります。

% aws quicksight list-users --cli-input-json file://list-users.json --profile hoge1126 --region ap-northeast-1
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1122user1",
            "UserName": "hoge1122user1",
            "Email": "hogehoge+hoge1122user1@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "67a4ba38-2011-70d6-6445-e300bf9e25a8"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1126user",
            "UserName": "hoge1126user",
            "Email": "hogehoge+hoge1126user@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "4704ca58-60e1-7088-714c-10c87ed6dfc9"
        }
    ],
    "Status": 200,
    "RequestId": "70c618de-88c5-4d95-a42f-acebd6fdc38a"
}

新しいグループを作成してもロールマッピングしないと権限が割り当てられない

当然なのですが、IAM Identity Center で新しいグループを作成した後に QuickSight 側でグループとロールのマッピング追加を行っていない場合は、対象グループにユーザーを追加しても QuickSight のロールが割り当てられません。

試してみます。次のように新しいグループを作成します。

グループに新規ユーザーを追加します。

QuickSight のロールを割り当てたい場合は、ここで新しいグループを QuickSight 側でマッピングする管理者操作が必要になるのですが、ここではこの手順をしなかった場合を確認してみます。

ここでユーザー一覧を確認してみると、QuickSight ユーザーとしては認識されているけれどロールが割り当てられていない状態になることがわかりました。なるほど、こうなるのか。

% aws quicksight list-users --cli-input-json file://list-users.json --profile hoge1126 --region ap-northeast-1
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1122user1",
            "UserName": "hoge1122user1",
            "Email": "hogehoge+hoge1122user1@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "67a4ba38-2011-70d6-6445-e300bf9e25a8"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1126user2",
            "UserName": "hoge1126user2",
            "Email": "hogehoge+hoge1126user2@example.com",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "97044a28-0001-70e4-c147-0c99585b7212"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1126user",
            "UserName": "hoge1126user",
            "Email": "hogehoge+hoge1126user@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "4704ca58-60e1-7088-714c-10c87ed6dfc9"
        }
    ],
    "Status": 200,
    "RequestId": "45dca6d8-5997-4a83-ae15-e05c050bef1b"
}

今回のアップデートで API 経由でグループにロールをマッピング出来るように

今回のアップデートでは、次のcreate-role-membershipコマンドが追加されています。

これを行うと、従来管理者が QuickSight 管理画面で行っていたグループのロールマッピング作業を API で実行することが出来ます。
先程のグループに API 経由で閲覧者(READER)権限を割り当ててみましょう。

% cat create-role-membership.json 
{
    "MemberName": "hoge1126reader",
    "AwsAccountId": "123456789012",
    "Namespace": "default",
    "Role": "READER"
}
% aws quicksight create-role-membership --cli-input-json file://create-role-membership.json --profile hoge1126 --region ap-northeast-1 
{
    "Status": 200,
    "RequestId": "7ae1420a-ff15-4e55-b9b6-f594fd73b0a2"
}

API 実行後にユーザー一覧を改めて確認してみると READER ロールが割り当てられていることが確認出来ました。

% aws quicksight list-users --cli-input-json file://list-users.json --profile hoge1126 --region ap-northeast-1                         
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1126user",
            "UserName": "hoge1126user",
            "Email": "hogehoge+hoge1126user@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "4704ca58-60e1-7088-714c-10c87ed6dfc9"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1126user2",
            "UserName": "hoge1126user2",
            "Email": "hogehoge+hoge1126user2@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "97044a28-0001-70e4-c147-0c99585b7212"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hoge1122user1",
            "UserName": "hoge1122user1",
            "Email": "hogehoge+hoge1122user1@example.com",
            "Role": "READER",
            "IdentityType": "IAM_IDENTITY_CENTER",
            "Active": true,
            "PrincipalId": "67a4ba38-2011-70d6-6445-e300bf9e25a8"
        }
    ],
    "Status": 200,
    "RequestId": "b7d6cdb8-c06e-4b28-a69f-0e3dc318ad19"
}

QuickSight 管理画面から確認してもグループが追加されていることが確認できますね。

さいごに

本日は Amazon QuickSight で IAM Identity Center グループに QuickSight ロールをマッピングする API が追加されたので、ユーザーが存在する新規グループを API 経由でマッピングしてみました。

従来 QuickSight 管理者が手動で IAM Identity Center グループをマッピングしていたような場合、新規グループ作成時などのイベントをきっかけにワークフローを実行し、今回追加された API でマッピングすることで自動化出来そうです。

IAM Identity Center 統合自体が最近出た機能なのでまだ利用されている方少ないかもしれませんが、管理者運用の効率化の方法として API の存在を知っておくと良さそうです。