Partager via


Bibliothèques de liste d’autorisation et scripts d’initialisation sur le calcul partagé

Dans Databricks Runtime 13.3 LTS et les versions ultérieures, vous pouvez ajouter des bibliothèques et des scripts d’initialisation au allowlist dans Unity Catalog. Cela permet aux utilisateurs de tirer parti de ces artefacts sur le calcul configuré avec le mode d’accès partagé.

Vous pouvez autoriser un répertoire ou un chemin de fichier avant l’existence de ce répertoire ou fichier. Consultez Charger des fichiers dans un volume Unity Catalog.

Remarque

Vous devez être un administrateur de metastore ou disposer du privilège MANAGE ALLOWLIST pour modifier la liste d'autorisation. Consultez GÉRER LA LISTE D’AUTORISATION.

Important

Les bibliothèques utilisées en tant que pilotes JDBC ou sources de données Spark personnalisées sur le calcul partagé avec Unity Catalog nécessitent des autorisations ANY FILE.

Certaines bibliothèques installées stockent les données de tous les utilisateurs dans un répertoire temporaire commun. Ces bibliothèques peuvent compromettre l’isolation d’utilisateur.

Comment ajouter des éléments à la liste d’autorisation

Vous pouvez ajouter des éléments au allowlist avec Catalog Explorer ou l'API REST.

Pour ouvrir la boîte de dialogue permettant d'ajouter des éléments à la liste autorisée dans l'Explorateur de catalogue, procédez comme suit :

  1. Dans votre espace de travail Azure Databricks, cliquez sur icône Catalogue Catalogue.
  2. Cliquez sur l’icône Engrenage pour ouvrir les détails du metastore et l’interface utilisateur des autorisations.
  3. Sélectionnez Scripts JAR/d’initialisation autorisés.
  4. Cliquez sur Ajouter.

Important

Cette option s’affiche uniquement pour les utilisateurs disposant de suffisamment de privilèges. Si vous ne pouvez pas accéder à l’interface utilisateur de la liste d’autorisation, contactez votre administrateur de metastore pour obtenir de l’aide sur les bibliothèques de listes d’autorisation et les scripts d’initialisation.

Ajouter un script d’initialisation à la liste d’autorisation

Procédez comme suit dans la boîte de dialogue de la liste d’autorisation pour ajouter un script d’initialisation à la liste d’autorisation :

  1. Pour Type, sélectionnez Script d’initialisation.
  2. Pour Type de source, sélectionnez Volume ou protocole de stockage d’objets.
  3. Spécifiez le chemin source à ajouter à la liste d’autorisation. Consultez Comment les autorisations sur les chemins d’accès sont-elles appliquées dans la liste d’autorisation ?.

Ajouter un fichier JAR à la liste d’autorisation

Procédez comme suit dans la boîte de dialogue de la liste d’autorisation pour ajouter un fichier JAR à la liste d’autorisation :

  1. Pour Type, sélectionnez JAR.
  2. Pour Type de source, sélectionnez Volume ou protocole de stockage d’objets.
  3. Spécifiez le chemin source à ajouter à la liste d’autorisation. Consultez Comment les autorisations sur les chemins d’accès sont-elles appliquées dans la liste d’autorisation ?.

Ajouter des coordonnées Maven à la liste d’autorisation

Procédez comme suit dans la boîte de dialogue de la liste d’autorisation pour ajouter des coordonnées Maven à la liste d’autorisation :

  1. Pour Type, sélectionnez Maven.
  2. Pour Type de source, sélectionnez Coordonnées.
  3. Entrez les coordonnées au format suivant : groudId:artifactId:version.
    • Vous pouvez inclure toutes les versions d’une bibliothèque en mettant sur liste d’autorisation le format suivant : groudId:artifactId.
    • Vous pouvez inclure tous les artefacts dans un groupe en mettant sur liste d’autorisation le format suivant : groupId.

Comment les autorisations sur les chemins d’accès sont-elles appliquées dans la liste d’autorisation ?

Vous pouvez utiliser la liste d’autorisation pour accorder l’accès aux fichiers JAR ou aux scripts d’initialisation stockés dans les volumes Unity Catalog et le stockage d’objets. Si vous ajoutez un chemin d’accès pour un répertoire plutôt qu’un fichier, les autorisations de liste d’autorisation se propagent aux fichiers et répertoires contenus.

La correspondance de préfixe est utilisée pour tous les artefacts stockés dans les volumes Unity Catalog ou le stockage d’objets. Pour empêcher la correspondance de préfixes à un niveau de répertoire donné, ajoutez une barre oblique de fin (/). Par exemple, /Volumes/prod-libraries/ n’effectue aucune correspondance de préfixe pour les fichiers préfixés par prod-libraries. Au lieu de cela, tous les fichiers et répertoires dans /Volumes/prod-libraries/ sont ajoutés à la liste d’autorisations.

Vous pouvez définir des autorisations aux niveaux suivants :

  1. Le chemin d’accès de base pour le volume ou le conteneur de stockage.
  2. Répertoire imbriqué à n’importe quelle profondeur du chemin d’accès de base.
  3. Un fichier unique.

L’ajout d’un chemin d’accès à la liste d’autorisation signifie uniquement que le chemin peut être utilisé pour les scripts d’initialisation ou l’installation de fichiers JAR. Azure Databricks vérifie toujours les autorisations d’accès aux données à l’emplacement spécifié.

Le principal utilisé doit disposer d’autorisations READ VOLUME sur le volume spécifié. Consultez SELECT.

En mode d’accès utilisateur unique, l’identité du principal attribué (un utilisateur ou un principal de service) est utilisée.

En mode d’accès partagé :

  • Les bibliothèques utilisent l’identité du programme d’installation de bibliothèque.
  • Les scripts d’initialisation utilisent l’identité du propriétaire du cluster.

Remarque

Le mode d’accès partagé sans isolation ne prend pas en charge les volumes, mais utilise la même attribution d’identité que le mode d’accès partagé.

Databricks recommande de configurer tous les privilèges de stockage d’objets liés aux scripts et bibliothèques d’initialisation avec des autorisations en lecture seule. Les utilisateurs disposant d’autorisations d’écriture sur ces emplacements peuvent potentiellement modifier le code dans les fichiers bibliothèque ou les scripts d’initialisation.

Databricks recommande d’utiliser les principaux de service Microsoft Entra ID pour gérer l’accès aux JARs ou aux scripts d’initialisation stockés dans Azure Data Lake Storage Gen2. Utilisez la documentation liée suivante pour effectuer cette configuration :

  1. Créez un principal de service avec des autorisations de lecture et de liste sur les objets blob souhaités. Consultez Accéder au stockage en utilisant un principal de service et Microsoft Entra ID (Azure Active Directory).

  2. Enregistrez vos informations d’identification à l’aide de secrets. Consultez Secrets.

  3. Définissez les propriétés dans la configuration Spark et les variables d’environnement lors de la création d’un cluster, comme dans l’exemple suivant :

    Configuration Spark :

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    Variables d’environnement :

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (Facultatif) Refactoriser des scripts init en utilisant azcopy ou l’interface Azure CLI.

    Vous pouvez référencer des variables d’environnement définies pendant la configuration du cluster au sein de vos scripts init pour transmettre les informations d’identification stockées en tant que secrets pour la validation.

Remarque

Les autorisations de liste d’autorisation pour les fichiers JAR et les scripts d’initialisation sont gérées séparément. Si vous utilisez le même emplacement pour stocker les deux types d’objets, vous devez ajouter l’emplacement à la liste d’autorisation pour chacun d’eux.