Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment créer des informations d’identification de stockage dans Unity Catalog pour se connecter à AWS S3. La prise en charge de S3 dans Azure Databricks est en lecture seule.
Un identifiant de stockage contient un identifiant cloud de longue durée avec un accès au stockage cloud. Vous référencez des informations d’identification de stockage et le chemin de stockage cloud lorsque vous créez des emplacements externes dans le catalogue Unity pour régir l’accès au stockage externe.
Pour plus d’informations sur les informations d’identification de stockage et les emplacements externes, consultez Se connecter au stockage d’objets cloud à l’aide du catalogue Unity.
Pour plus d’informations sur les autres options de stockage cloud prises en charge par le catalogue Unity, consultez les options de stockage cloud prises en charge par le catalogue Unity.
Remarque
Les frais de transfert de données entre les clouds peuvent s’appliquer. Lorsque vous utilisez le calcul serverless, vous êtes facturé conformément à la stratégie de transfert de données et de connectivité Databricks.
Créer les informations d’identification de stockage
Pour créer des informations d’identification de stockage pour l’accès à un compartiment S3, vous créez un rôle AWS IAM qui autorise l’accès au chemin du compartiment S3 et référencez ce rôle IAM dans la définition des informations d’identification de stockage.
Spécifications
Dans Azure Databricks :
- Espace de travail Azure Databricks activé pour Unity Catalog.
- Privilège
CREATE STORAGE CREDENTIALsur le metastore Unity Catalog associé à l'espace de travail. Les administrateurs de compte et les administrateurs de metastore disposent de ce privilège par défaut.
Dans votre compte AWS :
Compartiment S3 qui répond aux exigences suivantes :
- N’utilisez pas la notation par points (par exemple,
incorrect.bucket.name.notation) dans les noms de compartiments S3. Bien que AWS autorise les points dans les noms de compartiments, Azure Databricks ne prend pas en charge les compartiments S3 avec notation de points. Les buckets contenant des points peuvent entraîner des problèmes de compatibilité avec des fonctionnalités telles que Delta Sharing en raison d'échecs de validation des certificats SSL. Pour de plus amples informations, consultez les meilleures pratiques de nommage des compartiments AWS. - Le bucket ne peut pas avoir de liste de contrôle d'accès S3 associée.
- N’utilisez pas la notation par points (par exemple,
Possibilité de créer des rôles IAM.
Étape 1 : Créer un rôle IAM
Dans AWS, créez un rôle IAM qui donne accès au compartiment S3 auquel vos utilisateurs doivent accéder. Ce rôle IAM doit être défini dans le même compte que le compartiment S3.
Conseil / Astuce
Si vous avez déjà créé un rôle IAM qui fournit cet accès, vous pouvez ignorer cette étape et passer directement à l’étape 2 : donnez à Azure Databricks les détails du rôle IAM.
Créez un rôle IAM qui autorise l’accès au compartiment S3.
La création de rôle est un processus en deux étapes. Dans cette étape, vous créez le rôle en ajoutant une stratégie de relation d’approbation temporaire et un ID externe temporaire que vous modifiez ensuite après avoir créé les informations d’identification de stockage dans Azure Databricks.
Vous devez modifier la stratégie de confiance après avoir créé le rôle, car ce rôle doit s’auto-assumer (c’est-à-dire qu’il doit être configuré pour se faire confiance à lui-même). Le rôle doit donc exister avant que vous ajoutiez l’instruction d’auto-assomption. Pour plus d’informations sur la manière d’assumer soi-même des rôles, consultez cet article de blog Amazon.
Importante
Databricks bloque les identifiants de stockage nouveaux et existants en fonction des rôles IAM qui ne sont pas auto-assumés. Pour plus d’informations, consultez Stratégie d’application des rôles auto-assumés.
Pour créer la stratégie, vous devez utiliser un ID externe fictif.
Créez le rôle IAM avec une stratégie de confiance personnalisée.
Dans le champ Stratégie de confiance personnalisée , collez le json de stratégie suivant.
Cette stratégie établit une relation de confiance inter-comptes afin que Unity Catalog puisse assumer le rôle pour accéder aux données dans le compartiment au nom des utilisateurs Databricks. Cela est spécifié par l’ARN dans la
Principalsection. Il s’agit d’une valeur statique qui fait référence à un rôle créé par Databricks.La stratégie définit l’ID externe sur
0000en tant que valeur fictive. La mise à jour de cette valeur avec l’ID externe de votre identifiant de stockage se fait lors d'une étape ultérieure.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q"] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "0000" } } } ] }Ignorez la configuration de la stratégie d’autorisations. Vous y reviendrez pour l’ajouter plus tard.
Enregistrez le rôle IAM.
Créez la stratégie IAM suivante dans le même compte que le compartiment S3, en remplaçant les valeurs suivantes :
-
<BUCKET>: le nom du compartiment S3. -
<KMS-KEY>: facultatif. Si le chiffrement est activé, indiquez le nom de la clé KMS qui chiffre le contenu du compartiment S3. Si le chiffrement est désactivé, supprimez l’intégralité de la section KMS de la stratégie IAM. -
<AWS-ACCOUNT-ID>: ID de compte de votre compte AWS (et non votre compte Databricks). -
<AWS-IAM-ROLE-NAME>: nom du rôle AWS IAM que vous avez créé à l’étape précédente.
Cette stratégie IAM accorde un accès en lecture et écriture. Vous pouvez également créer une stratégie qui accorde uniquement un accès en lecture. Toutefois, cela peut être inutile car vous pouvez marquer l'identifiant de stockage comme lecture seule, et tout accès en écriture accordé par ce rôle IAM sera ignoré.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"], "Effect": "Allow" }, { "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"], "Resource": ["arn:aws:kms:<KMS-KEY>"], "Effect": "Allow" }, { "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"], "Effect": "Allow" } ] }Remarque
Si vous avez besoin d’une stratégie IAM plus restrictive pour Unity Catalog, contactez votre équipe de compte Azure Databricks pour obtenir de l’aide.
-
Créez une stratégie IAM pour les événements de fichiers dans le même compte que le compartiment S3.
Remarque
Cette étape est facultative mais fortement recommandée. Si vous n’accordez pas à Azure Databricks l’accès pour configurer des événements de fichier en votre nom, vous devez les configurer manuellement pour chaque emplacement. Dans le cas contraire, vous aurez un accès limité à certaines fonctionnalités critiques que Databricks pourrait proposer à l’avenir. Pour plus d’informations sur les événements de fichier, consultez (Recommandé) Activer les événements de fichier pour un emplacement externe.
La stratégie IAM accorde à Azure Databricks l’autorisation de mettre à jour la configuration des notifications d’événements de votre compartiment, de créer une rubrique SNS, de créer une file d’attente SQS et d’abonner la file d’attente SQS à la rubrique SNS. Ces ressources sont requises pour les fonctionnalités qui utilisent des événements de fichier. Remplacez
<BUCKET>par le nom du compartiment S3.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManagedFileEventsSetupStatement", "Effect": "Allow", "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:CreateTopic", "sns:TagResource", "sns:Publish", "sns:Subscribe", "sqs:CreateQueue", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:SetQueueAttributes", "sqs:TagQueue", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue" ], "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsListStatement", "Effect": "Allow", "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsTeardownStatement", "Effect": "Allow", "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] } ] }Associez les stratégies IAM au rôle IAM.
Sous l’onglet Autorisation du rôle, joignez les stratégies IAM que vous venez de créer.
Étape 2 : Fournir à Azure Databricks les détails du rôle IAM
Dans Azure Databricks, connectez-vous à un espace de travail lié au metastore Unity Catalog.
Vous devez disposer du privilège
CREATE STORAGE CREDENTIAL. Les rôles d’administrateur du metastore et d’administrateur du compte incluent tous deux ce privilège.Cliquez sur
Catalogue.
Cliquez sur le bouton Données >externes, accédez à l’onglet Informations d’identification, puis sélectionnez Créer des informations d’identification.
Sélectionnez un type d'identifiant pour rôle AWS IAM.
Saisissez un nom pour l’identifiant, l’ARN du rôle IAM qui autorise Unity Catalog à accéder à l’emplacement de stockage sur votre locataire cloud, ainsi qu’un commentaire facultatif.
(Facultatif) Si vous souhaitez que les utilisateurs aient un accès en lecture seule aux emplacements externes utilisant cet identifiant de stockage, dans les Advanced options (Options avancées), sélectionnez Read only (Lecture seule). Pour en savoir plus, veuillez consulter la section Marquer un identifiant de stockage comme accessible en lecture seule.
Remarque
Étant donné qu’Azure Databricks fournit uniquement un accès en lecture seule aux compartiments S3 à l’aide des informations d’identification de stockage, il n’est pas nécessaire de définir cette option.
Cliquez sur Créer.
Dans la boîte de dialogue Storage credential created (Identifiant de stockage créé), copiez l’ID externe.
Cliquez sur Done.
(Facultatif) Liez l’identifiant de stockage à des espaces de travail spécifiques.
Par défaut, tout utilisateur privilégié peut utiliser l’identifiant de stockage sur n’importe quel espace de travail rattaché au metastore. Si vous souhaitez autoriser l’accès uniquement à partir d’espaces de travail spécifiques, accédez à l’onglet Espaces de travail et attribuez des espaces de travail. Voir (Facultatif) Affecter les informations d’identification de stockage à des espaces de travail spécifiques.
Vous pouvez également créer des informations d’identification de stockage à l’aide du fournisseur Databricks Terraform et databricks_storage_credential.
Étape 3 : mettre à jour la stratégie de relation de confiance du rôle IAM
Dans AWS, modifiez la politique de relation de confiance pour ajouter l'ID externe de vos informations d'identification de stockage et configurez-la pour qu'elle s'assume automatiquement.
Retournez dans le rôle IAM enregistré et allez dans l’onglet Trust Relationships (Relations de confiance).
Modifiez la stratégie de relation de confiance comme suit :
Ajoutez l’ARN suivant à l’instruction « Allow ». Remplacez
<YOUR-AWS-ACCOUNT-ID>et<THIS-ROLE-NAME>par vos valeurs réelles d’ID de compte et de rôle IAM."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"Dans l’instruction
"sts:AssumeRole", mettez à jour l’ID externe fictif avec l’ID externe de votre identifiant de stockage que vous avez copié à l’étape précédente."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"Votre stratégie devrait maintenant ressembler à ce qui suit, avec le texte fictif remplacé par l’ID externe de votre identifiant de stockage, l’ID de votre compte et les valeurs du rôle IAM :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q", "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>" } } } ] }
Étape 4 : Valider les informations d’identification de stockage
Après avoir apporté les modifications apportées à la stratégie d’approbation de rôle IAM à l’étape 3 : Mettez à jour la stratégie de relation d’approbation de rôle IAM, vérifiez que votre rôle IAM est correctement configuré pour être utilisé comme informations d’identification de stockage.
Remarque
Pour valider la configuration, vous devez être le propriétaire des informations d’identification de stockage, un administrateur de metastore ou vous disposez CREATE EXTERNAL LOCATION d’autorisations sur les informations d’identification de stockage.
Dans Azure Databricks, connectez-vous à un espace de travail lié au metastore.
Cliquez sur
Catalogue.
Cliquez sur le bouton Données >externes et accédez à l’onglet Informations d’identification.
En alternative, vous pouvez cliquer sur l’icône d’engrenage
en haut du volet Catalog et sélectionner Credentials (Identifiants).
Sélectionnez les informations d’identification de stockage que vous souhaitez valider.
Cliquez sur
.Si l’une des vérifications échoue, revenez à l’étape 3 : Mettez à jour la stratégie de relation d’approbation de rôle IAM et passez en revue la stratégie d’approbation du rôle IAM pour les configurer correctement.
Lorsque les informations d’identification de stockage sont validées, vous pouvez l’utiliser pour créer un emplacement externe.
Stratégie de mise en application du rôle auto-assumé
Le 30 juin 2023, AWS a mis à jour sa stratégie de confiance des rôles IAM pour exiger que les rôles IAM se fassent explicitement confiance pour les appels STS:AssumeRole. Par conséquent, Databricks exige que les rôles AWS IAM pour les autorisations de stockage soient auto-assumés. Pour plus d’informations, consultez ce billet de blog de la communauté.
Le 20 janvier 2025, Databricks a commencé à bloquer l’utilisation des informations d’identification de stockage existantes avec des rôles IAM ne se présumant pas eux-mêmes. Cette interdiction peut perturber les charges de travail et les tâches qui s’exécutent à l’aide d’identifiants non auto-assumés.
Pour vérifier si un rôle AWS IAM pour un identifiant de stockage est auto-assignant, suivez les instructions de l’étape 4 : Valider l’identifiant de stockage. Si la vérification Self Assume Role (Assumer soi-même un rôle) échoue, revenez à l’étape 3 : mettre à jour la stratégie de relation de confiance du rôle IAM et reconfigurez la stratégie de confiance du rôle IAM pour qu’il se fasse confiance à lui-même.
Si vous avez plusieurs identifiants de stockage dans un metastore que vous souhaitez vérifier, utilisez le notebook suivant pour vérifier les capacités d’auto-assomption de tous les identifiants de stockage dans votre metastore :
Notebook de vérification des identifiants de stockage auto-assumés
Obtenir un ordinateur portable
(Facultatif) Affecter les informations d’identification de stockage à des espaces de travail spécifiques
Par défaut, un identifiant de stockage est accessible depuis tous les espaces de travail du metastore. Cela signifie que si un utilisateur s’est vu accorder un privilège (tel que CREATE EXTERNAL LOCATION) sur cet identifiant de stockage, il peut exercer ce privilège à partir de n’importe quel espace de travail rattaché au metastore. Si vous utilisez des espaces de travail pour isoler l’accès aux données utilisateur, vous pouvez autoriser l’accès à des informations d’identification de stockage uniquement à partir d’espaces de travail spécifiques. Cette fonctionnalité est appelée liaison d’espace de travail ou isolation des identifiants de stockage. Pour obtenir des instructions, consultez (Facultatif) Affecter des informations d’identification de stockage à des espaces de travail spécifiques.
Limites
- Dans les espaces de travail qui utilisent le contrôle de sortie sans serveur, l’accès multiplateforme aux compartiments AWS S3 doit être configuré à l’aide de l’API des politiques réseau.
Étapes suivantes
Affichez, mettez à jour, supprimez et accordez à d’autres utilisateurs l’autorisation d’utiliser des informations d’identification de stockage. Veuillez consulter la section Gérer les identifiants de stockage.
Définissez des emplacements externes en utilisant un certificat de stockage. Consultez Créer un emplacement externe pour connecter le stockage cloud à Azure Databricks.