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). Voici une présentation générale des étapes du processus.

  1. Établissez une relation de confiance entre le fournisseur d’identité, Tableau et la source de données.
  2. Créez des identifiants client OAuth pour Tableau.
  3. Implémentez les détails du client OAuth dans Tableau.
  4. Créez une stratégie pour l’identité fédérée.
  5. Connectez-vous à Amazon Athena.

Exemple d’Amazon Athena et Okta

L’exemple suivant décrit le processus multi-étapes de création d’une relation de confiance triangulaire et d’une solution OAuth fédérée 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 aux données. Une fois correctement configuré, lorsqu’un utilisateur tente de se connecter aux données, Tableau l’envoie automatiquement au fournisseur d’identité pour qu’il s’authentifie et consente à déléguer l’autorisation d’accéder à ses données. Tableau reçoit les jetons d’accès et de rafraîchissement OAuth et les utilise pour se connecter à la source de données.

Remarque : Les instructions complètes sont uniquement disponibles pour les étapes à suivre 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 obtenir 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 pour la délégation d’accès. L’utilisateur, après s’être authentifié, délègue à Tableau l’autorisation d’agir en son nom. Effectuez les étapes suivantes 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 trouverez un exemple au bas de cette page ou sur notre page Github, sous 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 et le secret client OAuth à partir de l’application Okta.
  3. Téléversez un fichier de configuration OAuth.
  4. Sélectionnez Ajouter un client Oauth pour terminer le processus.

Client Tableau Desktop et Tableau Bridge

  1. Ouvrez le fichier de configuration OAuth à partir du répertoire dans lequel vous l’avez enregistré.
  2. Ajustez l’ID client, le secret client, authUri et tokenUri dans le fichier XML avec l’information de votre application Okta pour Tableau Desktop.
  3. Enregistrez le fichier de configuration OAuth dans le dossier « OAuthConfigs » de votre dossier Mon référentiel Tableau.
  4. Si vous utilisez le client Bridge, redémarrez-le 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 de confiance AWS qui permet à l’application d’identité fédérée Tableau (ID client) de pouvoir assumer un rôle avec la fédération d’identité Web. Cette étape est effectuée dans AWS. Pour plus de détails, consultez Accorder aux utilisateurs et aux groupes l’accès aux ressources AWS dans la documentation Amazon.

L’étape 4 permet à Tableau de fournir à AWS 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 peut valider le jeton et la signature reçus d’Okta, extraire l’ID de l’utilisateur du jeton, vérifier si l’utilisateur est associé au rôle IAM, et autoriser ou empêcher Tableau d’assumer le rôle au nom de l’utilisateur. (c’est à dire, AssumeRoleWithWebIdentity).

Étape 5 : Connexion à Athena

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

  1. Connectez-vous à Tableau.
  2. Sous Connexion, sélectionner À 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, il sera le client par défaut. S’il existe plusieurs clients OAuth, un utilisateur Creator peut choisir celui qui lui convient.)
  6. Sélectionner Se connecter 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, mais veillez à le mettre à jour avec vos renseignements spécifiques, notamment l’ID du 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!Votre commentaire s été envoyé avec succès. Merci!