QuickSight の自己プロビジョニングをフェデレーション環境でやってみた マネージメントコンソール編

# はじめに

QuickSight では、3つのユーザー管理方式を利用できます。

- ローカルのユーザー
- IAM のユーザー (フェデレーションを含む)
- Active Directory のユーザー



IAM ユーザーを利用して QuickSight のダッシュボードなどの利用が出来ますが、IAM User と同期するような形で QuickSight 側のローカルユーザーが必要です。これを全部手作業で作成するのは大変なので、IAM ユーザーを利用した自己プロビジョニング機能を使うことで、QuickSight 側のローカルユーザーを自動作成できます。

[こちらの記事](https://qiita.com/sugimount-a/items/9dd4650306222d6c3c57)で、Azure AD と IAM のフェデレーション環境を構築しました。今回の記事は、IAM のフェデレーション環境で、自己プロビジョニングを行ってみた手順を紹介します。


# 補足
この記事の構成では、Azure AD にログインした場合、AWS のマネージメントコンソールが表示されます。その後、QuickSight のページへ遷移すると、QuickSight 自己プロビジョニングが行われる形です。

AWS マネージメントコンソールへのアクセスではなく、QucikSight しか見せたくない状況では、次の URL を参考にすると良いでしょう。マネージメントコンソールを経由せずに、直接 QucikSight が開けます
URL : https://qiita.com/sugimount-a/items/9fb1c7a204f372c2c95d


# 3種類の IAM Role の作成

IAM ユーザー側で QuickSight ユーザーの自己プロビジョニングをするときに、3種類のロールを選べます。IAM ユーザーについている IAM Policy によって、自己プロビジョニングをした時に付与されるロールが自動的に選択されます。

- Admin (管理者)
- Author (作成者)
- Reader (閲覧者)


https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/provisioning-users.html



今回の記事では、3つの IAM Role を作成していきます。

- Admin 用ポリシー : QuickSightAdminforAzureAD
- `quicksight:CreateAdmin` を指定

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "quicksight:CreateAdmin"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:quicksight::xxxxxxxxxxxx:user/${aws:userid}"
        }
    ]
}
```



- Author 用ポリシー : QuickSightAuthorforAzureAD
- `quicksight:CreateUser` を指定

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "quicksight:CreateUser"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:quicksight::xxxxxxxxxxxx:user/${aws:userid}"
        }
    ]
}
```





- Reader 用ポリシー : QuickSightReaderforAzureAD
- `quicksight:CreateReader` を指定

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "quicksight:CreateReader"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:quicksight::xxxxxxxxxxxx:user/${aws:userid}"
        }
    ]
}
```



IAM Policy の設定スクリーンショットです。

![image-20211231190310119.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/86f3cc1d-ac6c-9faa-5adf-904fb2f5491b.png)



3個の IAM Policy が作成されています。

![image-20211231192706482.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/beebeb20-b525-ed30-283f-a154c8906ad8.png)



Create Role を押します。

![image-20211231192740586.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/77efca16-ca6c-b6e7-bfae-ed5541d99f50.png)



Azure AD と連携するために SAML を選択して、以前作成した Azure AD の Identity Provider を選択します。

![image-20211231192814939.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8853c209-d53d-1de8-1bb8-8a96cb063876.png)



作成した Policy を指定します。

![image-20211231192911753.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f6a976d9-f256-c4f3-5ee5-c9c39e1fd9ea.png)



IAM Role の名前を指定して、Create をします。

![image-20211231193008895.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/98657ab1-b2a5-14f0-0f0f-c7a3d8ddd5e1.png)



同様の手順を繰り返して、3個の IAM Role を作成完了している状態です。 

![image-20211231191039932.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0895d265-9011-198a-6aca-7c474424bce7.png)



# Azure AD 側で、プロビジョニングを行う

AWS IAM 側であらたに IAM Role を3個作ったので、再プロビジョニングを行います。これによって Azure AD 側に 新たな Role が認識されます。プロビジョニングに多少時間がかかるので、待ちましょう。自分の環境では30分くらい待機しました。

![image-20211231193241341.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/57114d08-a36e-5a3c-ab8b-71dfa48d9f7c.png)



# Azure AD 側でユーザー作成

[このあたりの手順](https://qiita.com/sugimount-a/items/3eb74c064597d60aa287)を参考に、Azure AD 側でユーザーを3人分作成します。このユーザーを使って、AWS マネージメントコンソール経由で QuickSight にログインができます。

- quicksight-admin01
- quicksight-author01
- quicksight-reader01



3個のユーザーを作成しました。

![image-20211231191752205.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/56856595-3c2f-4997-a4e6-9801c16f5daf.png)







# Azure AD 側のアプリケーションに3個のユーザーを追加

事前に、Azure AD と AWS マネージメントコンソールをフェデレーションする設定が入れてあります。エンタープライズアプリケーションとして登録されており、これに作成したユーザーを追加します。



エンタープライズアプリケーションを選択します。

![image-20211231192149765.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3e9069b8-63fa-4aa4-d21a-a293ed94afde.png)


AWSとして登録したアプリケーションを選択します。

![image-20211231192214923.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/1d6145b5-93d7-201d-9d66-3fb9cf9c802b.png)

ユーザーの追加を行います。

![image-20211231192255881.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/82c8cd13-226f-c7ed-2bc3-62aa20c54934.png)



Azure AD 上のユーザーを選択します。

![image-20211231195851063.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7ae0c7eb-589f-dedd-b2fb-fde178d23190.png)



AWS から読み取った IAM Role を選択します。ユーザーに紐づけたいロールを選択しましょう。

![image-20211231195945647.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6bbb5d78-2320-ddfb-8a7b-5f3bf68e2735.png)



同じような手順で、3人分追加をします。

![image-20211231200116650.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/252ce0dc-acd6-d3c0-c647-bd5523d2a7d6.png)





# 自己プロビジョニングを実行する！

これで Azure AD のフェデレーションを利用した、QuickSight の自己プロビジョニング環境が出来ました。
下記 URL にアクセスして、Azure AD のポータル画面を開きます。

https://myapps.microsoft.com/



## Adminユーザー

User 名の入力

![image-20211231200333634.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8279a18c-003b-4730-942e-de5eb18816f5.png)



パスワードの入力

![image-20211231200353666.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ee4bc125-1aca-b87b-d9d1-30c39b87169f.png)



AWS を選択

![image-20211231200431646.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/451221c6-7fcd-b092-ee2d-730eb7838895.png)



AWS マネージメントコンソールにログインできました。`QuickSightAdminForAzureAD` の IAM Role を使ってログインしていることがわかります。

![image-20211231200533350.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f66e8ef3-845f-51ad-da33-78890d4c6695.png)



QuickSight を開きます。

![image-20211231200646670.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b630aa64-3a14-2697-2502-134fc8417348.png)



自分自身のメールアドレスを入力して、続行を押します。

![image-20211231200810201.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/479218da-c577-962d-32c7-682be5ffdee1.png)



自己プロビジョニングが完了して、QuickSight の画面が開かれます。

![image-20211231200856514.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b21771b5-ec80-7fca-ed7d-403535523d1d.png)



分析やデータセットは、初期状態の Sample のみ表示されている状態です。

![image-20211231200957827.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/145ec9b1-ac20-6751-b9c0-6b5a62258dc7.png)



なお、この時ユーザー一覧を見ると、想定通り管理者(admin)で自己プロビジョニングされていることがわかります。

QucikSght のユーザー名は、AWS マネージメントコンソールの右上に表示されていた文字列をそのまま使っています。

![image-20211231201416559.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fc8b97d5-a518-49b5-4d62-90d11e812ec1.png)



## Authorユーザー

User 名の入力

![image-20211231201713476.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/da53a64d-1e08-c40e-350d-cd5da2de3ca3.png)



詳細な手順は Admin と同じです。AWS マネージメントコンソールにログインできたので、QuickSight を開きます。

![image-20211231201822329.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7494b15c-1893-d4b2-b4ea-8e7c20139ada.png)



これにより、ユーザーが自動的に追加されています。作成者(Author) ロールで自動プロビジョニングされています。

![image-20211231202002090.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/43961b5d-689e-030e-a360-34d98ec4166e.png)



## Readerユーザー

Reader のユーザーでログイン。

![image-20211231202155497.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/33be3532-51b6-22c0-b205-b0d6796979d4.png)



マネージメントコンソールにログインできたので、QuickSight を開きます。

![image-20211231202259457.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a9ffc269-27c2-c2e2-400a-db43660d9ac2.png)



Reader 専用の画面となっており、データセットなどが設定できないようになっています。

![image-20211231202426011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3aadaa76-d0ea-9db2-9955-3b6632aac877.png)



なお、このときの QuickSight 側のユーザーに、閲覧者として自動プロビジョニングされています。

![image-20211231202512552.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/637d9409-e631-2d28-c1d3-76d6288c4753.png)





# まとめ

Azure AD と AWS IAM のフェデレーション環境で、QuickSight の自己プロビジョニングを設定できました。Azure AD でユーザーを作成するときに、適切な IAM Role を選択することで、選択した IAM Role に応じた Role(Admin or Author or Reader) で自己プロビジョニングができました。

大規模になってくると、Azure AD のような IdP を使ったユーザーの一元管理をすることで、運用負担が軽減できます。