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 のアカウントは無料で作成できます。

  1. Okta 管理者ダッシュボードのリボンで、[Applications] をクリックします。
  2. [Developer Console] が表示されている場合は、次のスクリーンショットを参考にして、 [Classic UI] に切り替えます。
  3. [Add Application] をクリックします。
  4. Amazon Web Services を選択して [Add] をクリックします。
  5. [Application label] を Amazon QuickSight に変更し、[Next] をクリックします。
  6. [Sign-On Options] で SAML 2.0 を選択します。
  7. [Default Relay State] に https://quicksight.thinkwithwp.com と入力します。
  8. [Identity Provider metadata] を右クリックし、[Save Link As…] を選択します。
  9. XML ファイルをディスク上に保存してから [Done] をクリックします。このファイルは、後のステップで使用します。

AWS 内に SAML プロバイダーを作成する

新規ウィンドウを開き、AWS マネジメントコンソールにサインインします。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [Identity Providers]、[Create Provider] の順にクリックします。
  3. [Provider Type] で [SAML] を選択し、[Provider Name] に名前 (例: Okta) を入力します。
  4. [Metadata Document] に、先のステップで作成した XML ファイルをアップロードします。
  5. [Next Step]、[Create] の順にクリックします。
  6. 作成した IdP を見つけ、その Provider ARN を記録しておきます。

フェデレーションを行ったユーザーのロールを作成する

このセクションでは、IAM での SAML 2.0 フェデレーションロール作成の手順を説明します。Okta は一度のサインインで使用できますが、ユーザーを Amazon QuickSight でプロビジョニングするには、次の 2 通りの方法があります。

  • 最初に訪問した時に Amazon QuickSight ユーザーを作成できるように、ユーザーにフェデレーションロールの許可を付与します。
  • API を使用して Amazon QuickSight のユーザーを事前にプロビジョニングし適切なグループに追加しておく。この方法は、ユーザーのプロビジョニングとグループへの追加が同時に行えるため、Amazon QuickSight 内のグループにユーザーを追加していくようなケースに適しています。

ここからは、新規の Amazon QuickSight ユーザー作成を許可するフェデレーションロールの作成について、手順を説明していきます。Amazon QuickSight ユーザーを事前プロビジョニングする手法を取りたい場合は、この記事の末尾にある API の使用法をご参照ください。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [Roles]、[Create Role] の順にクリックし、[Select type of trusted entity] には SAML 2.0 federation を選択します。
  3. [SAML provider] では、先のステップで作成した IdP (Okta) を選択します。
  4. [Allow programmatic and AWS Management Console access] をオンにします。
  5. [Next: Permissions]、[Create policy] の順にクリックします。
  6. [Create policy] ウィンドウで [JSON] タブを選択し、次のように入力します。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "sts:AssumeRoleWithSAML",
                "Resource": "<YOUR SAML IDENTITY PROVIDER ARN>",
                "Condition": {
                    "StringEquals": {
                        "saml:aud": "https://signin.thinkwithwp.com/saml"
                    }
                }
            },
            {
                "Action": [
                    "quicksight:CreateReader"
                ],
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:quicksight::<YOUR ACCOUNT ID>:user/${aws:userid}"
                ]
            }
        ]
    }

この IAM は、quicksight:CreateReader アクションを使用して、 Amazon QuickSight の読み込みユーザーをセルフプロビジョニングするための、フェデレーションロール許可を付与します。ベストプラクティスとしては、まず、ユーザーに組織の読み込みアクセスを許可した後で、アプリケーション内でユーザーをアップグレードします。ユーザーをアップグレードする方法については、この記事の末尾をご参照ください。

API を使用して Amazon QuickSight ユーザーを事前プロビジョニングする場合は、権限付与ポリシーにはアクションを一切含めないようにします。

  1. [Review Policy] をクリックします。
  2. [Name] に名前 (たとえば QuicksightOktaFederatedPolicy のような値) を入力し、[Create policy] をクリックします。
  3. [Create role] ページで [Refresh] をクリックし、作成したポリシーを選択します。
  4. [Next: Tags]、[Next: Review] の順にクリックします。
  5. [Role name] に名前 (たとえば QuicksightOktaFederatedRole のような値) を入力し、[Role description] も設定します。
  6. [Create role] をクリックします。

Okta 用に AWS アクセスキーを作成する

Okta のためのアクセスキーは、次の手順に従い作成します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、[Users] 、[Add user] の順にクリックします。
  3. [User name] に名前 (たとえば OktaSSOUser のような値) を入力します。
  4. [Access type] で [Programmatic access] を選択します。
  5. [Next: Permissions]、[Attach existing policies directly]、[Create policy] の順にクリックします。
  6. [Create policy] ページで [JSON] タブを開き、次のように入力します。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:ListRoles",
                    "iam:ListAccountAliases"
                ],
                "Resource": "*"
            }
        ]
    }
  7. [Review Policy] をクリックします。
  8. [Name] に名前 (たとえば OktaListRolesPolicy のような値) を入力し、[Create policy] をクリックします。
  9. [Create user] ページで [Refresh] をクリックし、作成したポリシーを選択します。
  10. [Next: Tags]、[Next: Review]、[Create user] の順にクリックします。
  11. [Download .csv] をクリックし、アクセスキーとシークレットキーを保存します。

Okta アプリケーションの設定

再び、Okta 管理者ダッシュボードがあるウィンドウに移動します。

  1. [Identity Provider ARN (Required only for SAML SSO)] に、先のステップで作成した IdP の ARN (たとえば arn:aws:iam::<YOUR ACCOUNT ID>:saml-provider/Okta) を入力します。
  2. [Done] をクリックします。
  3. [Applications] ダッシュボードで [Provisioning] をクリックします。
  4. [Configure API Integration] をクリックします。
  5. [Enable API Integration] をオンにします。
  6. 先のステップでダウンロードしたアクセスキーを [Access Key] に、シークレットキーを [Secret Key] にそれぞれ入力します
  7. [Test API Credentials]、[Save] の順にクリックします。
  8. [SETTINGS] ペインで [To App] に移動します。
  9. [Edit] をクリックします。
  10. [Create Users] をオンにし、[Save] をクリックします。
  11. [Assignments]、[Assign] の順にクリックし、フェデレーションされたアクセス権限を付与するユーザーもしくはグループを選択します。
  12. 次のスクリーンショットに示すように、[Roles] 、[SAML User Roles] を選択してユーザーに権限を付与します。
  13. [Save and Go Back]、[Done] の順にクリックします。

Amazon QuickSight を起動する

フェデレーションアクセスの権限を付与したユーザーとして (管理者アカウントの場合はユーザーモードに切り替えます) 、Okta アプリケーションのダッシュボードにログインします。新しいラベル (例: Amazon QuickSight) と供にアプリケーションが表示されます。このアプリケーションアイコンをクリックし、Amazon QuickSight を起動します。

これで、ユーザーとグループの管理のために IdP として Okta が使え、 Amazon QuickSight へのアクセスがフェデレーションされるようになりました。

Amazon QuickSight ユーザーを事前プロビジョニングする。

ここまでで概説したステップは、ユーザーが Amazon QuickSight を始めて訪問した時に、自身をユーザーとしてプロビジョニングできる権利を付与する方法です。Amazon QuickSight ユーザーを事前にプロビジョニングしたい場合は、API を使いユーザーとグループを作成しておいて、そのグループにユーザーを追加するようにします。

  1. Amazon QuickSight ユーザーを作成するには、次に示すように AWS CLI で Amazon QuickSight ユーザーをフェデレーションした Okta のユーザーネームにリンクさせます。
    aws quicksight register-user \
        --aws-account-id=<YOUR ACCOUNT ID> \
        --namespace=default \
        --email=<USER@EXAMPLE.COM> \
        --iam-arn=arn:aws:iam::<YOUR ACCOUNT ID>:role/<ROLE NAME> \
        --identity-type=IAM \
        --session-name=<OKTA USERNAME> \
        --user-role=READER
  2. オプションとして、Amazon QuickSight のグループを作成することもできます。
    aws quicksight create-group \
        --aws-account-id=<YOUR ACCOUNT ID> \
        --namespace=default \
        --group-name="<YOUR GROUP NAME>" \
        --description="<YOUR GROUP DESCRIPTION>"
  3. グループにユーザーを追加します。
    aws quicksight create-group-membership \
        --aws-account-id=<YOUR ACCOUNT ID> \
        --namespace=default \
        --group-name="<YOUR GROUP NAME>" \
        --member-name="<YOUR MEMBER USER NAME>"

Amazon QuickSight API を使用することで、ユーザー、グループ、グループメンバーシップの管理が行えます。グループを作成しておくと、特定のユーザー名ではなくグループ名を入力することで、データセットや分析あるいはダッシュボードへのアクセス許可ができ、自動的にグループに反映させることができます。その他のサポートされたグループやユーザー管理機能については、「関数別アクション一覧」をご参照ください。

ユーザーの管理

ユーザー権限は、[Manage QuickSight] スクリーンの [Manage users] タブを使い、読み込みから作成、あるいは管理へとアップグレードできます。

  1. Amazon QuickSight コンソールで、右上部に表示されている自分のユーザー名をクリックし、[Manage QuickSight] をクリックします。
  2. ナビゲーションペインで [Manage users] をクリックします。
  3. アップグレードするユーザー名をクリックし、[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 は、アマゾン ウェブ サービスのシニアソリューションアーキテクトです。