Partager via


Utiliser des identités managées Azure dans Unity Catalog pour accéder au stockage

Cette page explique comment utiliser des identités managées Azure pour la connexion à des conteneurs de stockage pour le compte des utilisateurs du catalogue Unity.

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é utilisée par les applications quand 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 l’accès en fonction du fichier ou l’accès à 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 :

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 aussi choisir d’y associer une identité managée affectée par l’utilisateur. Vous accordez ensuite l’accès à l’identité gérée à votre compte Azure Data Lake Storage, et utilisez le connecteur d’accès lors de la création d'un metastore Unity Catalog ou d'un justificatif de stockage.

Spécifications

L’utilisateur ou le principal de service Azure qui crée le connecteur d’accès doit :

  • Être Contributor ou Owner 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 Owner ou un utilisateur avec le rôle RBAC Azure User Access Administrator 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 inclure une identité managée affectée par le système, une ou plusieurs identités managées affectées par l’utilisateur, ou les deux.

  1. Connectez-vous au portail Azure en tant que Contributeur ou Propriétaire d’un groupe de ressources.

  2. Cliquez sur + Créer ou créer une ressource.

  3. Recherchez connecteur d’accès pour Azure Databricks et sélectionnez-le.

  4. Cliquez sur Créer.

  5. 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 va être créé.
    • Nom : saisissez 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.
  6. Cliquez sur suivant, entrez des balises, puis cliquez sur suivant.

  7. Sous l’onglet Identité managée, créez les identités managées comme suit :

    • Pour utiliser une identité managée affectée par le système, définissez État sur Activé.
    • Pour ajouter des identités managées affectées par l’utilisateur, cliquez sur + Ajouter, puis sélectionnez une ou plusieurs identités managées affectées par l’utilisateur.

    configurer des identités managées pour un connecteur d’accès.

  8. Cliquez sur Vérifier + créer.

  9. Lorsque le message Validation réussie s’affiche, cliquez sur Créer.

  10. Une fois le déploiement terminé, cliquez sur Accéder à la ressource.

  11. 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 accorder les autorisations à cette étape, vous devez disposer du rôle RBAC Azure Owner ou User Access Administrator sur votre compte de stockage.

Vous disposez des options suivantes lorsque vous accordez à l’identité managée l’accès au compte de stockage et au conteneur :

  • Accordez un accès en lecture et en écriture à l’ensemble du compte de stockage à l’aide du Storage Blob Data Contributor rôle.
  • Accordez un rôle plus limité sur le compte de stockage à l’aide du Storage Blob Delegator rôle et lisez et écrivez l’accès à un conteneur spécifique à l’aide du Storage Blob Data Contributor rôle.

Les instructions qui suivent supposent que vous accordez le Storage Blob Data Contributor rôle sur le compte de stockage, mais vous pouvez remplacer les autres options en fonction des besoins :

  1. Connectez-vous à votre compte Azure Data Lake Storage.
  2. Accédez à Contrôle d’accès (IAM), cliquez sur Ajouter, puis sélectionnez Ajouter une attribution de rôle.
  3. Sélectionnez le rôle Contributeur aux données Blob du stockage, puis cliquez sur Suivant.
  4. Sous Attribuer l’accès à, sélectionnez Identité managée.
  5. Cliquez sur +Sélectionner des membres, puis sélectionnez Connecteur d’accès pour Azure Databricks ou Identité managée affectée par l’utilisateur.
  6. Recherchez le nom de votre connecteur ou de l’identité affectée par l’utilisateur, sélectionnez-le, puis cliquez sur Vérifier et affecter.

Étape 3 : Accorder à l’identité managée l’accès aux événements de fichier

Pour configurer les rôles Azure requis et activer les événements de fichier pour les emplacements externes, consultez (Recommandé) Activer les événements de fichier pour un emplacement externe.

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.

  1. En tant qu’administrateur de compte Azure Databricks, connectez-vous à la console de compte Azure Databricks.

  2. Cliquez sur l’icône Données.Catalogue.

  3. Cliquez sur Create Metastore.

  4. Entrez des valeurs dans les champs suivants :

    • Nom pour le métastore.

    • 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 : saisissez 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 :

      /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, saisissez l’ID de ressource de l’identité managée.

  5. Cliquez sur Créer.

  6. À 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 permet 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 aux comptes de stockage protégés par des règles réseau, ce qui n’est pas possible à l’aide de principaux de service, et elle élimine la nécessité de gérer et de renouveler les secrets.

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 à l’aide du catalogue Unity.

Si votre espace de travail Azure Databricks est déployé dans votre propre réseau virtuel Azure, é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, vous devez :

  1. Activer l’accès de votre espace de travail Azure Databricks au Stockage Azure.
  2. Activer l’accès de votre identité managée 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 permettre à votre espace de travail Azure Databricks d’accéder à Azure Data Lake Storage. Vous pouvez configurer des points de terminaison privés ou un accès à partir de votre réseau virtuel sur Azure Data Lake Storage pour autoriser les connexions de vos sous-réseaux à votre compte Azure Data Lake Storage.

Pour obtenir des instructions, consultez Accorder à votre espace de travail Azure Databricks l’accès à Azure Data Lake Storage.

É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

  1. Connectez-vous au portail Azure, recherchez et sélectionnez le compte de stockage Azure, puis accédez à l’onglet Mise en réseau.

  2. 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.

  3. Sous Instances de ressource, sélectionnez un Type de ressourceMicrosoft.Databricks/accessConnectors, puis sélectionnez votre connecteur d’accès Azure Databricks.

  4. 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

  1. Installez Azure CLI et connectez-vous. Pour vous connecter avec un compte d’utilisateur ou un principal de service, consultez Se connecter avec Azure CLI.

  2. 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>
    
  3. 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.

  4. 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.

  5. 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.

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 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.

  1. 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.

    Notez 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.

  2. 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.

  3. Générez un jeton d’accès personnel.

  4. 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 l’authentification par jeton d’accès personnel (déconseillée).

  5. Utilisez l’interface CLI Databricks pour recréer les informations d’identification du stockage en exécutant la commande suivante.

    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> : 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>
    
  6. Notez l’ID des informations d’identification de stockage dans la réponse.

  7. Exécutez la commande suivante sur l’interface CLI Databricks pour récupérer le metastore_id. Remplacez <profile-name> avec le nom de votre profil de configuration d’authentification Azure Databricks.

    databricks metastores summary --profile <profile-name>
    
  8. Exécutez la commande suivante sur l’interface CLI Databricks pour mettre à jour le metastore avec les nouvelles informations d’identification de stockage racine.

    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> : 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>