Utiliser votre propre fournisseur d’identité avec Amazon Athena

Vous pouvez utiliser votre propre fournisseur d’identité (IdP) avec le connecteur Amazon Athena.

Remarque : le fournisseur d’identité doit prendre en charge OAuth 2.0/OIDC

Présentation

Selon le fournisseur d’identité que vous utilisez, vous devez suivre différentes étapes pour configurer votre propre fournisseur d’identité (IDP). La section suivante fournit un aperçu général du processus.

  1. Configurer une relation d’approbation entre le fournisseur d’identité, Tableau et la source de données.
  2. Créer des informations d’identification client OAuth pour Tableau.
  3. Implémenter les détails du client OAuth dans Tableau.
  4. Créer une stratégie pour l’identité fédérée.
  5. Se connecter à Amazon Athena.

Exemple Amazon Athena et Okta

L’exemple suivant montre le processus en plusieurs étapes pour créer une solution OAuth approuvée et fédérée à trois voies entre Tableau, Okta et AWS. Ce document suppose que le lecteur possède déjà un compte Okta et AWS.

Comment Tableau interagit avec OAuth

Cet exemple utilise OAuth pour connecter Tableau à Data. Si la configuration est correcte, lorsqu’un utilisateur tente de se connecter aux données, Tableau envoie automatiquement l’utilisateur au fournisseur d’identité pour s’authentifier et consentir à la délégation d’autorisation sur ses données. Tableau recevra et utilisera des jetons d’accès et d’actualisation OAuth pour se connecter à la source de données.

Remarque : les instructions détaillées ne sont disponibles que pour les étapes dans Tableau.

Étape 1 : Configurer Okta en tant que fournisseur d’identité dans AWS IAM Identity Center

Cette étape nécessite une configuration dans Okta et AWS. Pour des instructions détaillées, consultez la Documentation Amazon.

Étape 2 : Créer des applications client OAuth pour Tableau dans Okta

Pour commencer, consultez Applications et connexions dans la documentation Okta.

Étape 3 : Implémenter le client OAuth dans Tableau

OAuth est un protocole d’accès délégué. L’utilisateur, après s’être authentifié, délègue l’autorisation à Tableau d’agir en son nom. Appliquez la procédure suivante pour configurer le client OAuth.

Remarque : cette étape nécessite l’utilisation d’un fichier de configuration OAuth. Si vous n’avez pas de fichier de configuration OAuth, vous pouvez trouver un exemple au bas de cette page ou sur notre page Github, sous OAuth Config file (Fichier de configuration OAuth).

Tableau Server ou Tableau Cloud

  1. Accédez aux paramètres du site Tableau Server ou Tableau Cloud.
  2. Ajoutez l’ID client OAuth et le secret client à partir de l’application Okta.
  3. Chargez un fichier de configuration OAuth.
  4. Sélectionnez Ajouter un client Oauth pour terminer.

Tableau Desktop et client Tableau Bridge

  1. Ouvrez votre fichier OAuth Config à partir du répertoire dans lequel vous l’avez enregistré.
  2. Ajustez les paramètres ClientID, Client Secret, authUri et tokenUri dans le fichier XML avec les informations de votre application Okta pour Tableau Desktop.
  3. Enregistrez le fichier de configuration OAuth dans le dossier « OAuthConfigs » de votre dossier Mon dossier Tableau.
  4. Si vous exécutez le client Bridge, redémarrez le client Bridge pour vous assurer qu’une nouvelle configuration OAuth est chargée.

Étape 4. Créer une stratégie pour l’identité fédérée dans AWS

Créez une relation d’approbation AWS qui permet à l’application d’identité fédérée Tableau (clientID) d’être approuvée pour assumer un rôle avec Web Identity. Cette étape est effectuée dans AWS. Pour des instructions détaillées, voir Accorder aux utilisateurs et aux groupes l’accès aux ressources AWS dans la documentation Amazon.

L’étape 4 permet à Tableau de fournir le jeton d’identité OIDC reçu d’Okta (une fois l’utilisateur authentifié), ainsi que le rôle IAM fourni par l’utilisateur à AWS. AWS est capable de valider le jeton et la signature d’Okta, d’extraire l’ID utilisateur du jeton, de rechercher le mappage de l’utilisateur au rôle IAM, et d’autoriser ou d’empêcher Tableau d’assumer le rôle pour le compte de l’utilisateur. (c’est-à-dire AssumeRoleWithWebIdentity).

Étape 5 : Se connecter à Athena

Effectuez les étapes suivantes dans Tableau Server, Tableau Cloud ou Tableau Desktop.

  1. Connectez-vous à Tableau.
  2. Sous Connexion, sélectionnez À un serveur.
  3. Sélectionnez Amazon Athena.
  4. Dans la boîte de dialogue de connexion, entrez les paramètres de connexion et l’ARN appropriés pour le rôle que vous souhaitez que Tableau assume.
  5. Sélectionnez le fournisseur OAuth configuré à l’Étape 3. (S’il n’existe qu’un seul client OAuth, ce sera celui par défaut. S’il existe plusieurs clients OAuth, un utilisateur Creator peut choisir selon ses besoins.)
  6. Sélectionnez Connexion pour vous connecter à Amazon Athena.

Exemple de fichier de configuration OAuth

Vous pouvez utiliser le fichier suivant comme modèle pour créer votre propre fichier OAuth. Cependant, assurez-vous de le mettre à jour avec vos informations spécifiques telles que l’ID client.

Copier

Exemple de fichier de configuration 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>

Merci de vos commentaires !Avis correctement envoyé. Merci