Amazon Web Services ブログ
Amazon QuickSight のアクセスに Okta をフェデレーションする
Amazon QuickSight は、クラウドベースで高速なビジネスインテリジェンスサービスです。これにより、組織の誰もが容易に洞察を入手できるようになります。完全マネージド型サービスである Amazon QuickSight では、任意のデバイスからアクセスできる双方向性ダッシュボードを簡単に作成と公開が行え、アプリケーション、ポータル、ウェブサイトなどに埋め込むことができます。
Amazon QuickSight では、Standard と Enterprise の両方のエディションで、セキュリティアサーションマークアップランゲージ 2.0 (SAML 2.0) を使うアイデンティティフェデレーションをサポートしています。フェデレーションを使うと、エンタープライズアイデンティティプロバイダー (IdP) によりユーザーを管理でき、ログインしたユーザーを Amazon QuickSight へ移動させることが可能です。この IdP には、Microsoft Active Directory Federation Services、Ping One Federation Server、Okta などの種類があります。
今回の記事では、Amazon QuickSight のアクセスに Okta をフェデレーションする方法について手順を追って説明します。
Okta アプリケーションの作成
Okta の管理者ダッシュボードにサインインします。Okta Developer Edition のアカウントは無料で作成できます。
- Okta 管理者ダッシュボードのリボンで、[Applications] をクリックします。
- [Developer Console] が表示されている場合は、次のスクリーンショットを参考にして、 [Classic UI] に切り替えます。
- [Add Application] をクリックします。
- Amazon Web Services を選択して [Add] をクリックします。
- [Application label] を Amazon QuickSight に変更し、[Next] をクリックします。
- [Sign-On Options] で SAML 2.0 を選択します。
- [Default Relay State] に https://quicksight.thinkwithwp.com と入力します。
- [Identity Provider metadata] を右クリックし、[Save Link As…] を選択します。
- XML ファイルをディスク上に保存してから [Done] をクリックします。このファイルは、後のステップで使用します。
AWS 内に SAML プロバイダーを作成する
新規ウィンドウを開き、AWS マネジメントコンソールにサインインします。
- IAM コンソールを開きます。
- ナビゲーションペインで [Identity Providers]、[Create Provider] の順にクリックします。
- [Provider Type] で [SAML] を選択し、[Provider Name] に名前 (例: Okta) を入力します。
- [Metadata Document] に、先のステップで作成した XML ファイルをアップロードします。
- [Next Step]、[Create] の順にクリックします。
- 作成した IdP を見つけ、その Provider ARN を記録しておきます。
フェデレーションを行ったユーザーのロールを作成する
このセクションでは、IAM での SAML 2.0 フェデレーションロール作成の手順を説明します。Okta は一度のサインインで使用できますが、ユーザーを Amazon QuickSight でプロビジョニングするには、次の 2 通りの方法があります。
- 最初に訪問した時に Amazon QuickSight ユーザーを作成できるように、ユーザーにフェデレーションロールの許可を付与します。
- API を使用して Amazon QuickSight のユーザーを事前にプロビジョニングし適切なグループに追加しておく。この方法は、ユーザーのプロビジョニングとグループへの追加が同時に行えるため、Amazon QuickSight 内のグループにユーザーを追加していくようなケースに適しています。
ここからは、新規の Amazon QuickSight ユーザー作成を許可するフェデレーションロールの作成について、手順を説明していきます。Amazon QuickSight ユーザーを事前プロビジョニングする手法を取りたい場合は、この記事の末尾にある API の使用法をご参照ください。
- IAM コンソールを開きます。
- ナビゲーションペインで [Roles]、[Create Role] の順にクリックし、[Select type of trusted entity] には SAML 2.0 federation を選択します。
- [SAML provider] では、先のステップで作成した IdP (Okta) を選択します。
- [Allow programmatic and AWS Management Console access] をオンにします。
- [Next: Permissions]、[Create policy] の順にクリックします。
- [Create policy] ウィンドウで [JSON] タブを選択し、次のように入力します。
この IAM は、quicksight:CreateReader アクションを使用して、 Amazon QuickSight の読み込みユーザーをセルフプロビジョニングするための、フェデレーションロール許可を付与します。ベストプラクティスとしては、まず、ユーザーに組織の読み込みアクセスを許可した後で、アプリケーション内でユーザーをアップグレードします。ユーザーをアップグレードする方法については、この記事の末尾をご参照ください。
API を使用して Amazon QuickSight ユーザーを事前プロビジョニングする場合は、権限付与ポリシーにはアクションを一切含めないようにします。
- [Review Policy] をクリックします。
- [Name] に名前 (たとえば QuicksightOktaFederatedPolicy のような値) を入力し、[Create policy] をクリックします。
- [Create role] ページで [Refresh] をクリックし、作成したポリシーを選択します。
- [Next: Tags]、[Next: Review] の順にクリックします。
- [Role name] に名前 (たとえば QuicksightOktaFederatedRole のような値) を入力し、[Role description] も設定します。
- [Create role] をクリックします。
Okta 用に AWS アクセスキーを作成する
Okta のためのアクセスキーは、次の手順に従い作成します。
- IAM コンソールを開きます。
- ナビゲーションペインで、[Users] 、[Add user] の順にクリックします。
- [User name] に名前 (たとえば OktaSSOUser のような値) を入力します。
- [Access type] で [Programmatic access] を選択します。
- [Next: Permissions]、[Attach existing policies directly]、[Create policy] の順にクリックします。
- [Create policy] ページで [JSON] タブを開き、次のように入力します。
- [Review Policy] をクリックします。
- [Name] に名前 (たとえば OktaListRolesPolicy のような値) を入力し、[Create policy] をクリックします。
- [Create user] ページで [Refresh] をクリックし、作成したポリシーを選択します。
- [Next: Tags]、[Next: Review]、[Create user] の順にクリックします。
- [Download .csv] をクリックし、アクセスキーとシークレットキーを保存します。
Okta アプリケーションの設定
再び、Okta 管理者ダッシュボードがあるウィンドウに移動します。
- [Identity Provider ARN (Required only for SAML SSO)] に、先のステップで作成した IdP の ARN (たとえば arn:aws:iam::<YOUR ACCOUNT ID>:saml-provider/Okta) を入力します。
- [Done] をクリックします。
- [Applications] ダッシュボードで [Provisioning] をクリックします。
- [Configure API Integration] をクリックします。
- [Enable API Integration] をオンにします。
- 先のステップでダウンロードしたアクセスキーを [Access Key] に、シークレットキーを [Secret Key] にそれぞれ入力します
- [Test API Credentials]、[Save] の順にクリックします。
- [SETTINGS] ペインで [To App] に移動します。
- [Edit] をクリックします。
- [Create Users] をオンにし、[Save] をクリックします。
- [Assignments]、[Assign] の順にクリックし、フェデレーションされたアクセス権限を付与するユーザーもしくはグループを選択します。
- 次のスクリーンショットに示すように、[Roles] 、[SAML User Roles] を選択してユーザーに権限を付与します。
- [Save and Go Back]、[Done] の順にクリックします。
Amazon QuickSight を起動する
フェデレーションアクセスの権限を付与したユーザーとして (管理者アカウントの場合はユーザーモードに切り替えます) 、Okta アプリケーションのダッシュボードにログインします。新しいラベル (例: Amazon QuickSight) と供にアプリケーションが表示されます。このアプリケーションアイコンをクリックし、Amazon QuickSight を起動します。
これで、ユーザーとグループの管理のために IdP として Okta が使え、 Amazon QuickSight へのアクセスがフェデレーションされるようになりました。
Amazon QuickSight ユーザーを事前プロビジョニングする。
ここまでで概説したステップは、ユーザーが Amazon QuickSight を始めて訪問した時に、自身をユーザーとしてプロビジョニングできる権利を付与する方法です。Amazon QuickSight ユーザーを事前にプロビジョニングしたい場合は、API を使いユーザーとグループを作成しておいて、そのグループにユーザーを追加するようにします。
- Amazon QuickSight ユーザーを作成するには、次に示すように AWS CLI で Amazon QuickSight ユーザーをフェデレーションした Okta のユーザーネームにリンクさせます。
- オプションとして、Amazon QuickSight のグループを作成することもできます。
- グループにユーザーを追加します。
Amazon QuickSight API を使用することで、ユーザー、グループ、グループメンバーシップの管理が行えます。グループを作成しておくと、特定のユーザー名ではなくグループ名を入力することで、データセットや分析あるいはダッシュボードへのアクセス許可ができ、自動的にグループに反映させることができます。その他のサポートされたグループやユーザー管理機能については、「関数別アクション一覧」をご参照ください。
ユーザーの管理
ユーザー権限は、[Manage QuickSight] スクリーンの [Manage users] タブを使い、読み込みから作成、あるいは管理へとアップグレードできます。
- Amazon QuickSight コンソールで、右上部に表示されている自分のユーザー名をクリックし、[Manage QuickSight] をクリックします。
- ナビゲーションペインで [Manage users] をクリックします。
- アップグレードするユーザー名をクリックし、[Role] から付与したいロールを選択します。
ダッシュボード間のディープリンク
AmazonQuickSight のダッシュボードは、Okta アプリケーションのシングルサインオン URL を使って共有することができます。これにより、ユーザーは、特定のダッシュボードに直接フェデレーションされます。
特定の Amazon QuickSight ダッシュボードに、シングルサインオンができるようディープリンクを行うには、最初に、Okta アプリケーションのサインオン URL を入手します。この情報は、先に行った Okta アプリケーションの作成ステップでダウンロードした、メタデータ XML ファイルに記載されています。必要な URL は、md:SingleSignOnService エレメントのLocation 属性にあり、/sso/saml の文字で終わる値です。
Okta アプリケーションのシングルサインオン URL を見つけた ら、Amazon QuickSight ダッシュボードの URL の手前に書かれた URL の末尾に ?RelayState=を追加します。次に示すのは、ディープリンクの URL の一例です。
https://my-test-org.okta.com/app/amazon_aws/abcdefg12345XYZ678/sso/saml?RelayState=https://us-east-1.quicksight.thinkwithwp.com/sn/dashboards/11111111-abcd-1234-efghi-111111111111
ダッシュボード間でディープリンクを行うと、ユーザーには、特定のダッシュボードへのシングルサインオンと直接アクセスを許可できます。
まとめ
今回の記事では、Okta を IdP として定義する方法、また、Amazon QuickSight へのシングルサインオンに必要な IAM ロールの使い方に関する各手順を解説しました。また、Amazon QuickSight API により、ユーザーとグループの管理を行う方法も示しました。
この記事は、IAM と Okta の統合方法に関するものですが、このソリューションは SAML 2.0 IdP の別の用途に対しても応用することができます。フェデレーションに関するこの他のオプション機能については、「SAML 2.0 を使用した Amazon QuickSight へのシングルサインオンアクセス」をご参照ください。
ご不明な点がございましたら、コメントをお寄せください。
著者について
Loc Trinh はアマゾン ウェブ サービスのソリューションアーキテクトです。
Naresh Gautam は、アマゾン ウェブ サービスのシニアソリューションアーキテクトです。