QuickSightとIAM Identity Centerを利用したSSOの検証

# はじめに
今回は2023年8月14日に発表されたQuickSightのAWS IAM Identity Centerに関するアップデート内容の検証結果と検証環境構築の要所をご紹介いたします。

# 目次
- アップデート内容について
- そもそもAWS IAM Identity Centerってなに？
    - マルチアカウントの課題とSSO(シングルサインオン)
- アップデート内容の図解
- 検証の流れ
    - 環境構築
    - 検証
- 検証結果
- さいごに

# アップデート内容について
Amazon QuickSight(以後QuickSightと記載する) が AWS IAM Identity Center(以後IAM Identity Centerと記載する)対応のアプリケーションになったことで、
QuickSight を利用している管理者が、IAM Identity Centerを使用して、ユーザーが既存の認証情報を使ってログインできるようにすることが可能になったというのがアップデートのざっくりした内容です。

https://aws.amazon.com/jp/about-aws/whats-new/2023/08/aws-iam-identity-center-integration-amazon-quicksight/

# そもそもIAM Identity Centerってなに？
AWS SSO(Single Sign-On)の後継サービスで、組織や企業におけるアイデンティティとアクセス管理を効率化し、セキュリティを向上させるためのソリューションです。IAM Identity Centerを使用すると、組織内のユーザーがAWSリソースへのアクセスを単一の認証情報を使用して行うことができます。一言でいうとシングルサインオンを実現するAWSのサービスといえます。
※ IAM Identity Center を利用するには前提としてAWS Organizations(以後Organizationsと記載する)を利用している必要があます。

シングルサインオンを使うと何が嬉しいのか。文章だけでは分かり辛いので、図解で説明します。

## マルチアカウントの課題とシングルサインオン
一般的にマルチアカウントの課題としてユーザー名/パスワード等の認証情報をそれぞれ管理することが挙げられます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/88a4e09d-0fe1-94a7-86cb-5d4c2a5476d3.png)
引用元：[AWSアカウントシングルサインオンの設計と運用](https://pages.awscloud.com/rs/112-TZM-766/images/20200722_AWSBlackbelt_aws_sso.pdf)

上記の課題を改善する仕組みがシングルサインオンです。
シングルサインオンを利用することで１つの認証情報で複数のアカウントを利用することができます。
利用者・管理者どちらにとっても利便性が向上し、セキュリティリスクも減少させることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/c4e4bee2-b95b-a891-258f-65e06b1cf64f.png)
引用元：[AWSアカウントシングルサインオンの設計と運用](https://pages.awscloud.com/rs/112-TZM-766/images/20200722_AWSBlackbelt_aws_sso.pdf)


# アップデート内容の図解
今回のアップデート内容の『Amazon QuickSight が AWS IAM Identity Center対応』から分かるとおり、QuickSight と IAM Identity Centerは直接連携することはできませんでした。これまではQuickSightでシングルサインオンを実現するためには下図黄色の外部Idpの設定を別途設定しIAM Identity Centerと間接的に連携する必要がありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/eccbb54a-9a82-1467-2122-dcf3a73f60dc.png)

引用元：[Amazon QuickSight におけるシングルサインオンの設計と実装](https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AmazonQuickSight-SSO_0228_v1.pdf)

　
アップデート前後で図解します。
前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/ce51e688-083e-a452-c1cc-f8b9d43cb73d.png)


　
後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/a8aa90be-2271-4499-f73d-9d6486b73e3f.png)

上記のとおり、IAM Identity CenterでQuickSight対応可能となったためQuickSightの外部Ipdの設定した間接的な連携は不要で、直接連携が可能になっております。

QuickSightの外部Ipdの設定を利用したSSOについては下記記事が参考になります。
[AWS QuickSightへのアクセスにAWS SSOをつかう](https://lovebeerbear.hatenablog.com/entry/2020/07/07/233437)

# 検証方法
今回の検証で下記記事がとても参考になりました。
細かい設定については省略するので適宜記事を確認していただければと思います。
[[アップデート] Amazon QuickSight で AWS IAM Identity Center の統合機能がサポートされました](https://dev.classmethod.jp/articles/iam-identity-center-integration-quicksight/)
[IAM Identity Centerを使って複数アカウント管理する。（その１：IAM Identity Centerでのログイン）](https://qiita.com/sakai00kou/items/086a12caa69a78c18f61)

検証の流れは下記5ステップです。
【環境構築】
　① 検証用のOrganizations 環境(アカウント)作成
　② IAM Identity Centerの有効化とユーザー・グループ等の設定
　③ IAM Identity Centerの許可セット作成とアカウントの紐づけ
　④ QuickSightのサインアップとIAM Identity Centerと紐づけ

【検証】
　⑤ IAM Identity Center経由のQuickSightのログイン・動作の確認


## 環境構築
### ① 検証用のOrganizaions 環境作成
検証用の新規アカウントを作成します。
※既にQuickSightにサインアップしているアカウントでは今回のアップデート内容は利用できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/fcb46d2b-c7a7-4faf-7fcd-fa6fe39e7199.png)



### ② IAM Identity Centerの有効化とユーザー・グループ・許可セット等の設定
IAM Identity Centerの有効化をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/bbd3e2e3-468e-d07f-19de-25ff298211b7.png)
※Organizationsの管理アカウントでないと有効化することはできません。

　
IAM Identity Centerを利用する際に認証情報を管理するソースは3つ選べます。
今回はデフォルトのIdentity Center ディレクトリを使用しております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/76d60ac4-2e91-b635-0528-e98f882bef20.png)

　
ユーザーを作成します。
今回は便宜上閲覧用と管理者用でユーザーを分けて作成しております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/1934fa99-2c2f-6407-4bfb-176b91140b74.png)
　
グループを作成します。
今回は便宜上アカウント操作確認用とQuickSightの操作確認用の4グループを作成しております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/094bd0de-1d99-eb3e-dcf6-13bccd5f6670.png)

　
作成したユーザーをグループに追加します。
下記のとおりユーザーをそれぞれのグループに追加しました。
| ユーザー | グループ |
|:-:|:-:|
| taskforceuser_sso | admin_G |
| taskforceuser_sso | qs_admin |
| taskforceuser_sso_reader | qs_reader |
|| qs_author |

＜参考画像＞
この段階で作成したIAM Identity Centerのユーザーでログインしてもコンソール画面に何も表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/b96fc823-5095-65c3-02c8-6b0f76c20798.png)

## ③ IAM Identity Centerの許可セット作成とアカウントの紐づけ
許可セットを作成します。
こちらの許可セットがIAM Identity Centerのユーザーやグループに割り当てる権限となります。
今回は事前定義された許可セット（テンプレート）から管理者用のAdministratorAccessの許可セットを作成します。IAMポリシーのようにカスタムすることもでき目的にあった権限付与も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/9c8af6ef-2da5-dcc4-deff-68768d3dec5c.png)

　
検証用のアカウントとIAM Identity Centerのグループ及び許可セットを紐づけします。
次ステップでQuickSightのサインアップするので検証用のアカウントにadmin_Gを紐づけ許可セットにAdministratorAccessを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/78ce7d38-c1f7-9fd4-3b46-85f741ceeb6c.png)

　
ユーザー等の紐づけ状況
|ユーザー|グループ|許可セット|アカウント|
|:-:|:-:|:-:|:-:|
|taskforceuser_sso|admin_G|AdministratorAcces|SHOO|
|taskforceuser_sso|qs_admin|||
|taskforceuser_sso_reader|qs_reader|||
||qs_author|||

＜参考画面＞
この段階で検証用のアカウントと管理者用の権限が割り当てられたtaskforceuser_ssoユーザーは紐づいている状態になるので、ログインするとコンソール上に紐づけたアカウントが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/bb7c2158-2225-707b-6a78-27e692698671.png)


### ④ QuickSightのサインアップとIAM Identity Centerと紐づけ
アカウントに紐づけたユーザーでQuickSightのサインアップします。
コンソール上でQuickSightを開くことでサインアップの画面に遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/8c9cfe78-f4cf-aa50-83db-8bbeef9e8cd0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/3e093e1b-65fb-e178-9fa3-468ad5c18f9c.png)
　
今回検証するアップデート内容はQuickSightのエンタープライズ版のみ利用可能です。（2023年11月現在）
認証方式でIAM Identity Center選択し、リージョンやアカウント情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/b858e924-24d1-2c7a-1688-bedcc9582a2f.png)
　
次にQuickSightの管理者、作成者、閲覧者に対して、IAM Identity Centerのグループを紐づけします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/42240566-38fd-e418-8762-d802062a3da9.png)
　
これでサインアップ完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/e3c03f55-af96-8d3a-6c7f-21f5ef648fb8.png)
　
サインアップ完了するとIAM Identity Center のアプリケーションにサインアップ時に設定した内容を反映したアプリケーションが追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/722b8348-99f4-a12a-7d11-091d4bf61dd9.png)
　
ユーザー等の紐づけ状況
|ユーザー|グループ|許可セット|アカウント|QS|
|:-:|:-:|:-:|:-:|:-:|
|taskforceuser_sso|admin_G|AdministratorAcces|SHOO||
|taskforceuser_sso|qs_admin|||管理者|
|taskforceuser_sso_reader|qs_reader|||閲覧者|
||qs_author|||作成者|


＜参考画面＞
この段階でtaskforceuser_ssoユーザーでログインするとコンソール上に紐づけたアカウントとアプリケーションが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/0d62f08e-f424-2698-16b3-51730dcda07c.png)

taskforceuser_sso_readerはアカウントと紐づけをしていないのでログインしてもコンソール上にアプリケーションのみが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/e5e60037-38af-5e87-3d93-337c75e775f1.png)



## 検証
### ⑤ AWS IAM Identity Center経由のAmazon QuickSightのログイン・動作の確認
qs_readerグループであるtaskforceuser_sso_readerユーザーでログイン。
想定通りダッシュボードのみ閲覧できる状態になりました。
・qs_reader(閲覧者)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/1c42da09-2a00-002a-0696-93a3d61da08d.png)

 　
qs_adminグループであるtaskforceuser_ssoユーザーでログイン。
想定通りダッシュボード、分析、データセットに加えQuickSightの管理が行える状態になりました。
・qs_admin(管理者)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/eb163489-f47a-f3c5-ce8d-3be7e26a6e4e.png)
　
　
qs_authorグループにtaskforceuser_sso_readerユーザーを追加しログイン。
想定通りダッシュボード、分析、データセットを操作できる状態になりました。
・qs_author(作成者)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/3004c211-37ee-fd2c-4993-807948143774.png)

ユーザー等の紐づけ状況
|ユーザー|グループ|許可セット|アカウント|QS|
|:-:|:-:|:-:|:-:|:-:|
|taskforceuser_sso|admin_G|AdministratorAcces|SHOO||
|taskforceuser_sso|qs_admin|||管理者|
|taskforceuser_sso_reader|qs_reader|||閲覧者|
|taskforceuser_sso_reader|qs_author|||作成者|

# 検証結果
QuickSightにIAM Identity Centerを利用したシングルサインオンを実施するためには下記３つが必要です。
①AWS Organizationsの管理アカウントでIAM Identity Center有効化
②新規にエンタープライズ版でQuickSightでサインアップ
③サインアップ時にIAM Identity CenterのグループとQuickSight管理者・作成者・閲覧者を紐づけ（紐づけの設定は後からでも追加・変更可能）
　
動作に関しては
QuickSight管理者・作成者・閲覧者に紐づけたIAM Identity Centerのグループでそれぞれ想定通りの操作ができました。

# さいごに
以前まではQuickSightは独立したシングルサインオンの設定が必要だったが、今回のアップデートでIAM Identity Center だけの利用で良くなったため管理の煩雑さを解消できるようになりました。

今回は一つのアカウントに対して検証しましたが、管理するアカウントが増えれば増えるほど IAM Identity Centerを活用する管理の煩雑さの改善効果は大きくなると考えます。
・IAM Identity Center活用イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/173736c9-6b50-0447-d1e8-b93ac43135f8.png)


# 引用サイトまとめ
[AWSアカウントシングルサインオンの設計と運用](https://pages.awscloud.com/rs/112-TZM-766/images/20200722_AWSBlackbelt_aws_sso.pdf)
[Amazon QuickSight におけるシングルサインオンの設計と実装](https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AmazonQuickSight-SSO_0228_v1.pdf)




# 参考サイトまとめ
[Amazon QuickSight で AWS IAM アイデンティティセンターとの統合の一般提供を開始](https://aws.amazon.com/jp/about-aws/whats-new/2023/08/aws-iam-identity-center-integration-amazon-quicksight/)
[AWS QuickSightへのアクセスにAWS SSOをつかう](https://lovebeerbear.hatenablog.com/entry/2020/07/07/233437)
[[アップデート] Amazon QuickSight で AWS IAM Identity Center の統合機能がサポートされました](https://dev.classmethod.jp/articles/iam-identity-center-integration-quicksight/)
[IAM Identity Centerを使って複数アカウント管理する。（その１：IAM Identity Centerでのログイン）](https://qiita.com/sakai00kou/items/086a12caa69a78c18f61)

#
株式会社ジールでは、初期費用が不要で運用・保守の手間もかからず、ノーコード・ローコードですぐに手元データを分析可能なオールインワン型データ活用プラットフォーム「ZEUSCloud」を提供しております。
ご興味がある方は是非下記のリンクをご覧ください：
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area