Partager via


Utiliser les informations d’identification du service catalogue Unity pour se connecter aux services cloud externes

Cet article explique comment utiliser des informations d’identification de service dans le catalogue Unity pour se connecter aux services cloud externes. Un objet d’informations d’identification de service dans Le catalogue Unity encapsule des informations d’identification cloud à long terme qui fournit l’accès à un service cloud externe auquel les utilisateurs doivent se connecter à partir d’Azure Databricks.

Voir aussi :

Avant de commencer

Avant de pouvoir utiliser des informations d’identification de service pour vous connecter à un service cloud externe, vous devez disposer des conditions suivantes :

  • Un espace de travail Azure Databricks activé pour Unity Catalog.

  • Ressource de calcul qui se trouve sur Databricks Runtime 16.2 ou version ultérieure.

    Les entrepôts SQL ne sont pas pris en charge.

    La version préliminaire publique des informations d’identification du service est disponible sur Databricks Runtime 15.4 LTS et versions ultérieures, avec prise en charge de Python, mais aucune prise en charge Scala.

  • Informations d’identification de service créées dans votre metastore Unity Catalog qui donne accès au service cloud.

  • Privilège ACCESS sur les informations d’identification du service ou la propriété des informations d’identification du service.

Utiliser des informations d’identification de service dans votre code

Cette section fournit des exemples d’utilisation des identifiants de service dans un notebook. Remplacez les valeurs d’espace réservé. Ces exemples ne montrent pas nécessairement l’installation des bibliothèques requises, qui dépendent du service client auquel vous souhaitez accéder. Seuls Python et Scala sont pris en charge.

Remarque

API spécifique à la fonction UDF pour les informations d’identification du service :
Dans les FDUs, utilisez databricks.service_credentials.getServiceCredentialsProvider() pour accéder aux identifiants de service.

Cela diffère de la dbutils.credentials.getServiceCredentialsProvider() fonction utilisée dans les notebooks, qui n’est pas disponible dans les contextes d’exécution UDF.

Exemple Python : configurer un client du Kit de développement logiciel (SDK) Azure pour utiliser des informations d’identification de service spécifiques

from azure.keyvault.secrets import SecretClient # example Azure SDK client

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

Exemple Scala : configurer un client du Kit de développement logiciel (SDK) Azure pour utiliser des informations d’identification de service spécifiques

import com.azure.security.keyvault.secrets.{SecretClient, SecretClientBuilder}

// Get credentials from dbutils
val credential = dbutils.credentials.getServiceCredentialsProvider("your-service-credential")

// URL of the Key Vault
val vaultUrl = "https://your-keyvault-name.vault.azure.net/"

// Create the SecretClient
val client: SecretClient = new SecretClientBuilder()
  .vaultUrl(vaultUrl)
  .credential(credential)
  .buildClient()

Spécifier des informations d’identification de service par défaut pour une ressource de calcul

Vous pouvez éventuellement spécifier des informations d’identification de service par défaut pour un cluster de calcul à usage unique ou en définissant une variable d’environnement. Par défaut, le Kit de développement logiciel (SDK) utilise ces informations d’identification de service si aucune authentification n’est fournie. Les utilisateurs ont toujours besoin ACCESS des informations d’identification de ce service pour se connecter au service cloud externe. Databricks ne recommande pas cette approche, car elle rend votre code moins portable que le nom des informations d’identification du service dans votre code.

Remarque

Les entrepôts de calcul serverless et SQL ne prennent pas en charge les variables d’environnement. Par conséquent, ils ne prennent pas en charge les informations d’identification de service par défaut.

  1. Ouvrez la page de modification du cluster.

    Consultez Gérer le calcul classique.

  2. Cliquez sur Avancé en bas de la page et accédez à l’onglet Spark .

  3. Ajoutez l’entrée suivante dans les variables d’environnement, en <your-service-credential>remplaçant :

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

Les exemples de code suivants ne spécifient pas d’informations d’identification de service. Au lieu de cela, ils utilisent les informations d’identification du service spécifiées dans la variable d’environnement DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME :

Python

Si vous utilisez des informations d’identification de service par défaut, vous n’avez pas besoin de spécifier les informations d’identification en tant qu’argument :

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

credential = DefaultAzureCredential()
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

Comparez cela à l’exemple dans Python : configurez un client Azure SDK pour utiliser une information d’identification de service spécifique, qui ne nécessite pas d’importation DefaultAzureCredential et ajoute la spécification de l’information d’identification :

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')

Langage de programmation Scala

Pour Scala, vous remplacez le nom des informations d’identification du service par null.

val azureCredentials = dbutils.credentials.getServiceCredentialsProvider(null).asInstanceOf[TokenCredential]