Dela via


Använda autentiseringsuppgifter för Unity Catalog-tjänsten för att ansluta till externa molntjänster

Den här artikeln beskriver hur du använder en tjänstautentiseringsuppgift i Unity Catalog för att ansluta till externa molntjänster. Ett tjänstautentiseringsobjekt i Unity Catalog kapslar in en långsiktig molnautentiseringsuppgift som ger åtkomst till en extern molntjänst som användarna behöver ansluta till från Azure Databricks.

Se även:

Innan du börjar

Innan du kan använda en tjänstautentiseringsuppgift för att ansluta till en extern molntjänst måste du ha:

  • En Azure Databricks-arbetsyta som är aktiverad för Unity Catalog.

  • En beräkningsresurs som finns på Databricks Runtime 16.2 eller senare.

    SQL-lager stöds inte.

    Den offentliga förhandsversionen av tjänstens autentiseringsuppgifter är tillgänglig på Databricks Runtime 15.4 LTS och senare, med Python-stöd men inget Scala-stöd.

  • En tjänstautentiseringsuppgift som skapats i ditt Unity Catalog-metaarkiv som ger åtkomst till molntjänsten.

  • Behörigheten ACCESS för tjänstens autentiseringsuppgifter eller ägarskap för tjänstens autentiseringsuppgifter.

Använda en tjänstautentiseringsuppgift i koden

Det här avsnittet innehåller exempel på hur du använder autentiseringsuppgifter för tjänsten i en notebook-fil. Ersätt platshållarvärden. De här exemplen visar inte nödvändigtvis installationen av nödvändiga bibliotek, som är beroende av vilken klienttjänst du vill komma åt.

Python-exempel: konfigurera en Azure SDK-klient för att använda en specifik tjänstautentiseringsuppgift

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)

Scala-exempel: konfigurera en Azure SDK-klient för att använda en specifik tjänstautentiseringsuppgift

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

Ange en standardtjänstautentiseringsuppgift för en beräkningsresurs

Du kan också ange en standardtjänstautentiseringsuppgift för ett beräkningskluster för alla syften eller jobb genom att ange en miljövariabel. Som standard använder SDK:n tjänstens autentiseringsuppgifter om ingen autentisering tillhandahålls. Användarna behöver ACCESS fortfarande på tjänstens autentiseringsuppgifter för att ansluta till den externa molntjänsten. Databricks rekommenderar inte den här metoden eftersom den gör koden mindre portabel än att namnge tjänstens autentiseringsuppgifter i koden.

Kommentar

Serverlösa beräknings- och SQL-lager har inte stöd för miljövariabler, och därför stöder de inte standardautentiseringsuppgifter för tjänsten.

  1. Öppna redigeringssidan för klustret.

    Se Hantera beräkning.

  2. Klicka på Avancerade alternativ längst ned på sidan och gå till fliken Spark .

  3. Lägg till följande post i Miljövariabler och ersätt <your-service-credential>:

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

Följande kodexempel anger inte någon tjänstautentiseringsuppgift. I stället använder de tjänstautentiseringsuppgifterna som anges i miljövariabeln DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME:

Python

Om du använder en standardautentiseringsuppgift för tjänsten behöver du inte ange autentiseringsuppgifter som argument:

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)

Jämför detta med exemplet i Python-exempel: konfigurera en Azure SDK-klient för att använda en specifik tjänstautentiseringsuppgift, som inte importerar DefaultAzureCredential och lägger till autentiseringsspecifikationen:

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

Scala

För Scala ersätter du tjänstens autentiseringsuppgiftsnamn med null.

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