Amazon Athena で独自の ID プロバイダーを使用する

Amazon Athena コネクタでは独自の ID プロバイダー (IDP) を使用できます。

注: ID プロバイダーは、OAuth 2.0 または OIDC をサポートしている必要があります。

概要

独自の ID プロバイダー (IDP) を設定するために必要なステップは、利用する ID プロバイダーによって異なります。以下は、手順の概要です。

  1. ID プロバイダー、Tableau、データ ソースの間に信頼関係を設定します。
  2. Tableau の OAuth クライアント資格情報を作成します。
  3. Tableau に OAuth クライアントの詳細を実装します。
  4. フェデレーション ID のポリシーを作成します。
  5. Amazon Athena に接続します。

Amazon Athena と Okta の例

以下の例は、Tableau、Okta、AWS の間で、3 方向の信頼関係とフェデレーションからなる OAuth ソリューションを作成する手順を複数ステップで示したものです。このドキュメントでは、Okta と AWS のアカウントを持っていることを前提としています。

Tableau が OAuth で連携する方法

この例では、OAuth を使用して Tableau をデータに接続します。適切に構成されていれば、ユーザーがデータに接続しようとすると、ユーザーを認証するために、Tableau は自動的にユーザーを ID プロバイダーに接続させ、データへのアクセス権を委任することに同意します。Tableau は、OAuth のアクセス トークンとリフレッシュ トークンを受け取り、それらを使用してデータ ソースに接続します。

注: 詳細については、各ステップの Tableau の手順を参照してください。

ステップ 1: AWS IAM ID センターで Okta を ID プロバイダーとして設定する

このステップでは、Okta と AWS の両方で設定が必要です。詳細な手順については、Amazon のドキュメントを参照してください。

ステップ 2: Okta で Tableau 用の OAuth クライアント アプリケーションを作成する

概要については、Okta のドキュメント「アプリケーションと接続」を参照してください。

ステップ 3: Tableau に OAuth クライアントを実装する

OAuth はアクセス権を委任するプロトコルです。ユーザーは、自分自身が認証された後、自分の代わりにふるまう権限を Tableau に委任します。OAuth クライアントを設定するには、次の手順を実行します。

注: このステップでは、OAuth 構成ファイルを使用する必要があります。OAuth 構成ファイルがない場合は、このページの下部または Github ページの「OAuth 構成ファイル」の例を確認してください。

Tableau Server または Tableau Cloud

  1. Tableau Server または Tableau Cloud のサイト設定に移動します。
  2. Okta アプリから OAuth クライアント ID とクライアント シークレットを追加します。
  3. OAuth 構成ファイルをアップロードします。
  4. [OAuth クライアントの追加] を選択して、終了します。

Tableau Desktop および Tableau Bridge クライアント

  1. OAuth 構成ファイルを、保存したディレクトリから開きます。
  2. Tableau Desktop 用の Okta アプリの情報を使用して、XML ファイル内の ClientID、クライアント シークレット、authUri、tokenUri を調整します。
  3. OAuth 構成ファイルを [マイ Tableau リポジトリ] フォルダーの [OAuthConfigs] フォルダーに保存します。
  4. Bridge クライアントを実行している場合は、Bridge クライアントを再起動して、新しい OAuth 構成が読み込まれていることを確認します。

ステップ 4.AWS でフェデレーション ID のポリシーを作成する

AWS との信頼関係を作成し、Tableau フェデレーション ID アプリケーション (clientID) が信頼され、Web ID を使ってロールを引き受けることができるようにします。このステップは AWS で実行されます。詳細な手順については、Amazon のドキュメント「ユーザーおよびグループに AWS リソースへのアクセス権限を付与する」を参照してください。

ステップ 4 では、ユーザーが認証された後、Tableau が Okta から受け取った OIDC ID トークンと、ユーザーから提供された IAM ロールを、AWS に提供できるようになります。AWS は、Okta からのトークンと署名を検証し、トークンからユーザー ID を抽出し、IAM ロールへのユーザーのマッピングを検索し、Tableau がユーザーに代わってロールを引き受けることを許可または拒否します(AssumeRoleWithWebIdentity)。

ステップ 5: Athena に接続する

Tableau Server、Tableau Cloud、または Tableau Desktop で次の手順を実行します。

  1. Tableau にサインインします。
  2. [接続][サーバーへ] を選択します。
  3. [Amazon Athena] を選択します。
  4. 接続ダイアログで、Tableau に引き受けるロールの適切な接続パラメーターと ARN を入力します。
  5. ステップ 3 で設定した OAuth プロバイダーを選択します(OAuth クライアントが 1 つしかない場合は、それがデフォルトになります。OAuth クライアントが複数ある場合は、Creator が必要に応じて選択できます)。
  6. [サインイン] を選択して Amazon Athena に接続します。

OAuth 構成ファイルの例

次のファイルをテンプレートとして使用して、独自の OAuth ファイルを作成できますが、クライアント ID など、具体的な情報を使用してファイルを更新してください。

コピー

OAuth 構成ファイルの例

<pluginOAuthConfig>

  <dbclass>athena</dbclass>

  <oauthConfigId>custom_NAME</oauthConfigId>
 <!-- MUST INCLUDE "custom_" --> 
  <clientIdDesktop>CLIENT_ID</clientIdDesktop>
  <clientSecretDesktop>CLIENT_SECRET</clientSecretDesktop>
  <redirectUrisDesktop>http://localhost:56666/Callback</redirectUrisDesktop>
  <redirectUrisDesktop>http://localhost:56667/Callback</redirectUrisDesktop>

  <!--
    <redirectUrisDesktop>http://localhost:56668/Callback</redirectUrisDesktop>
    -->
  <authUri>AUTH_URI</authUri>

  <tokenUri>TOKEN_URI</tokenUri>

  <!-- EXAMPLEs

  <authUri>https://EXAMPLE.okta.com/oauth2/v1/authorize</authUri>
  <tokenUri>https://EXAMPLE.okta.com/oauth2/v1/token</tokenUri>
  -->

  <!--

  <scopes>openid</scopes>

  <scopes>email</scopes>

  <scopes>profile</scopes>

  <scopes>offline_access</scopes>
  -->

  <scopes>openid email profile offline_access</scopes>

  <capabilities>

    <entry>

      <key>OAUTH_CAP_SUPPORTS_HTTP_SCHEME_LOOPBACK_REDIRECT_URLS</key>

      <value>false</value>

    </entry>

    <entry>

      <key>OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL</key>

      <value>true</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_PKCE_REQUIRES_CODE_CHALLENGE_METHOD</key>

      <value>false</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_REQUIRE_PKCE</key>

      <value>false</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_SUPPORTS_STATE</key>

      <value>true</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_SUPPORTS_CUSTOM_DOMAIN</key>

      <value>false</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_CLIENT_SECRET_IN_URL_QUERY_PARAM</key>

      <value>true</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_SUPPORTS_GET_USERINFO_FROM_ID_TOKEN</key>

      <value>true</value>

    </entry>

    <entry>
      <key>OAUTH_CAP_USE_SCOPE_IN_REFRESH_REQUEST</key>

      <value>true</value>

    </entry>

  </capabilities>

  <accessTokenResponseMaps>

    <entry>
      <key>ACCESSTOKEN</key>

      <value>access_token</value>

    </entry>

    <entry>
      <key>REFRESHTOKEN</key>

      <value>refresh_token</value>

    </entry>

    <entry>
      <key>id-token</key>

      <value>id_token</value>

    </entry>

    <entry>
      <key>access-token-issue-time</key>

      <value>issued_at</value>

    </entry>

    <entry>
      <key>access-token-expires-in</key>

      <value>expires_in</value>

    </entry>

    <entry>
      <key>username</key>

      <value>preferred_username</value>

    </entry>
  
</accessTokenResponseMaps>

  <refreshTokenResponseMaps>

    <entry>
      <key>ACCESSTOKEN</key>

      <value>access_token</value>

    </entry>

    <entry>
      <key>REFRESHTOKEN</key>

      <value>refresh_token</value>

    </entry>

    <entry>
      <key>id-token</key>

      <value>id_token</value>

    </entry>

    <entry>
      <key>access-token-issue-time</key>

      <value>issued_at</value>

    </entry>

    <entry>
      <key>access-token-expires-in</key>

      <value>expires_in</value>

    </entry>
  
</refreshTokenResponseMaps>

</pluginOAuthConfig>

フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!