Azure AD認証でQuickSightにログインする

Azure AD認証でQuickSightへのログイン環境を構築した際の雑多なメモとなります。
また、番外編で Azure AD と IAM Identity Center の連携パターンも試してみました。

## 1. Azure AD 側の作業
### Azure AD ユーザー、グループ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/50718b5a-f549-e3ea-ecf1-11b3cbf50adf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/8aab65cb-b917-98c7-68d3-67e5c8c4c2f8.png)

### Azure AD エンタープライズアプリケーション作成  -> 構成情報出力

1. エンタープライズアプリケーションの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/134bf0f5-55bc-d92a-1791-b968086ca4f8.png)

2. SSO の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/6e8ddbb7-fe17-e089-0682-da7d1c49fb9a.png)

SAML アプリケーションを選択し、`基本的な SAML 構成` のリレー状態に `https://quicksight.aws.amazon.com` を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/9aec4e52-cec9-f2c4-959e-b0bbcedad1da.png)

設定後、画面をリロードして設定内容が反映されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/01431c13-1744-2330-cad9-9871d2ac3b1f.png)

3. フェデレーションメタデータのダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/4c6c7784-eb0a-fb47-60b2-cdfc19f9fc01.png)

:::note warn
以降の作業は AWS [こちら](#IAM-Policy-/-IAM-Role-の作成) の作業が完了次第実施
:::

### 各種Claimの作成
#### Role Claimの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/46a2d2b0-d4cc-2f57-6dc9-41d9c4c52529.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/32747e88-569f-341f-468d-f334331ec9de.png)

以下、AWS で作成したロールとIdPのARNを設定する
```
arn:aws:iam::926381664530:role/QuickSightAdmin-AzureAD,arn:aws:iam::926381664530:saml-provider/AzureADforQuickSight
```
```
arn:aws:iam::926381664530:role/QuickSightAuthor-AzureAD,arn:aws:iam::926381664530:saml-provider/AzureADforQuickSight
```
```
arn:aws:iam::926381664530:role/QuickSightReader-AzureAD,arn:aws:iam::926381664530:saml-provider/AzureADforQuickSight
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/10ae7d03-e6a9-383d-3e87-5ddb8cc1c01e.png)


#### RoleSessionName Claim の作成

1. Choose Add new claim.
1. For Name, enter RoleSessionName.
1. For Namespace, enter https://aws.amazon.com/SAML/Attributes.
1. For Source, choose Transformation.
1. For Transformation, enter ExtractMailPrefix().
1. For Parameter 1, enter user.userprincipalname.

userprincipalname 属性から名前を抽出するには、ExtractMailPrefix() 関数を使用します。例えば、この関数はユーザ・プリンシパル名の値joe@example.com から名前joeを抽出します。IAMはRoleSessionNameを使用して、QuickSightにサインインするユーザのロールセッションIDを作成します。ロールセッションIDは、Role名とRoleSessionNameから構成され、Role/RoleSessionName形式となります。ユーザは、ロールセッションIDをユーザ名としてQuickSightに登録されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1f2f4002-df2d-edf9-84bf-ce49ca5795be.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/cf985eeb-8adb-c957-16b0-38de2bc938b3.png)


#### SAML_SUBJECT Claim の作成
#### ユーザー or グループ に対し claim を割り当てる 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/678cc7fa-126b-7e57-ae5c-5724d01b5dd2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/62f75872-c541-6e20-befb-812d7bca322c.png)

設定確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/58e7a3fa-abf0-a84f-f3df-87976ae14384.png)


### [Option] 自動プロビジョニング (SCIM)
#### SCIM 用のポリシーとプログラムユーザーの作成

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
            "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/b61ec0be-dcd8-a595-0211-a40ee2f536a2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/f900f896-6ba0-1bff-72e2-6e5949ba05be.png)


## 2. AWS 側の作業

### AWS IAM SAML IdP 登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/fdce3ca4-e19c-5db5-ee12-e1959a60b518.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/99277503-6c23-59ef-4fb0-35b68f7e7e4c.png)

サマリページの ARN を控えておく
`arn:aws:iam::926381664530:saml-provider/AzureADforQuickSight`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d73c87b7-5816-6bf8-651b-09a8889f2d7b.png)


### 自動プロビジョニング用 IAM ロール作成
以下、QuickSight 初回ログイン時に自動でQuickSight ユーザーをプロビジョニングするために3種類のロールを作成する
- QuickSight Admin
- QuickSight Author
- QuickSight Reader

#### IAM Policy / IAM Role の作成
[こちら](https://qiita.com/sugimount-a/items/9fb1c7a204f372c2c95d) を参照し、3種類のポリシー作成し、ロール作成時にアタッチする。

完成後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1171c8aa-b1ea-3666-8577-ec39500f1c27.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e8303d96-672b-004c-341b-ec8f3a8e6bab.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/bf4d25a6-b36c-ed3c-5969-3721849f932e.png)


## Test


Division A
qs-admin-a@msaadtutorialgmail.onmicrosoft.com
qs-editor-a@msaadtutorialgmail.onmicrosoft.com
qs-reader-a@msaadtutorialgmail.onmicrosoft.com

Division B
qs-admin-b@msaadtutorialgmail.onmicrosoft.com
qs-editor-b@msaadtutorialgmail.onmicrosoft.com
qs-reader-b@msaadtutorialgmail.onmicrosoft.com

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d4f2e61d-9e6d-8ae7-c848-c0761f30033c.png)



## 追加 QuickSight SP Initiated 連携

### QuickSight の設定
- Status : ON
- IdP URL : 上で組み立てた URL を指定
- IdP redirect URL Parameter : RelayState を指定



## 番外編 AWS IAM Identity Center 経由での認証を構成してみる。

type AWS IAM Identity Center in the search box.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/4e7cb4e0-57f8-5d2f-362a-0d1354bb7f47.png)

1. Azure AD SSO の設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e9822ee8-94b1-7885-c6d4-3863f63bb699.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/9532a7b5-fc09-f4c8-b7f2-bedd46961716.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/cdae067c-ef6e-f94d-3189-e46392a49c8a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/2430346e-d0b0-e033-bda6-1e8c47eeaeee.png)



1. AWS IAM Identity Center SSO の設定
拡張機能インストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a33bd507-6893-f9c1-ec71-2d1f751ce522.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d83e7493-b1d8-254f-bd4f-689b547532e5.png)

新しいウィンドウで再度アクセス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/ee996946-8ffa-b16a-c277-111cde8fedd7.png)

OKを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/1513c920-b6b2-5197-13af-35215f558a9e.png)

IAM Identity Center に遷移。（事前にAdmin 権限でログインしておく）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/3a062195-a1fb-aaae-dc48-30b6424dfb2c.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/c5fd3939-07ef-a087-f329-a144480c35ea.png)

Yes をクリックしても自動でセットアップが始まらないので手動で入れていく。

設定 → アクション → アイデンティティソースを変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/332cd0d1-7a55-c22a-6a66-24b1e3d1f2c5.png)

外部 ID プロバイダー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/a80f3ccb-4106-5a3c-3e40-e1c3a3563e88.png)

メタデータファイル  →  Azure AD

AWS アクセスポータルのサインイン URL  → サイオンURL in Azure
https://d-95677a1ecc.awsapps.com/start

Azure から DL したフェデレーションメタデータ(XML)ファイルをアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/c7bdb31c-7b5f-0eaf-6dcd-9d6879c7528e.png)

次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/40201091-9ece-41f8-561b-a79acd4e3715.png)

やはり、このタイミングでAzureに戻り、メタデータをアップする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/0e6008be-29ca-3cd8-8db0-b639124e20f5.png)

こうなるので保存。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e35d7f0e-ef16-3bd3-2161-55f2b5630c3d.png)

サイオンURLも修正
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d1d1b57b-e138-a71c-3153-45c9f4eec7a9.png)

この状態で再度、フェデレーションメタデータをダウンロードしなおす。

マネコンに戻ってきて、アップデートされたメタデータをアップする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/13e03af9-c0cc-2fd1-c8e0-65c2ce7b9bf8.png)

確認画面で `承諾` と入れて、アイデンティディソースを変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/45cbe20e-1d4f-905a-4bdd-7743194be693.png)

Azure 側で ユーザーとグループを割り当てる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/feb7c20a-3680-1e28-64ef-eabd42d70c94.png)

Testする 撃沈
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/d1541fa0-8602-57e0-ad07-b5b237f78941.png)

Identity Center 側で割当しないとダメか。
ってことで Identity Centerで 自動プロビジョニングを有効にしてみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/9b8dbb3e-eb96-180b-8601-8d0cf1c9049c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/091513f1-5354-3701-315a-4b87bcf20cac.png)

SCIM エンドポイント と アクセストークン を控える
https://scim.ap-northeast-1.amazonaws.com/tEOf759056a-6cbf-4f7c-9d1b-46e52aacda00/scim/v2/

Azure に戻り プロビジョニングの設定をする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e6dc585c-ef3a-f706-1053-e9e43d15a1c6.png)

先程取得した、SCIM エンドポイントとアクセストークンを設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/6fac2651-cbb2-1d8e-62fc-e0804cb9bded.png)

テスト接続して OK だったら保存する。

戻って、プロビジョニング開始
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/03912546-bd60-1b25-4835-79f7589d4195.png)


これにぶち当たる
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/troubleshooting.html

性、名を入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/e33b8fca-aa5d-a8d9-d7d0-e205c49962f6.png)

プロビジョニングの停止・開始をすると

プロビジョニング成功！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/597da40d-5b55-e637-6129-eab91bb0878b.png)


## 参考

https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/aws-single-sign-on-tutorial#configure-aws-iam-identity-center-sso
https://aws.amazon.com/jp/blogs/big-data/enabling-amazon-quicksight-federation-with-azure-ad/
https://qiita.com/itsuki3/items/3c9ddf27c4dfb7f0f9f7
https://qiita.com/sugimount-a/items/48e7fd23fc2565b4d2cb
https://qiita.com/sugimount-a/items/9fb1c7a204f372c2c95d

**AD vs Azure AD**

https://learn.microsoft.com/ja-jp/azure/active-directory/fundamentals/active-directory-compare-azure-ad-to-ad

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/878000/9da9a512-ca57-2514-b423-f4da7dfe86f4.png)