Nutzen des eigenen Identitätsanbieters mit Amazon Athena

Sie können Ihren eigenen Identitätsanbieter (IDP) mit dem Amazon Athena-Connector verwenden.

Anmerkung: Der Identitätsanbieter muss OAuth 2.0/OIDC unterstützen

Übersicht

Abhängig vom verwendeten Identitätsanbieter müssen Sie unterschiedliche Schritte ausführen, um Ihren eigenen Identitätsanbieter (IDP) einzurichten. Im Folgenden finden Sie einen Überblick über den Prozess.

  1. Richten Sie eine Vertrauensbeziehung zwischen dem Identitätsanbieter, Tableau und der Datenquelle ein.
  2. Erstellen Sie OAuth-Client-Anmeldeinformationen für Tableau.
  3. Geben Sie die OAuth-Client-Details in Tableau ein.
  4. Erstellen Sie eine Richtlinie für die Verbundidentität.
  5. Stellen Sie eine Verbindung zu Amazon Athena her.

Beispiel: Amazon Athena und Okta

Das folgende Beispiel zeigt den mehrstufigen Prozess zum Erstellen einer 3-Wege-Vertrauens- und Verbund-OAuth-Lösung zwischen Tableau, Okta und AWS. Dabei wird davon ausgegangen, dass der Leser bereits über ein Okta- und AWS-Konto verfügt.

Interaktion zwischen Tableau und OAuth

In diesem Beispiel wird OAuth verwendet, um Tableau mit Daten zu verbinden. Wenn die Konfiguration ordnungsgemäß durchgeführt wurde und ein Benutzer versucht, eine Verbindung zu den Daten herzustellen, wird er von Tableau automatisch an den Identitätsanbieter gesendet, um sich zu authentifizieren und der Übertragung der Berechtigung für seine Daten zuzustimmen. Tableau empfängt und verwendet Tableau OAuth-Zugriffs- und Aktualisierungstoken, um eine Verbindung zur Datenquelle herzustellen.

Anmerkung: Eine ausführliche Anleitung ist nur für die Schritte in Tableau verfügbar.

Schritt 1: Richten Sie Okta als Identitätsanbieter im AWS IAM Identity Center ein

Dieser Schritt erfordert die Einrichtung sowohl in Okta als auch in AWS. Detaillierte Anweisungen finden Sie in der Amazon-Dokumentation.

Schritt 2: Erstellen Sie OAuth-Client-Anwendungen für Tableau in Okta

Informationen dazu erhalten Sie im Abschnitt zu Anwendungen und Verbindungen in der Okta-Dokumentation.

Schritt 3: Implementieren Sie den OAuth-Client in Tableau

OAuth ist ein delegiertes Zugriffsprotokoll. Nachdem sich der Benutzer authentifiziert hat, delegiert er die Berechtigung an Tableau, in seinem Namen zu handeln. Führen Sie die folgenden Schritte aus, um den OAuth-Client einzurichten.

Anmerkung: Für diesen Schritt ist die Verwendung einer OAuth-Konfigurationsdatei erforderlich. Wenn Sie keine OAuth-Konfigurationsdatei haben, finden Sie ein Beispiel dazu unten auf dieser Seite oder auf unserer Github-Seite im Abschnitt zur OAuth-Konfigurationsdatei.

Tableau Server oder Tableau Cloud

  1. Navigieren Sie zu den Site-Einstellungen von Tableau Server oder Tableau Cloud.
  2. Fügen Sie die OAuth-Client-ID und das Client-Geheimnis aus der Okta-App hinzu.
  3. Laden Sie eine OAuth-Konfigurationsdatei hoch.
  4. Wählen Sie „OAuth-Client hinzufügen“ aus, um den Vorgang abzuschließen.

Tableau Desktop und Tableau Bridge Client

  1. Öffnen Sie Ihre OAuth-Konfigurationsdatei in dem Verzeichnis, in dem Sie sie gespeichert haben.
  2. Geben Sie für „ClientID", „Client Secret", „authUri“ und „tokenUri“ in der XML-Datei die Informationen aus Ihrer Okta-App für Tableau Desktop ein.
  3. Speichern Sie die OAuth-Konfigurationsdatei im Ordner „OAuthConfigs“ in Ihrem Ordner „Eigenes Tableau-Repository“.
  4. Wenn der Bridge-Client ausgeführt wird, starten Sie ihn neu, damit eine neue OAuth-Konfiguration geladen wird.

Schritt 4: Erstellen Sie eine Richtlinie für die Verbundidentität in AWS

Erstellen Sie eine AWS-Vertrauensbeziehung, damit die Tableau-Verbundidentitätsanwendung (clientID) „Assume Role with Web Identity“ nutzen kann. Dieser Schritt wird in AWS durchgeführt. Detaillierte Anweisungen finden Sie unter Grant users and groups access to AWS resources (Benutzern und Gruppen Zugriff auf AWS-Ressourcen gewähren) in der Amazon-Dokumentation.

Schritt 4 ermöglicht es Tableau, das von Okta erhaltene OIDC-Identitätstoken (nach der Authentifizierung des Benutzers) gemeinsam mit der IAM-Rolle bereitzustellen, die der Benutzer AWS übermittelt hat. AWS ist in der Lage, das Token und die Signatur von Okta zu validieren, die Benutzer-ID aus dem Token zu extrahieren, die Zuordnung des Benutzers zur IAM-Rolle zu ermitteln und Tableau die Übernahme der Rolle im Namen des Benutzers entweder zu erlauben oder zu blockieren. (siehe AssumeRoleWithWebIdentity).

Schritt 5: Stellen Sie eine Verbindung zu Athena her

Führen Sie die folgenden Schritte in Tableau Server, Tableau Cloud oder Tableau Desktop aus.

  1. Melden Sie sich bei Tableau an.
  2. Wählen Sie unter Verbinden die Option Mit einem Server.
  3. Wählen Sie Amazonas Athene aus.
  4. Geben Sie im Verbindungsdialog die entsprechenden Verbindungsparameter und den ARN für die Rolle ein, die Tableau übernehmen soll.
  5. Wählen Sie den in Schritt 3 konfigurierten OAuth-Anbieter aus. (Wenn nur ein OAuth-Client vorhanden ist, wird dieser standardmäßig ausgewählt. Wenn mehr als ein OAuth-Client vorhanden ist, kann ein Benutzer mit der Rolle „Creator“ nach Bedarf einen auswählen.)
  6. Wählen Sie Anmelden aus, um eine Verbindung zu Amazon Athena herzustellen.

Beispiel für eine OAuth-Konfigurationsdatei

Sie können die folgende Datei als Vorlage verwenden, um Ihre eigene OAuth-Datei zu erstellen. Sie müssen sie aber mit Ihren spezifischen Informationen wie der Client-ID aktualisieren.

Kopieren

Beispiel für eine OAuth-Konfigurationsdatei

<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>

Vielen Dank für Ihr Feedback!Ihr Feedback wurde erfolgreich übermittelt. Vielen Dank.