Utiliser des identités managées Azure dans Unity Catalog pour accéder au stockage
Cet article explique comment utiliser des identités managées Azure afin de se connecter à des conteneurs de stockage pour le compte d’utilisateurs de Unity Catalog.
Que sont les identités managées Azure ?
Unity Catalog peut être configuré pour utiliser une identité managée Azure afin d’accéder aux conteneurs de stockage au nom des utilisateurs de Unity Catalog. Les identités managées fournissent une identité que les applications peuvent utiliser lorsqu’elles se connectent à des ressources qui prennent en charge l’authentification Microsoft Entra ID.
Vous pouvez utiliser des identités managées dans Unity Catalog pour prendre en charge deux cas d’usage principaux :
- En tant qu’identité pour se connecter aux comptes de stockage managés du metastore (où les tables managées sont stockées).
- En tant qu’identité pour se connecter à d’autres comptes de stockage externes (pour un accès basé sur des fichiers ou pour accéder à des jeux de données existants via des tables externes).
La configuration de Unity Catalog avec une identité managée présente les avantages suivants par rapport à la configuration de Unity Catalog avec un principal de service :
Les identités managées ne nécessitent pas de gestion d’informations d’identification ou de rotation des secrets.
Si votre espace de travail Azure Databricks est déployé dans votre propre réseau virtuel (également appelé injection de réseau virtuel) et que vous utilisez un pare-feu de stockage pour protéger un compte Azure Data Lake Storage Gen2, vous pouvez utiliser l’identité managée pour connecter l’espace de travail à ce compte. Consultez (Recommandé pour les espaces de travail injectés dans un réseau virtuel) Configurer un accès approuvé au stockage Azure sur la base de votre identité managée.
Notes
Vous ne pouvez pas utiliser un pare-feu de stockage dans un déploiement Azure Databricks standard.
Configurer une identité managée pour Unity Catalog
Pour configurer une identité managée à utiliser avec Unity Catalog, vous devez d’abord créer un connecteur d’accès pour Azure Databricks dans Azure. Par défaut, le connecteur d’accès se déploie avec une identité managée affectée par le système. Vous pouvez choisir à la place d’attacher une identité managée affectée par l’utilisateur. Vous accordez ensuite à l’identité managée l’accès à votre compte Azure Data Lake Storage Gen2 et utilisez le connecteur d’accès lorsque vous créez un metastore Unity Catalog ou des informations d’identification de stockage.
Spécifications
L’utilisateur ou le principal de service Azure qui crée le connecteur d’accès doit :
- Être Contributeur ou Propriétaire d’un groupe de ressources Azure.
L’utilisateur ou le principal de service Azure qui octroie l’identité managée au compte de stockage doit :
- Être Propriétaire ou Utilisateur avec le rôle RBAC Azure Administrateur de l’accès utilisateur sur le compte de stockage.
Étape 1 : Créer un connecteur d’accès pour Azure Databricks
Le connecteur d’accès pour Azure Databricks est une ressource Azure interne qui vous permet de connecter des identités managées à un compte Azure Databricks.
Chaque connecteur d’accès pour Azure Databricks peut contenir une identité managée affectée par le système ou une identité managée affectée par l’utilisateur. Si vous souhaitez utiliser plusieurs identités managées, créez un connecteur d’accès distinct pour chacune d’elles.
Utiliser une identité managée affectée par le système
Connectez-vous au portail Azure en tant que Contributeur ou Propriétaire d’un groupe de ressources.
Cliquez sur + Créer ou créer une ressource.
Recherchez connecteur d’accès pour Azure Databricks et sélectionnez-le.
Cliquez sur Créer.
Sous l’onglet De base, acceptez, sélectionnez ou entrez des valeurs pour les champs suivants :
- Abonnement : il s’agit de l’abonnement Azure dans lequel le connecteur d’accès va être créé. Par défaut, c’est l’abonnement Azure que vous utilisez actuellement. Ce peut être tout abonnement dans le locataire.
- Groupe de ressources : il s’agit du groupe de ressources Azure dans lequel le connecteur d’accès sera créé.
- Nom : entrez un nom qui indique la finalité du connecteur.
- Région : il devrait s’agir de la région dans laquelle se trouve le compte de stockage auquel vous souhaitez vous connecter.
Cliquez sur Vérifier + créer.
Lorsque le message Validation réussie s’affiche, cliquez sur Créer.
Une fois le déploiement réussi, le connecteur d’accès est déployé avec une identité managée affectée par le système.
Une fois le déploiement terminé, cliquez sur Accéder à la ressource.
Notez l’ID de ressource.
L’ID de ressource est au format suivant :
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
Utiliser une identité managée affectée par l’utilisateur
Si vous n’avez pas encore d’identité managée affectée par l’utilisateur, créez-en une et notez son ID de ressource.
Consultez Gérer les identités gérées affectées par l’utilisateur.
Connectez-vous au portail Azure en tant que Contributeur ou Propriétaire d’un groupe de ressources.
Le groupe de ressources doit se trouver dans la même région que le compte de stockage auquel vous souhaitez vous connecter.
Recherchez Déployer un modèle personnalisé et sélectionnez-le.
Sélectionnez Créer votre propre modèle et collez le modèle suivant dans l’éditeur :
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "connectorName": { "defaultValue": "testConnector", "type": "String", "metadata": { "description": "The name of the Azure Databricks Access Connector to create." } }, "accessConnectorRegion": { "defaultValue": "[resourceGroup().location]", "type": "String", "metadata": { "description": "Location for the access connector resource." } }, "userAssignedManagedIdentiy": { "type": "String", "metadata": { "description": "The resource Id of the user assigned managed identity." } } }, "resources": [ { "type": "Microsoft.Databricks/accessConnectors", "apiVersion": "2023-05-01", "name": "[parameters('connectorName')]", "location": "[parameters('accessConnectorRegion')]", "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedManagedIdentiy')]": {} } } } ] }
Sous l’onglet Informations de base, acceptez, sélectionnez ou entrez des valeurs pour les champs suivants :
- Abonnement : l’abonnement Azure dans lequel le connecteur d’accès va être créé. Par défaut, c’est l’abonnement Azure que vous utilisez actuellement. Ce peut être tout abonnement dans le locataire.
- Groupe de ressources : un groupe de ressources se trouvant dans la même région que le compte de stockage auquel vous souhaitez vous connecter.
- Nom : un nom qui indique la finalité du connecteur.
- Région : il devrait s’agir de la région dans laquelle se trouve le compte de stockage auquel vous souhaitez vous connecter. Vous pouvez choisir la valeur préremplie « [resourceGroup().location] » si le groupe de ressources a été créé dans la même région que le compte de stockage auquel vous allez vous connecter.
- Identité managée affectée par l’utilisateur : l’ID de ressource de l’identité managée affectée par l’utilisateur que vous souhaitez utiliser.
Cliquez sur Vérifier + créer.
Lorsque le message Validation réussie s’affiche, cliquez sur Créer.
Une fois le déploiement terminé, cliquez sur Accéder à la ressource.
Notez l’ID de ressource.
L’ID de ressource est au format suivant :
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
Étape 2 : Accorder à l’identité managée l’accès au compte de stockage
Pour octroyer les autorisations à cette étape, vous devez disposer du rôle Azure RBAC Propriétaire ou Administrateur de l’accès utilisateur sur votre compte de stockage.
- Connectez-vous à votre compte Azure Data Lake Storage Gen2.
- Accédez à Contrôle d’accès (IAM), cliquez sur Ajouter, puis sélectionnez Ajouter une attribution de rôle.
- Sélectionnez le rôle Contributeur aux données Blob du stockage, puis cliquez sur Suivant.
- Sous Attribuer l’accès à, sélectionnez Identité managée.
- Cliquez sur +Sélectionner des membres, puis sélectionnez le Connecteur d’accès pour Azure Databricks ou Identité managée affectée par l’utilisateur.
- Recherchez le nom de votre connecteur ou l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Examiner et affecter.
Vous pouvez également limiter l’accès au compte de stockage en accordant l’accès à un conteneur spécifique à l’identité managée. Suivez les mêmes étapes ci-dessus, mais octroyez le rôle de Délégation du Stockage Blob sur le compte de stockage et le rôle Contributeur aux données Blob du stockage sur le conteneur.
Étape 3 : octroyer à l’identité managée l’accès aux événements de fichier
L’octroi de l’accès à votre identité managée aux événements de fichier permet à Azure Databricks de s’abonner aux notifications d’événements de fichier émises par les fournisseurs cloud. Cela rend le traitement des fichiers plus efficace. Pour octroyer les autorisations à cette étape, vous devez disposer du rôle Azure RBAC Propriétaire ou Administrateur de l’accès utilisateur sur votre compte de stockage.
- Connectez-vous à votre compte Azure Data Lake Storage Gen2.
- Accédez à Contrôle d’accès (IAM), cliquez sur Ajouter, puis sélectionnez Ajouter une attribution de rôle.
- Sélectionnez le rôle Contributeur aux données en file d’attente du stockage, puis cliquez sur Suivant.
- Sous Attribuer l’accès à, sélectionnez Identité managée.
- Cliquez sur +Sélectionner des membres, puis sélectionnez le Connecteur d’accès pour Azure Databricks ou Identité managée affectée par l’utilisateur.
- Recherchez le nom de votre connecteur ou l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Examiner et affecter.
Étape 4 : octroyer à Azure Databricks l’accès pour configurer des événements de fichier en votre nom
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 configurer manuellement les événements de fichier pour chaque emplacement. Au cas contraire, vous aurez un accès limité aux fonctionnalités critiques que Databricks peut publier ultérieurement.
Cette étape permet à Azure Databricks de configurer automatiquement des événements de fichier. Pour octroyer les autorisations de cette étape, vous devez disposer des rôles Azure RBAC Propriétaire ou Administrateur de l’accès utilisateur sur votre identité managée et sur le groupe de ressources dans lequel se trouve votre compte Azure Data Lake Storage Gen2.
- Suivez les instructions à l’Étape 3 : octroyer à l’identité managée l’accès aux événements de fichier et attribuez le rôle Collaborateur pour le compte de stockage, en même temps que le rôle Collaborateur pour les données en file d’attente du stockage, à votre identité managée.
- Accédez au groupe de ressources Azure dans lequel se trouve votre compte Azure Data Lake Storage Gen2.
- Accédez à Contrôle d’accès (IAM), cliquez sur Ajouter, puis sélectionnez Ajouter une attribution de rôle.
- Sélectionnez le rôle Contributeur EventGrid EventSubscription, puis cliquez sur Suivant.
- Sous Attribuer l’accès à, sélectionnez Identité managée.
- Cliquez sur +Sélectionner des membres, puis sélectionnez le Connecteur d’accès pour Azure Databricks ou Identité managée affectée par l’utilisateur.
- Recherchez le nom de votre connecteur ou l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Examiner et affecter.
Utiliser une identité managée pour accéder au compte de stockage racine Unity Catalog
Cette section explique comment accorder à l’identité managée l’accès au compte de stockage racine lorsque vous créez un metastore Unity Catalog.
Pour découvrir comment mettre à niveau un metastore Unity Catalog existant afin d’utiliser une identité managée, consultez Mettre à niveau votre metastore Unity Catalog existant afin d’utiliser une identité managée pour accéder à son stockage racine.
- En tant qu’administrateur de compte Azure Databricks, connectez-vous à la console de compte Azure Databricks.
- Cliquez sur Catalogue.
- Cliquez sur Create Metastore.
- Entrez des valeurs dans les champs suivants :
Nom pour le metastore.
Région dans laquelle le metastore sera déployé.
Pour des performances optimales, colocalisez le connecteur d’accès, les espaces de travail, le metastore et l’emplacement de stockage cloud dans la même région cloud.
Chemin d’accès d’ADLS Gen 2 : entrez le chemin d’accès du conteneur de stockage que vous allez utiliser comme stockage racine pour le metastore.
Le préfixe
abfss://
est ajouté automatiquement.ID du connecteur d’accès : entrez l’ID de ressource du connecteur d’accès Azure Databricks au format suivant :
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
(Facultatif) ID de l’identité managée : si vous avez créé le connecteur d’accès en utilisant une identité managée affectée par l’utilisateur, entrez l’ID de ressource de l’identité managée.
- Cliquez sur Créer.
- À l’invite, sélectionnez les espaces de travail à lier au metastore.
Utiliser une identité managée pour accéder à un stockage externe managé dans Unity Catalog
Unity Catalog vous donne la possibilité d’accéder aux données existantes dans des comptes de stockage à l’aide d’informations d’identification de stockage et d’emplacements externes. Les informations d’identification de stockage stockent l’identité managée, et les emplacements externes définissent un chemin d’accès au stockage, ainsi qu’une référence aux informations d’identification de stockage. Vous pouvez adopter cette approche pour octroyer et contrôler l’accès à des données existantes dans un stockage cloud, ainsi que pour inscrire des tables externes dans Unity Catalog.
Des informations d’identification de stockage peuvent contenir une identité managée ou un principal de service. L’utilisation d’une identité managée offre l’avantage de permettre à Unity Catalog d’accéder à des comptes de stockage protégés par des règles de réseau, ce qui n’est pas possible à l’aide de principaux de service. Elle élimine également la nécessité de gérer les secrets et d’assurer leur rotation.
Pour créer des informations d’identification de stockage à l’aide d’une identité managée et affecter ces informations d’identification de stockage à un emplacement externe, suivez les instructions de Connexion au stockage d’objets cloud et aux services à l’aide du catalogue Unity.
(Recommandé pour les espaces de travail injectés dans un réseau virtuel) Configurer un accès approuvé au stockage Azure sur la base de votre identité managée
Si votre espace de travail Azure Databricks est déployé dans votre propre réseau virtuel Azure, ce que l’on appelle également « injection de réseau virtuel », et que vous utilisez un pare-feu de stockage pour protéger un compte Azure Data Lake Storage Gen2, vous devez :
- Activer votre espace de travail Azure Databricks pour accéder au stockage Azure.
- Activer votre identité managée pour accéder au stockage Azure.
Étape 1. Activer votre espace de travail Azure Databricks pour accéder au Stockage Azure
Vous devez configurer les paramètres réseau pour autoriser votre espace de travail Azure Databricks à accéder à Azure Data Lake Storage Gen2. Vous pouvez configurer des points de terminaison privés ou l’accès à partir de votre réseau virtuel sur Azure Data Lake Storage Gen2 pour autoriser les connexions de vos sous-réseaux à votre compte Azure Data Lake Storage Gen2.
Pour obtenir des instructions, consultez Accorder à votre espace de travail Azure Databricks l’accès à Azure Data Lake Storage Gen2.
Étape 2 : Activer votre identité managée pour accéder au stockage Azure
Cette étape n’est nécessaire que si l’option « Autoriser les services Azure figurant dans la liste des services approuvés à accéder à ce compte de stockage » est désactivée pour votre compte de stockage Azure. Si cette configuration est activée :
- Tout connecteur d’accès pour Azure Databricks qui se trouve dans le même locataire que le compte de stockage peut accéder à ce compte.
- Tout service approuvé Azure peut accéder au compte de stockage. Consultez Accorder l’accès aux services Azure approuvés.
Les instructions ci-dessous incluent une étape dans laquelle vous désactivez cette configuration. Vous pouvez utiliser le portail Azure ou l’interface de ligne de commande Azure.
Utiliser le portail Azure
Connectez-vous au portail Azure, recherchez et sélectionnez le compte de stockage Azure, puis accédez à l’onglet Mise en réseau.
Définissez Accès au réseau public sur Activé à partir des réseaux virtuels et adresses IP sélectionnés.
Au lieu de cela, vous avez la possibilité de définir Accès au réseau public sur Désactivé. L’identité managée peut être utilisée pour contourner la vérification de l’accès au réseau public.
Sous Instances de ressource, sélectionnez un Type de ressourceMicrosoft.Databricks/accessConnectors, puis sélectionnez votre connecteur d’accès Azure Databricks.
Sous Exceptions, désactivez la case à cocher Autoriser les services Azure figurant dans la liste des services approuvés à accéder à ce compte de stockage.
Utilisation de l’interface de ligne de commande Microsoft Azure
Installer Azure CLI et se connecter.
Pour vous connecter en utilisant un principal de service Microsoft Entra ID, consultez Connexion Azure CLI avec un principal de service Microsoft Entra ID.
Pour vous connecter à l'aide d'un compte d'utilisateur Azure Databricks, consultez Connexion Azure CLI avec un compte d'utilisateur Azure Databricks.
Ajoutez une règle réseau au compte de stockage :
az storage account network-rule add \ -–subscription <subscription id of the resource group> \ -–resource-id <resource Id of the access connector for Azure Databricks> \ -–tenant-id <tenant Id> \ -g <name of the Azure Storage resource group> \ -–account-name <name of the Azure Storage resource> \
Ajoutez l’ID de ressource au format suivant :
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
Après avoir créé la règle de réseau, accédez à votre compte stockage Azure dans le portail Azure, puis affichez l’identité managée sous l’onglet Mise en réseau dans Instances de ressources, type de ressource
Microsoft.Databricks/accessConnectors
.Sous Exceptions, désactivez la case à cocher Autoriser les services Azure figurant dans la liste des services approuvés à accéder à ce compte de stockage.
Si vous le souhaitez, définissez Accès au réseau public sur Désactivé. L’identité managée peut être utilisée pour contourner la vérification de l’accès au réseau public.
L’approche standard consiste à conserver cette valeur définie sur Activé à partir des réseaux virtuels et adresses IP sélectionnés.
(Recommandé) Configurer des pare-feu de stockage Azure pour autoriser l’accès à partir d’entrepôts SQL serverless
Les entrepôts SQL serverless sont des ressources de calcul qui s’exécutent dans l’abonnement Azure pour Azure Databricks, et non dans votre abonnement Azure. Si vous configurez un pare-feu sur Azure Data Lake Storage Gen2 et que vous envisagez d’utiliser des entrepôts SQL serverless, vous devez configurer le pare-feu pour autoriser l’accès à partir d’entrepôts SQL serverless.
Pour obtenir des instructions, consultez Configurer un pare-feu pour l’accès au calcul serverless.
Mettre à niveau votre metastore Unity Catalog existant afin d’utiliser une identité managée pour accéder à son stockage racine
Si vous avez un metastore Unity Catalog créé à l’aide d’un principal de service et souhaitez le mettre à niveau pour utiliser une identité managée, vous pouvez le mettre à jour à l’aide d’un appel d’API.
Créez un connecteur d’accès pour Azure Databricks, puis attribuez-lui les autorisations d’accès au conteneur de stockage qui est utilisé pour le stockage racine de votre metastore Unity Catalog. Pour cela, suivez les instructions fournies dans Configurer une identité managée pour Unity Catalog.
Vous pouvez créer le connecteur d’accès avec une identité managée affectée par le système ou une identité managée affectée par l’utilisateur.
Prenez note de l’ID de ressource du connecteur d’accès. Si vous utilisez une identité managée affectée par l’utilisateur, notez également son ID de ressource.
En tant qu’administrateur de compte, connectez-vous à un espace de travail Azure Databricks affecté au metastore.
Vous ne devez pas nécessairement être administrateur d’espace de travail.
Créez un profil de configuration d’authentification Azure Databricks dans votre environnement local qui contient les éléments suivants :
- Le nom de l’instance de l’espace de travail et ID d’espace de travail de l’espace de travail où vous avez généré votre jeton d’accès personnel.
- La valeur du jeton d’accès personnel.
Consultez Authentification à l’aide de jetons d’accès personnels Azure Databricks.
Utilisez l’interface CLI Databricks pour exécuter la commande suivante afin de recréer les informations d’identification du stockage.
Remplacez les valeurs d’espace réservé :
<credential-name>
: nom des informations d’identification de stockage.<access-connector-id>
: ID de ressource pour le connecteur d’accès Azure Databricks au format/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
.<managed-identity-id>
: si vous avez créé le connecteur d’accès en utilisant une identité managée affectée par l’utilisateur, spécifiez l’ID de ressource de l’identité managée.<profile-name>
: le nom de votre profil de configuration d’authentification Azure Databricks.
databricks storage-credentials create --json '{ "name\": "<credential-name>", "azure_managed_identity": { "access_connector_id": "<access-connector-id>", "managed_identity_id": "<managed-identity-id>" } }' --profile <profile-name>
Notez l’ID des informations d’identification de stockage dans la réponse.
Exécutez la commande de l’interface CLI Databricks suivante pour récupérer le
metastore_id
. Remplacez<profile-name>
par le nom de votre profil de configuration d’authentification Azure Databricks.databricks metastores summary --profile <profile-name>
Exécutez la commande de l’interface CLI Databricks suivante pour mettre à jour le metastore avec les nouvelles informations d’identification de stockage racines.
Remplacez les valeurs d’espace réservé :
<metastore-id>
: ID du metastore que vous avez récupéré à l’étape précédente.<storage-credential-id>
: ID d’informations d’identification de stockage.<profile-name>
: le nom de votre profil de configuration d’authentification Azure Databricks.
databricks metastores update <metastore-id> \ --storage-root-credential-id <storage-credential-id> \ --profile <profile-name>