Freigeben über


Verwenden von Unity Catalog-Dienstanmeldeinformationen zum Herstellen einer Verbindung mit externen Clouddiensten

In diesem Artikel wird beschrieben, wie Sie eine Dienstanmeldeinformationen im Unity-Katalog verwenden, um eine Verbindung mit externen Clouddiensten herzustellen. Ein Dienstanmeldeinformationsobjekt im Unity-Katalog kapselt eine langfristige Cloudanmeldeinformationen, die Zugriff auf einen externen Clouddienst bietet, mit dem Benutzer eine Verbindung mit Azure Databricks herstellen müssen.

Weitere Informationen:

Voraussetzungen

Bevor Sie eine Dienstanmeldeinformation verwenden können, um eine Verbindung mit einem externen Clouddienst herzustellen, müssen Sie folgendes haben:

  • Ein Azure Databricks-Arbeitsbereich, der für Unity Catalog aktiviert ist.

  • Eine Computeressource, die sich auf Databricks Runtime 16.2 oder höher befindet.

    SQL-Lagerhäuser werden nicht unterstützt.

    Die Public Preview-Version der Dienstanmeldeinformationen ist unter Databricks Runtime 15.4 LTS und höher verfügbar, mit Python-Unterstützung, aber keine Scala-Unterstützung.

  • Eine in Ihrem Unity-Katalog-Metastore erstellte Dienstanmeldeinformationen, die Zugriff auf den Clouddienst gewähren.

  • Die ACCESS Berechtigung für die Dienstanmeldeinformationen oder den Besitz der Dienstanmeldeinformationen.

Verwenden von Dienstanmeldeinformationen in Ihrem Code

Dieser Abschnitt enthält Beispiele für die Verwendung von Dienstanmeldeinformationen in einem Notizbuch. Ersetzen Sie Platzhalterwerte. In diesen Beispielen wird nicht unbedingt die Installation erforderlicher Bibliotheken gezeigt, die vom Clientdienst abhängen, auf den Sie zugreifen möchten.

Python-Beispiel: Konfigurieren eines Azure SDK-Clients für die Verwendung bestimmter Dienstanmeldeinformationen

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-Beispiel: Konfigurieren eines Azure SDK-Clients für die Verwendung bestimmter Dienstanmeldeinformationen

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

Angeben einer Standarddienstanmeldeinformation für eine Computeressource

Sie können optional eine Standarddienstanmeldeinformation für einen Allzweck- oder Auftrags-Computecluster angeben, indem Sie eine Umgebungsvariable festlegen. Standardmäßig verwendet das SDK diese Dienstanmeldeinformationen, wenn keine Authentifizierung bereitgestellt wird. Benutzer benötigen ACCESS diese Dienstanmeldeinformationen weiterhin, um eine Verbindung mit dem externen Clouddienst herzustellen. Databricks empfiehlt diesen Ansatz nicht, da ihr Code weniger portabel ist als das Benennen der Dienstanmeldeinformationen in Ihrem Code.

Hinweis

Serverlose Compute- und SQL-Lagerhäuser unterstützen keine Umgebungsvariablen und unterstützen daher keine Standarddienstanmeldeinformationen.

  1. Öffnen Sie die Bearbeitungsseite für den Cluster.

    Siehe "Compute verwalten".

  2. Klicken Sie unten auf der Seite auf "Erweiterte Optionen", und wechseln Sie zur Registerkarte "Spark".

  3. Fügen Sie den folgenden Eintrag in Umgebungsvariablen hinzu, indem Sie Folgendes ersetzen <your-service-credential>:

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

Die folgenden Codebeispiele geben keine Dienstanmeldeinformationen an. Stattdessen verwenden sie die in der umgebungsvariablen DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME angegebenen Dienstanmeldeinformationen:

Python

Wenn Sie eine Standarddienstanmeldeinformation verwenden, müssen Sie keine Anmeldeinformationen als Argument angeben:

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)

Vergleichen Sie dies mit dem Beispiel in Python-Beispiel: Konfigurieren Sie einen Azure SDK-Client dazu, eine bestimmte Dienstanmeldeinformationzu verwenden, die DefaultAzureCredential nicht importiert und die Anmeldeinformationsspezifikation ergänzt.

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

Scala

Bei Scala ersetzen Sie die Dienstzugangsdaten durch null.

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