Amazon Athena에서 사용자 고유의 ID 공급자 사용

Amazon Athena 커넥터에 사용자 고유의 IdP(ID 공급자)를 사용할 수 있습니다.

참고: ID 공급자가 OAuth 2.0/OIDC를 지원해야 합니다.

개요

사용자 고유의 IdP(ID 공급자)를 설정하는 단계는 사용하는 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 아이덴티티 센터에서 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. 내 Tableau 리포지토리 폴더의 "OAuthConfigs" 폴더에 OAuth 구성 파일을 저장합니다.
  4. Bridge 클라이언트를 실행 중인 경우 Bridge 클라이언트를 다시 시작하여 새 OAuth 구성이 로드되었는지 확인합니다.

4단계. AWS에서 페더레이션 ID에 대한 정책 만들기

Tableau 페더레이션 ID 응용 프로그램(clientID)이 AssumeRoleWithWebIdentity에서 신뢰할 수 있도록 허용하는 AWS 신뢰 관계를 만듭니다. 이 단계는 AWS에서 수행해야 하며, 자세한 지침은 Amazon 설명서에서 사용자 및 그룹에 AWS 리소스에 대한 액세스 권한 부여(영문)를 참조하십시오.

4단계를 수행하면 사용자가 AWS에 제공한 IAM 역할과 함께 Okta에서 받은 OIDC ID 토큰(사용자 인증 후)을 Tableau가 제공할 수 있습니다. 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 클라이언트가 하나만 존재하는 경우 해당 클라이언트가 기본값이 됩니다. 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>

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!