Utiliser Azure identités managées dans le catalogue Unity pour accéder au stockage

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

Qu’est-ce que les identités managées Azure ?

Unity Catalog peut être configuré pour utiliser une identité managée Azure pour accéder aux conteneurs de stockage au nom des utilisateurs du catalogue Unity. Les identités managées fournissent une identité permettant aux applications d’utiliser lorsqu’elles se connectent aux 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 le catalogue Unity, vous créez d’abord 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é managée à votre compte Azure Data Lake Storage et utilisez le connecteur d’accès lorsque vous créez un metastore de catalogue Unity 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 :

  • Soyez un(e) Contributor ou un(e) Owner d’un groupe de ressources Azure.

L’utilisateur ou le principal de service Azure qui accorde l’identité managée au compte de stockage doit :

  • Soyez un Owner ou un utilisateur disposant du rôle User Access Administrator Azure RBAC sur le compte de stockage.

Step 1 : Créer un connecteur d’accès pour Azure Databricks

Le connecteur Access pour Azure Databricks est une ressource Azure de première partie 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 Azure Portal en tant que contributeur ou propriétaire d’un groupe de ressources.

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

  3. Recherchez Access Connector 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 :

    • Subscription : il s’agit de l’abonnement Azure dans lequel le connecteur d’accès sera créé. La valeur par défaut est l’abonnement Azure que vous utilisez actuellement. Ce peut être tout abonnement dans le locataire.
    • Resource group : il s’agit du groupe de ressources Azure dans lequel le connecteur d’accès sera 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 Owner ou User Access Administrator Azure RBAC 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 ConnecteurAccess 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 Configurer des é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.

      Vérifiez que le chemin commence par abfss://.

    • Access Connector ID : 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, 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. Activez votre espace de travail Azure Databricks pour accéder à Azure Storage.
  2. Activez votre identité managée pour accéder à Azure Storage.

Étape 1. Permettre à votre espace de travail Azure Databricks d’accéder à Azure Storage

Vous devez configurer les paramètres réseau pour permettre à votre espace de travail Azure Databricks d’accéder à Azure Data Lake Storage. Tout d’abord, vérifiez que votre espace de travail Azure Databricks est déployé dans votre propre réseau virtuel après Déployer Azure Databricks dans votre réseau virtuel Azure (injection de réseau virtuel). Vous pouvez ensuite configurer des points de terminaison privés ou l'accès à partir de votre réseau virtuel pour autoriser les connexions de vos sous-réseaux à votre compte Azure Data Lake Storage.

Si vous utilisez des services de calcul serverless, comme les entrepôts SQL serverless, vous devez accorder l'accès depuis l'infrastructure de calcul serverless vers Azure Data Lake Storage. Consultez Mise en réseau du plan de calcul sans serveur.

Étape 2 : Activer votre identité managée pour accéder à Azure Storage

Cette étape est nécessaire uniquement si l’option « Autoriser les services Azure dans la liste des services approuvés à accéder à ce compte de stockage » est désactivée pour votre compte Azure Storage. Si cette configuration est activée :

  • Tout connecteur d’accès pour Azure Databricks dans le même locataire que le compte de stockage peut accéder au compte de stockage.
  • Tout Azure service approuvé peut accéder au compte de stockage. Consultez Accéder à des services de Azure approuvés.

Les instructions ci-dessous incluent une étape dans laquelle vous désactivez cette configuration. Vous pouvez utiliser le Azure Portal ou le Azure CLI.

Utiliser le Azure Portal

  1. Connectez-vous au Azure Portal, recherchez et sélectionnez le compte Azure Storage, puis accédez à l’onglet Networking.

  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 Resource instances, sélectionnez un type Resource de Microsoft. Databricks/accessConnectors et sélectionnez votre connecteur d’accès Azure Databricks.

  4. Sous Exceptions, décochez la case Autoriser les services Azure figurant sur la liste des services approuvés à accéder à ce compte de stockage.

Utiliser le Azure CLI

  1. Installer Azure CLI et se connecter. Pour vous connecter avec un compte d’utilisateur ou un principal de service, consultez Sign in with the 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 réseau, accédez à votre compte Azure Storage dans le Azure Portal et affichez l’identité managée dans l’onglet Networking sous l’onglet Resource instances, type de ressource Microsoft.Databricks/accessConnectors.

  4. Sous Exceptions, décochez la case Autoriser les services Azure figurant sur 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.

Entrepôts SQL sans serveur sont des ressources de calcul qui s’exécutent dans l’abonnement Azure pour Azure Databricks, et non 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 (hérité).

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 Access pour Azure Databricks et affectez-lui des autorisations au conteneur de stockage utilisé pour votre stockage racine de metastore Unity Catalog, en suivant les instructions de Configurer une identité managée pour le catalogue Unity.

    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 (hérité) .

  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 du 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> par 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>