Accéder à S3 avec la transmission des identifiants IAM via la fédération SAML 2.0 (hérité)
Cette documentation a été retirée et pourrait ne pas être mise à jour.
L'authentification pass-through est obsolète à partir de Databricks Runtime 15,0 et sera supprimée dans les futures versions de Databricks Runtime. Databricks vous recommande de passer à Unity Catalog. Unity Catalog simplifie la sécurité et la gouvernance de vos données en fournissant un emplacement central pour administrer et auditer l'accès aux données dans plusieurs Workspaces de votre compte. Voir Qu'est-ce que Unity Catalog ?.
AWS prend en charge la fédération d'identité SAML 2.0 pour permettre le Single Sign On à la console de gestion AWS et aux APIs AWS. Les Workspaces Databricks configurés avec le Single Sign On peuvent utiliser la fédération AWS IAM pour maintenir le mappage des utilisateurs aux rôles IAM au sein de leur fournisseur d'identité (IdP) plutôt qu'au sein de Databricks à l'aide de SCIM. Ceci vous permet de centraliser l'accès aux données au sein de votre IdP et de transmettre ces droits directement aux clusters Databricks.
La transmission des identifiants IAM avec la fédération SAML 2.0 ne peut être configurée que lorsque la connexion unifiée est désactivée. Databricks vous recommande de passer à Unity Catalog, voir Qu'est-ce que Unity Catalog ?. Si votre compte a été créé après le 21 juin 2023 ou si vous n'avez pas configuré l'SSO avant le 12 décembre 2024 et que vous avez besoin du passthrough des informations d'identification IAM avec la fédération SAML 2.0, contactez votre équipe de compte Databricks.
Le schéma suivant illustre le workflow de fédération :

- Configurez une relation de confiance entre votre IdP et vos comptes AWS afin que l'IdP puisse contrôler les rôles que les utilisateurs peuvent assumer.
- Les utilisateurs se connectent à Databricks via SAML SSO, les droits d'accès aux rôles étant transmis par l'IdP.
- Databricks appelle l'AWS Security Token Service (STS) et endosse les rôles pour l'utilisateur en transmettant la réponse SAML et en obtenant des jetons temporaires.
- Lorsqu'un utilisateur accède à S3 à partir d'un cluster Databricks, Databricks Runtime utilise les jetons temporaires pour que l'utilisateur effectue l'accès automatiquement et en toute sécurité.
La fédération pour la transmission des identifiants IAM associe toujours les rôles aux utilisateurs dans SAML lorsque la synchronisation automatique des droits du rôle IAM est activée. Cela écrasera tous les rôles précédents définis via l'API SCIM.
Exigences
-
SAML Single Sign-On configuré dans votre workspace Databricks.
-
Accès administrateur AWS à :
- Rôles et politiques IAM dans le compte AWS du déploiement Databricks.
- Compte AWS du compartiment S3.
-
Administrateur de fournisseur d'identité (IdP) pour configurer votre IdP afin de transmettre les rôles AWS à Databricks.
-
Un administrateur de workspace Databricks pour inclure les rôles AWS dans l'assertion SAML.
Étape 1 : Obtenir l'URL SAML Databricks
-
Accédez à la page de paramètres.
-
Cliquez sur la tab Authentification .
-
Copiez l'URL SAML Databricks.

Étape 2 : download les métadonnées du fournisseur d'identité
Les étapes au sein de la console du fournisseur d'identité varient légèrement pour chaque fournisseur d'identité. Consultez Integrating Third-Party SAML Solution Providers with AWS pour des exemples avec votre fournisseur d'identité.
-
Dans la console d'administration de votre fournisseur d'identité, recherchez votre application Databricks pour le Single Sign On.
-
download les métadonnées SAML.

Étape 3 : Configurer le fournisseur d'identité
- Dans la console AWS, accédez au service IAM .
- Cliquez sur l'onglet Fournisseurs d'identité dans la barre latérale.
- Cliquez sur Créer un fournisseur .
- Dans le type de fournisseur, sélectionnez SAML .
- Dans Nom du fournisseur, saisissez un nom.
- Dans **Document de métadonnées**, cliquez sur **Choisir un fichier** et accédez au fichier contenant le document de métadonnées que vous avez download ci-dessus.
- Cliquez sur Étape suivante , puis sur Créer .
Étape 4 : Configurez le rôle IAM pour la fédération
Seuls les rôles utilisés pour l'accès aux données doivent être utilisés pour la fédération avec Databricks. Nous ne recommandons pas d’autoriser les rôles normalement utilisés pour l’accès à la console AWS, car ils peuvent avoir plus de privilèges que nécessaire.
-
Dans la console AWS, accédez au service IAM .
-
Cliquez sur l’onglet tab dans la barre latérale.
-
Cliquez sur Créer un rôle .
- Sous **Sélectionner le type d'entité de confiance**, sélectionnez **Fédération SAML 2.0**.
- Dans le fournisseur SAML, sélectionnez le nom créé à l'étape 3.
- Sélectionnez Autoriser uniquement l'accès programmatique .
- Dans Attribut, sélectionnez SAML .
- Dans Valeur, collez l'URL SAML Databricks que vous avez copiée à l'étape 1.
- Cliquez sur Suivant : Autorisations , Suivant : Balises et Suivant : Révision .
- Dans le champ Nom du rôle, saisissez un nom de rôle.
- Cliquez sur Créer un rôle . La liste des rôles s'affiche.
-
Ajoutez une politique intégrée au rôle. Cette politique accorde l'accès au compartiment S3.
-
Dans le tab Autorisations, cliquez sur
.
-
Cliquez sur l'onglet **JSON**. Copiez cette politique et définissez
<s3-bucket-name>sur le nom de votre compartiment.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>/*"]
}
]
} -
Cliquez sur Vérifier la politique .
-
Dans le champ Nom, saisissez un nom de politique.
-
Cliquez sur Créer une politique .
-
-
Dans l'onglet Trusted Relationships tab , vous devriez pouvoir voir quelque chose de similaire à :

-
Cliquez sur le bouton Modifier la relation d'approbation . Le document de politique de confiance IAM résultant doit être similaire à ce qui suit :
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<accountID>:saml-provider/<IdP-name>"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://xxxxxx.cloud.databricks.com/saml/consume"
}
}
}
]
}
Étape 5 : Configurez le fournisseur d'identité pour transmettre les attributs à Databricks
Les attributs suivants doivent être transmis à Databricks dans la réponse SAML via le SSO afin que Databricks puisse transmettre les rôles aux clusters :
https://aws.amazon.com/SAML/Attributes/Rolehttps://aws.amazon.com/SAML/Attributes/RoleSessionName
Ces attributs sont la liste des ARNs de rôle et le nom d'utilisateur correspondant à la connexion Single Sign On. Les mappages de rôles sont actualisés lorsqu'un utilisateur se connecte au workspace Databricks.
Si l'affectation des utilisateurs aux rôles IAM est basée sur l'appartenance à un groupe AD/LDAP, vous devez configurer le mappage de ce groupe à un rôle selon votre IdP.
Chaque fournisseur d'identité diffère dans la manière dont vous ajoutez des attributs à transmettre via SAML. La section suivante présente un exemple avec Okta. Consultez l'intégration de fournisseurs de solutions SAML tiers avec AWS pour des exemples avec votre fournisseur d'identité.
Exemple Okta
-
Dans la console d'administration Okta, sous Applications, sélectionnez votre application Single Sign-On pour Databricks.
-
Cliquez sur Modifier sous Paramètres SAML et cliquez sur Suivant pour accéder à l'onglet Configurer SAML .
-
Dans les instructions d'attributs, ajoutez les attributs suivants :
- Nom :
https://aws.amazon.com/SAML/Attributes/RoleSessionName, Format du nom : Référence URI, Valeur :user.login
- Nom :
-
Pour gérer facilement les rôles à l’aide de groupes, créez des groupes correspondant à vos rôles IAM, par exemple
GroupAetGroupB, et ajoutez les utilisateurs à ces groupes. -
Vous pouvez utiliser les expressions Okta pour faire correspondre les groupes et les rôles de la manière suivante :
-
Nom :
https://aws.amazon.com/SAML/Attributes/Role, Format du nom :URI Reference, Valeur :Arrays.flatten(isMemberOfGroupName("GroupA") ? "arn:aws:iam::xxx:role/role-a,arn:aws:iam::xxx:saml-provider/okta-databricks" : {}, isMemberOfGroupName("GroupB") ? "arn:aws:iam::xxx:role/role-b,arn:aws:iam::xxx:saml-provider/okta-databricks" : {})À quoi cela devrait-il ressembler :

Seuls les utilisateurs d’un certain groupe auraient l’autorisation d’utiliser le rôle IAM correspondant.
-
-
Utilisez Manage People pour ajouter des utilisateurs au groupe.
-
Utilisez Gérer les applications pour attribuer le groupe à l'application SSO afin de permettre aux utilisateurs de se connecter à Databricks.
Pour ajouter des rôles supplémentaires, suivez les étapes ci-dessus, en mappant un groupe Okta à un rôle fédéré. Pour disposer de rôles dans différents comptes AWS, ajoutez l’application SSO en tant que nouveau fournisseur d’identité IAM à chaque compte AWS supplémentaire qui aura des rôles fédérés pour Databricks.
Étape 6 : Configurez éventuellement Databricks pour synchroniser les mappages de rôles de SAML à SCIM
Effectuez cette étape si vous souhaitez utiliser la transmission des informations d'identification IAM pour les Jobs ou JDBC. Autrement, vous devez définir des mappages de rôles IAM à l'aide de l' API SCIM.
-
Accédez à la page de paramètres.
-
Cliquez sur la tab Authentification .
-
Sélectionnez Autoriser la synchronisation automatique des droits du rôle IAM .

Bonnes pratiques
Pour une meilleure expérience, nous recommandons de définir la durée maximale de la session du rôle IAM entre 4 et 8 heures. Ceci permet d'éviter que les utilisateurs n'aient à se réauthentifier à plusieurs reprises pour récupérer de nouveaux jetons ou que les longues queries échouent en raison de jetons expirés. Pour définir la durée :
-
Dans la console AWS, cliquez sur le rôle IAM que vous avez configuré à l'étape 4 : Configurer le rôle IAM pour la fédération.
-
Dans la propriété Durée maximale de session CLI/API , cliquez sur Modifier .

-
Sélectionnez la durée et cliquez sur Enregistrer les modifications .
Utiliser la transmission des identifiants IAM avec fédération
Suivez les instructions de Lancer un cluster de transmission des identifiants IAM et n'ajoutez pas de profil d'instance. Pour utiliser le passthrough IAM avec fédération pour les Jobs ou les connexions JDBC, suivez les instructions de Configurer un profil d'instance méta.
Sécurité
Il est sûr de partager des clusters high concurrency IAM avec transmission d'identifiants avec d'autres utilisateurs. Vous serez isolés les uns des autres et ne pourrez ni lire ni utiliser les identifiants des autres.
Dépannage
Les erreurs de configuration sont une source courante d'erreurs lors de la configuration de la transmission des identifiants. L'en-tête **X-Databricks-PassThrough-Error** est renvoyé avec les en-têtes de réponse de connexion pour aider à identifier la source de ces erreurs. Les valeurs possibles sont :
- ValidationError : La configuration des rôles dans le fournisseur d'identité ne satisfait pas les contraintes spécifiées par le service AWS. Une cause fréquente de cette erreur est que le nom du rôle et le nom du fournisseur d'identité sont dans le mauvais ordre.
- InvalidIdentityToken : le fournisseur d’identité soumis n’est pas valide. Une cause fréquente de cette erreur est que les métadonnées du fournisseur d’identité ne sont pas correctement configurées dans le service IAM d'AWS.
- AccessDenied : L'authentification du rôle a échoué. Une cause fréquente de cette erreur est que le fournisseur d'identité n'a pas été ajouté aux relations de confiance du rôle dans le service AWS IAM.
- Attribut de nom de rôle malformé : la configuration du rôle dans le fournisseur d'identité est au mauvais format.
Consultez la documentation de votre navigateur web pour obtenir des instructions sur l'accès aux en-têtes de réponse.
Limitations connues
Les fonctionnalités suivantes ne sont pas prises en charge avec la fédération IAM :
-
%fs(Veuillez utiliser la commande équivalente dbutils.fs à la place). -
Les méthodes suivantes sur les objets SparkContext (
sc) et SparkSession (spark) :- Méthodes obsolètes.
- Des méthodes comme
addFile()etaddJar()qui permettraient aux utilisateurs non-administrateurs d'appeler du code Scala. - Toute méthode qui accède à un système de fichiers autre que S3.
- Anciennes APIs Hadoop (
hadoopFile()ethadoopRDD()). - APIs de streaming, puisque les informations d'identification transmises expireraient pendant que le flux était toujours en cours d'exécution.
-
Les montages DBFS (
/dbfs) sont disponibles uniquement dans Databricks Runtime 7.3 LTS et versions ultérieures. Les points de montage avec transmission des identifiants configurée ne sont pas pris en charge par ce chemin. -
Bibliothèques à l'échelle du cluster nécessitant l'autorisation d'un profil d'instance de cluster pour le download. Seules les bibliothèques avec des chemins DBFS sont prises en charge.
-
Databricks Connect sur les clusters High Concurrency est disponible uniquement dans Databricks Runtime 7.3 LTS et versions ultérieures.