Microsoft Entra ID ユーザーを、IAM Identity Center 経由で Amazon QuickSight とシームレスに統合する

## この記事は何か ？
以下のような構成で Microsoft Entra ID (以後、Entra) ユーザーが、Amazon QuickSight にログインできるようし、ユーザー管理を Entra 側で行う為の手順に関するメモとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/00e9f127-7629-05e4-05ae-4722dac6e188.png)


その際に AWS IAM Identity Center (以後、IdC) を間に挟む構成を取ることで、Entra ユーザーの QuickSight ログイン環境を簡単に構築できます。

また、グループメンバーシップの管理もEntra 側で行え、ユーザーの異動や退職があった際も Entra 側の情報と同期する事が可能となります。

## 参考
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/sec-identity-management-identity-center.html

https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/provision-automatically.html

## 前提
- 既に Entra ID 側でユーザーとグループが作成されている
- AWS Organization と統合されている、IAM Identity Center 環境があり、QuickSight 専用に独立した IAM Identity Center 環境を新規に構築する
- Microsoft Entra ID P1 以上のプランを契約している (グループ単位でのアプリケーション割当を行う必要があるため)

## 構築編 〜手順概要〜

1. [【IdC 作業】 アカウントインスタンス有効化](#1-idc-%E4%BD%9C%E6%A5%AD-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E6%9C%89%E5%8A%B9%E5%8C%96)
1. [【IdC 作業】 アイデンティティソース変更](#2-idc-%E4%BD%9C%E6%A5%AD-%E3%82%A2%E3%82%A4%E3%83%87%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%82%BD%E3%83%BC%E3%82%B9%E5%A4%89%E6%9B%B4)
1. [【Entra 作業】 エンタープライズアプリケーション作成](#3-entra-%E4%BD%9C%E6%A5%AD-%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%97%E3%83%A9%E3%82%A4%E3%82%BA%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%BD%9C%E6%88%90)
1. [【IdC 作業】 アイデンティティソース変更 (つづき) ~ 外部アイデンティティプロバイダーを設定 ~](#4-idc-%E4%BD%9C%E6%A5%AD-%E3%82%A2%E3%82%A4%E3%83%87%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%82%BD%E3%83%BC%E3%82%B9%E5%A4%89%E6%9B%B4-%E3%81%A4%E3%81%A5%E3%81%8D--%E5%A4%96%E9%83%A8%E3%82%A2%E3%82%A4%E3%83%87%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80%E3%83%BC%E3%82%92%E8%A8%AD%E5%AE%9A-)
1. [【Entra 作業】 ユーザー、グループの割当](#5-entra-%E4%BD%9C%E6%A5%AD-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E5%89%B2%E5%BD%93)
1. [【IdC 作業】自動プロビジョニング設定](#6-idc-%E4%BD%9C%E6%A5%AD%E8%87%AA%E5%8B%95%E3%83%97%E3%83%AD%E3%83%93%E3%82%B8%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E8%A8%AD%E5%AE%9A)
1. [【Entra 作業】自動プロビジョニング設定](#7-entra-%E4%BD%9C%E6%A5%AD%E8%87%AA%E5%8B%95%E3%83%97%E3%83%AD%E3%83%93%E3%82%B8%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E8%A8%AD%E5%AE%9A)
1. [【QuickSight 作業】 環境セットアップ](#8-quicksight-%E4%BD%9C%E6%A5%AD-%E7%92%B0%E5%A2%83%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)

## ユーザー管理編 〜グループ、ユーザー追加・削除 手順〜

1. [グループ追加](#1-%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E8%BF%BD%E5%8A%A0)
1. [グループ削除](#2-%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E5%89%8A%E9%99%A4)
1. [ユーザー追加](#3-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E8%BF%BD%E5%8A%A0)
1. [ユーザー削除](#4-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%89%8A%E9%99%A4)

## 構築編

### 1. 【IdC 作業】 アカウントインスタンス有効化

Organization と紐づいているIdCがある場合は、アカウントインスタンスを有効にする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/def82973-0c25-5100-59f6-aef887e73b79.png)

アカウントインスタンスの作成が有効になっていないと以下のようなエラーが出る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/3a0cd58b-5518-9d5f-aefb-0ff395e86c80.png)

アカウントインスタンスを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d6e14168-12c3-8c9d-1c96-9f7d832266ab.png)

### 2. 【IdC 作業】 アイデンティティソース変更
アカウントインスタンスが作成されたら、「アイデンティティソースの変更」 を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/8ab00bbc-adc7-60d6-55e4-89b770a476ad.png)

外部 ID プロバイダーを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/78a3d7c6-f3c2-2602-da23-d25aa675c4da.png)

以下画面になったら、「メタデータファイルをダウンロード」し、画面はそのままで別ウィンドウを立ち上げ、Microsoft Entra ID 側の作業に移ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/8eee1d4e-8d10-6561-776f-9b7bbd7f6141.png)


### 3. 【Entra 作業】 エンタープライズアプリケーション作成
エンタープライズアプリケーション > 管理 > すべてのアプリケーション を選択し、新しいアプリケーション作成を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/3e785cec-1565-48d9-ebde-a0b0c73d5da2.png)

検索ボックスで、aws と入れて、「AWS IAM Identity Center (successor to AWS Single Sighn-On)」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/3832a60c-4fbe-58c9-b583-c363739b6822.png)

任意のアプリケーション名を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/01a457f5-58cf-f74f-3f61-a220dba15e87.png)

アプリケーションが作成されたら、「シングルサインオン」> 「メタデータファイルをアップロードする」から、2 の手順でDLしたメタデータをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1e58c549-f813-b96a-897a-2e750c84ef2e.png)

基本的な SAML 構成に反映された内容を確認し、保存を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/92d44691-4f0d-9d99-91b2-a52a235b5d3b.png)

保存が完了したら、証明書 (未加工)、フェデレーション メタデータ XMLを DL します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/2f3fabda-4267-451b-ecfa-d0d80eb89f12.png)

### 4. 【IdC 作業】 アイデンティティソース変更 (つづき) ~ 外部アイデンティティプロバイダーを設定 ~

IdC の画面に戻り、一つ前の手順で DL した、メタデータをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/0e6078ca-0348-d059-52b2-ae59ca9b6bb8.png)

アップロードが完了したら、「次へ」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/29a378b9-c4cd-cbbd-4cad-da77fed8977d.png)

その後、設定内容を確認し、「承諾」の文字列を入力して、「アイデンティティソースを変更」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/71519b52-607d-b6c8-2ddd-ea50bb2f752e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/099d2311-9ea1-f700-d73e-e9e6e7d3aa70.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/de58b41d-8998-a059-f74c-d065d94bd4e9.png)

以上で、IdC のアイデンティティソースの変更作業は終了となります。

### 5. 【Entra 作業】 ユーザー、グループの割当
エンタープライズアプリケーションの、「ユーザーとグループ」 > 「ユーザーまたはグループの追加」を選択し、
グループやユーザーをエンタープライズアプリケーションと紐づけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/33ed4ca7-c6f2-b832-025c-423c7c157439.png)

:::note warn
あらかじめ、Entra ユーザーの「性」、「名」がセットされているか確認をお願いします。セットされていないと、以降の自動プロビジョニング設定が失敗します。
:::

### 6. 【IdC 作業】自動プロビジョニング設定
IdCの設定画面から、自動プロビジョニングを「有効にする」を選択し、SCIMエンドポイントとアクセストークンを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/ef426443-b4fd-aba0-8dd1-7a9d81ae320c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1864f9d1-d87c-ce20-968f-10b8231c9f96.png)

### 7. 【Entra 作業】自動プロビジョニング設定

エンタープライズアプリケーション > プロビジョニング > 作業の開始 を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1ba97bf3-8801-8b6b-6724-b1c430c10844.png)

テナントのURL、シークレットトークンに前ページで取得したSCIMエンドポイントとアクセストークン入力し、「テスト接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/104a74df-7125-cd4b-5134-1973bab45db0.png)

以下、通知が出れば、テスト接続は成功しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d974c8d1-359e-1fe6-db79-e156958257c4.png)

テスト接続成功後、「保存」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/8015e600-67b6-6162-7c39-66b8806f140f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d0871190-993f-d144-961b-7635060dccb5.png)

設定完了後、「プロビジョニングの開始」を選択します。
同期されたユーザー、グループ数が表示されれば問題なく動作しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/02708c46-10f6-4ec0-6211-25150f1ea05f.png)

IdC 側にも正常に同期が行えているか確認します。
正常に同期できていれば、以下のように IdC 側にもグループやユーザーが連携されているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a41980c7-bf55-2fe8-5135-4721fcdb915d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/ae87ade9-001a-4fca-7c89-6e346d8bdb11.png)

以上で自動プロビジョニングの設定が完了となります。

### 8. 【QuickSight 作業】 環境セットアップ

認証方法で、「AWS IAM アイデンティティセンターを使用」を選択し、
IAM アイデンティティセンターのインスタンスを選択で、
「IAM アイデンティティセンターのアカウントインスタンスに接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/59bd22c5-693d-d9e3-c1c9-ecbd4c23a3ae.png)

管理グループで、ライセンス/ロール毎に Entra のエンタープライズアプリケーションと紐づいているグループを割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/b461d914-ec86-d209-4f40-88174498cd9b.png)

:::note warn
記事執筆時点では、グループ単位の割当となり、ユーザー単位での割当は行えませんでした。
:::

グループの割当、必要なリソースへのアクセスを選択し、環境設定を完了させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/199ec6dd-f6b1-0138-d334-62ab39aee101.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/c82c32f5-ced4-5aea-033f-8b8f2e1f623a.png)

以下の画面にて、QuickSight の環境セットアップは完了となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/340c6ea2-c1a8-8f84-74ec-c58154b42dbe.png)

以上で、QuickSight と Entra での認証設定が完了となります。


### その他、注意事項
- IdCとの構成を選択した場合、以下のオペレーションを行う際は、Entra ユーザーではなく、AWS IAM の Admin相当の方が、IAM 経由でQuickSightにログインして作業する必要があります。（その際、QuickSightのユーザーが作られる訳ではないので、ユーザー課金は発生しません。）
    - Entra グループと QuickSightのライセンス・ロール との紐づけ
    - グループに対する IAM ポリシーの割当
    - VPC 接続の管理

- IdC の構成を組むことで、SAML ベースのログイン時に設定していた、SP Initiated の設定は不要です。
- QuickSight にログインする際は、以下の URL パラメータ指定で ログイン時の QS アカウント名入力を省略できます。 
    - ```directory_alias=Sample```

- QuickSightと連携されているEntra のグループからユーザーが抜けた場合、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/8e132743-18b1-c54a-9964-b77987ec10c0.png)

## ユーザー管理編

### 1. グループ追加
グループ > すべてのグループから、「新しいグループ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a4d43b17-0356-8ca5-9ce5-be0ddcc05a6b.png)

グループ名を入力し、「作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/de4469b0-4c58-acfd-72aa-af057d54796b.png)

エンタープライズアプリケーションの「ユーザーとグループ」を選択し、「ユーザーまたはグループの追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/4ab4e87c-4c1f-bb11-ae6c-73cb3e20b6a6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/56e0f1bc-c7d7-ad94-69b8-a6074197a743.png)

エンタープライズアプリケーションに追加する、グループにチェックを入れ、「選択」> 「割り当て」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/71d7f16f-0ccb-d30a-9a05-83c6d8c305e5.png)

エンタープライズアプリケーションに新たに、グループが追加されました。
自動プロビジョニングの実行タイミングで作成されたグループが IdC に連携されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e4d35380-d892-2e98-f013-e04abe2f8d1e.png)

IAM Admin相当の権限で、AWSマネジメントコンソールにアクセスし、IdC にグループ連携されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/0a78079f-421f-45e1-cb53-9b9fc565c402.png)

続いて、QuickSight にアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/436ce634-e53b-a0a2-26e3-d917a4455ff7.png)

「ユーザーを管理」 > 「ロールグループの管理を選択し、「ロールグループの管理」を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/5dd4682b-7909-3128-9907-c5c79da5ee6b.png)

アサイン先のQucikSightロール(ライセンス)の、「グループの追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/4187f549-5b72-bbad-4af8-e24383d20005.png)

Entaraで新規追加したグループを選択し、「選択したグループを追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a7271134-90ad-9ed6-19de-b9cdb61e3fb3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/bc9b3dcb-3f8b-d7cc-f7f8-4ce03a80861b.png)

以上でグループの追加作業は完了となります。

### 2. グループ削除
グループを削除する場合は、Entra のエンタープライズアプリケーション > ユーザーとグループから、対象のグループを削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/4e7c408c-ea62-b0b5-f14e-73c241e0625c.png)

自動プロビジョニングによる、IdCへの同期完了と同時にQuickSight 側からもグループの同期設定が消えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/c41d616a-0358-9c03-abac-64cd99b7fb65.png)

### 3. ユーザー追加
ユーザーを追加するグループを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/eb3386c2-3a94-5e7d-dcf4-b93ee0ca4bd1.png)

「メンバー」 > 「メンバーの追加」 を選択し、対象のユーザーをチェック後、「選択」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/be44d033-8c20-7c55-e425-3346129de9c2.png)

自動プロビジョニング実行タイミングで作成されたユーザーが IdC に同期されます。
また、IdCへの同期完了と同時に、QuickSight側でもユーザーが作成されています。
QuickSight 側のユーザー作成の確認を行う場合は、以下コマンドでご確認下さい。


```
aws quicksight list-users --aws-account-id {awsアカウントID} --namespace {ネームスペース名}
```

::: note info
以下のような場合は、User A は QuickSight上で、 Rader 権限 -> Admin権限 を持つことになります。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/ba2897fd-f829-c7bd-bbf8-e69c339e6cb8.png)


### 4. ユーザー削除
ユーザーを削除する場合は、削除対象のユーザーが所属するグループを選択し、「削除」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/9f21d7fe-d87f-676f-c831-66c342aa1d53.png)

自動プロビジョニングによる、IdCへの同期完了と同時にQuickSight側でもユーザーが削除されます。
QuickSight 側のユーザー削除確認を行う場合は、ユーザー追加手順で利用した [コマンド](#3-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E8%BF%BD%E5%8A%A0) でご確認下さい。

以上、どなたかの参考になれば幸いです。