2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Active Directory、AWS IAM Identity Centerを使用したAmazon QuickSightへのシングルサインオン環境を構成する

Last updated at Posted at 2022-08-18

Amazon QuickSight(以下QuickSight)向けにシングルサインオン環境を構築する機会があったのでメモ。
なお、歴史的経緯から現在のAWS SSOあらためAWS IAM Identity Center(以下Identity Center)がそれなりに複雑な構成になっていたので、そのあたりについても簡単にまとめておく。

やりたいこと

QuickSightとActive Directory(以下AD)でシングルサインオンを行えるようにする。
シングルサインオンは、いわゆるIdP-Initiatedで構成する。

参考:
IdP-Initiated SSO(IdPでログインしてからQuickSightに遷移)
SP-Initiated SSO(QuickSightログイン画面からIdPにリダイレクト)

構成図

シングルサインオンを設定する前のIdentity Centerの構成が既にいい加減複雑だったが、まとめると最終構成図は以下のようになる。
なお、Identity Center、QuickSightともホームリージョンはバージニア北部。
QS-IIC.drawio.png

ステップバイステップ

以下、設定方法を記載していく。

なお、EC2にADを構成し、AD Connectorからリージョン跨ぎでEC2を参照して、Identity CenterからAD Connector経由でADをIDソースとして使用するまでの設定の詳細は省略し、ポイントのみ列挙する。

  • AD on EC2はそれほど複雑な手順は必要ない。昔ながらのdcpromo。
  • AD ConnectorはAD on EC2のIPアドレスを参照するだけだが、インターリージョンVPCピアリングと、しかるべきルーティング設定が必要。なお、新規にIdentity Centerを作成する場合、東京リージョンに立てることも現在はできるので、この場合はインターリージョンVPCピアリングは必要ない(以前はバージニア北部にしか作れなかった)。
  • Identity CenterとAD Connectorの接続については、こちらを参照。なお2022年4月以降、同期対象のユーザー/グループを選択・有効化することが必須になった。詳しくはこちら

1. Identity CenterでQuickSightアプリケーションを作成

Identity Centerのコンソールから設定を開始する。最初はQuickSightへのエントリーポイントとなるアプリケーションの作成から。
AWSサービスやサードパーティー製品に交じってQuickSightのテンプレートが用意されているので、これを使用する。
今回は、名前もデフォルトのAmazon QuickSightとした。
スクリーンショット 2022-08-18 23.43.26.png
いずれの項目もデフォルトで構わない。

重要なのはリレーステートで、SAML認証が成功したのち、SAMLアサーションを転送する先(つまり、ログインする先)を指定するのだが、ここをhttps://quicksight.aws.amazon.com(デフォルト)とすることでQuickSightにリダイレクトされるようになる。
ちなみに、以下のようにアプリケーション開始URLにダッシュボードのURLを入れておくと、QuickSightのホーム画面ではなく、ダッシュボードが直接開くように設定することもできる。
スクリーンショット 2022-08-19 0.34.23.png
後続の設定のため、以下からSAMLメタデータファイルをダウンロードしておく。
スクリーンショット 2022-08-18 23.44.01.png

2. IAMでSAMLプロバイダーを作成

Identity CenterとQuickSightを繋ぐSAMLプロバイダーを、IAMコンソールで作成する。SAMLメタデータファイルは、先程ダウンロードしたものをそのままアップロードすればOK。
スクリーンショット 2022-08-18 23.51.10.png

作成後の状態は以下の通り。
ちなみに下にあるのはIdentity CenterがSSOの頃に作成した、Identity Center用のSAMLプロバイダーである。今回の構成とは直接関係しないが、ADFSを使う場合もここで構成する。
スクリーンショット 2022-08-18 23.48.24.png

3. IAMポリシー/IAMロールを作成

フェデレーション時に使用されるIAMロールと、それにアタッチするためのIAMポリシーを作成する。
ロールの作成時に、SAML2.0フェデレーションを選択することがポイント。また、プログラムと AWS マネジメントコンソールへのアクセスを許可するを選択し、属性が自動入力されていることも確認する。
スクリーンショット 2022-08-19 0.07.00.png

今回は一般的なベストプラクティスに従い、quicksight:CreateReader権限を持つポリシーをアタッチしたqs-readerロールを作成する(つまり、セルフプロビジョニングされるユーザーはまずReaderとして作成される。必要な場合は後で管理者がAuthorやAdminに変更する運用モデルを想定する)。

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

ロールARNは次のステップでSAML属性に入力するので、クリップボードにコピーしておく。
スクリーンショット 2022-08-19 22.45.05.png

4. SAML属性を追加

Identity Centerに戻り、作成済みのアプリケーションAmazon QuickSightから属性マッピングを編集を選択する。
これを忘れると、テストの際にinvalid SAML assersion.などと文句を言われるので注意。
スクリーンショット 2022-08-19 23.05.11.png

以下のフォーマットで入力する。

アプリケーションのユーザー属性 この文字列値または IAM Identity Center のユーザー属性にマッピング 形式
https://aws.amazon.com/SAML/Attributes/Role arn:aws:iam::<アカウントID>:saml-provider/<SAMLプロバイダー名>,arn:aws:iam::<アカウントID>:role/<ロール名> undefined

SAMLプロバイダー名、ロール名は、前のステップで作成したものを使用する。カンマ区切りであれば、SAMLプロバイダー名とロール名の順番は逆でも構わない。
ちなみに、異なるポリシーを持つ複数のロール(例えばquicksight:CreateAdminを持つqs-adminquicksight:CreateUserを持つqs-author)を作成することもできるが、現状、Identity Centerでは、QuickSightアカウントあたり一つしかSAML/Attributes/Roleに設定できない制約がある(Identity Centerを介さず、Azure ADOktaを直接IdPとして構成する場合は、複数設定ができるようだ)。

You can only map one IAM role per Amazon QuickSight account and one IAM role attribute mapping per IAM Identity Center application instance.

5. ユーザー/グループの割り当て

最後に、QuickSightを利用するユーザーまたはグループをアプリケーションに割り当てる。運用上、通常はグループになると思われる。
なお、ここではAD内のユーザー/グループを検索して割り当てるのだが、最近のUIでは、一致の有無は表示してくれるが候補表示はしてくれないので、AD側の画面も開きながら設定する必要がありそう。
スクリーンショット 2022-08-19 0.37.49.png

6. テスト

Identity Center→ダッシュボードから、AWSアクセスポータルのURLを探す。
スクリーンショット 2022-08-19 0.42.20.png
上記URLを別のブラウザやシークレットモードに貼り付けて、開いてみる。
スクリーンショット 2022-08-19 0.46.21.png
自分の環境ではAWSマネコンも割り当ててあるので、ログインに成功するとこんな感じでIdPポータルが開く。
スクリーンショット 2022-08-19 0.45.00.png
Amazon QuickSightをクリックすると、QuickSightコンソールに遷移し、先程設定したダッシュボード画面に直接リダイレクトされる。ホームに遷移するか、ダッシュボードに直接遷移するかは、要件次第というところ。
スクリーンショット 2022-08-19 0.49.26.png

まとめ

Ad→Identity Center→QuickSight、の組み合わせでシングルサインオンを構成した。
シングルサインオンはそれ自体がややこしいが、ただ、一度理解してしまえば応用が利く。Azure ADやOktaも基本は同様の設定で行けるはず。
なお、今回はIdP-Initiated SSOということでIdentity Centerへのログインを契機に遷移していく構成を検証したが、QuickSightのログイン画面から入ってIdPにリダイレクトしたいケース(SP-Initiated SSO)も需要が多いと思われる。参考情報に参照先ドキュメントを記載したので、必要に応じて試してみて欲しい。

参考情報

AWS QuickSightへのアクセスにAWS SSOをつかう
Set up SSO for Amazon QuickSight by using IAM Identity Center and identity federation
Setting up IdP federation using IAM and QuickSight
Configuring SAML assertions for the authentication response
Amazon QuickSight のアクセスに Okta をフェデレーションする
Enabling Amazon QuickSight federation with Azure AD
チュートリアル: Azure AD SSO と AWS Single-Account Access の統合

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?