Condividi tramite


Usare le credenziali del servizio Catalogo Unity per connettersi ai servizi cloud esterni

Questo articolo descrive come usare le credenziali del servizio nel catalogo unity per connettersi a servizi cloud esterni. Un oggetto credenziale del servizio in Unity Catalog incapsula una credenziale cloud a lungo termine che fornisce l'accesso a un servizio cloud esterno a cui gli utenti devono connettersi da Azure Databricks.

Vedere anche:

Operazioni preliminari

Prima di poter usare le credenziali di un servizio per connettersi a un servizio cloud esterno, è necessario disporre di:

  • Un'area di lavoro di Azure Databricks abilitata per Unity Catalog.

  • Risorsa di calcolo in Databricks Runtime 16.2 o versione successiva.

    I warehouse SQL non sono supportati.

    La versione di anteprima pubblica delle credenziali del servizio è disponibile in Databricks Runtime 15.4 LTS e versioni successive, con supporto Python ma senza supporto scala.

  • Credenziali del servizio create nel metastore del catalogo Unity che consentono l'accesso al servizio cloud.

  • Privilegio ACCESS per le credenziali del servizio o la proprietà della credenziale del servizio.

Usare le credenziali del servizio nel codice

Questa sezione fornisce esempi di uso delle credenziali del servizio in un notebook. Sostituire i valori segnaposto. Questi esempi non mostrano necessariamente l'installazione delle librerie necessarie, che dipendono dal servizio client a cui si vuole accedere.

esempio python: configurare un client Azure SDK per l'uso di credenziali del servizio specifiche

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)

Esempio Scala: configurare un client Azure SDK per utilizzare una credenziale di servizio specifica

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()

Specificare una credenziale del servizio predefinita per una risorsa di calcolo

Facoltativamente, è possibile specificare una credenziale del servizio predefinita per un cluster di calcolo di tutti gli scopi o processi impostando una variabile di ambiente. Per impostazione predefinita, l'SDK usa tale credenziale del servizio se non viene fornita alcuna autenticazione. Gli utenti richiedono ACCESS comunque che le credenziali del servizio si connettano al servizio cloud esterno. Databricks non consiglia questo approccio, perché rende il codice meno portabile rispetto alla denominazione delle credenziali del servizio nel codice.

Nota

Le risorse di calcolo serverless e SQL Warehouse non supportano le variabili di ambiente e pertanto non supportano le credenziali del servizio predefinite.

  1. Aprire la pagina di modifica per il cluster.

    Vedere Gestire le risorse di calcolo.

  2. Fare clic su Opzioni avanzate nella parte inferiore della pagina e passare alla scheda Spark .

  3. Aggiungere la voce seguente in Variabili di ambiente, sostituendo <your-service-credential>:

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

Gli esempi di codice seguenti non specificano una credenziale del servizio. Usano invece le credenziali del servizio specificate nella variabile di ambiente DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME:

Pitone

Se si usa una credenziale del servizio predefinita, non è necessario specificare le credenziali come argomento:

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

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

Confrontare questo esempio con l'esempio di Python : configurare un client Azure SDK per l'uso di una credenziale del servizio specifica, che non importa DefaultAzureCredential e aggiunge la specifica delle credenziali:

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

Scala

Per Scala sostituire il nome delle credenziali del servizio con null.

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