Verwenden Sie Unity Catalog-Dienstanmeldeinformationen, um sich mit externen Cloud Services zu verbinden.

Dieser Artikel beschreibt, wie Sie eine Anmeldeinformation im Unity-Katalog nutzen, um sich mit externen Cloud Services zu verbinden. Ein Dienstanmeldeinformationsobjekt im Unity-Katalog kapselt eine langfristige Cloud-Anmeldeinformation, die den Zugriff auf einen externen Clouddienst ermöglicht, mit dem sich Benutzer von Azure Databricks verbinden müssen.

Weitere Informationen:

Anforderungen

Bevor Sie eine Anmeldeinformation verwenden können, um sich mit einem externen Clouddienst zu verbinden, müssen Sie:

  • 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-Warehouses werden nicht direkt für die Nutzung von Service-Zugangsdaten unterstützt. Siehe Verwenden einer Dienstanmeldeinformation in einer Python-UDF.

    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 Anmeldeinformation, die Zugriff auf den Clouddienst gewährt.

  • Die ACCESS-Berechtigung für die Dienstanmeldeinformation oder der Besitz der Dienstanmeldeinformation.

Verwenden Sie eine Dienst-Anmeldeinformation in Ihrem Code

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

Nur Python wird unterstützt.

Eine Dienstanmeldeinformation in einer Python-UDF verwenden

Verwenden Sie in UDFs databricks.service_credentials.getServiceCredentialsProvider(), um auf Anmeldeinformationen des Dienstes zuzugreifen. Die dbutils.credentials.getServiceCredentialsProvider() in Notebooks verwendete Funktion ist in UDF-Ausführungskontexten nicht verfügbar.

Die Anforderungen hängen vom Typ des UDF ab:

UDF-Typ Anforderungen
PySpark sitzungsbezogene skalare UDF Databricks Runtime 17.1 oder höher auf Classic Compute oder einem serverlosen Notebook oder einer Jobsitzung mit Umgebungsversion 3 oder höher.
Batch Unity Catalog Python UDF Databricks Runtime 16.3 oder höher auf klassischen Compute-Ressourcen; serverlose Compute-Ressourcen; Pro- und serverlose SQL-Warehouses. Umgebungsversion 6 ist nicht erforderlich.
Scalar Unity Catalog Python UDF Databricks Runtime 18.1 oder höher auf Classic Compute. Bei serverloser Rechenleistung sowie in Pro- und serverlosen SQL-Warehouses setzen Sie den Wert environment_version der UDF explizit auf 6 oder höher. Das Weglassen der gesamten ENVIRONMENT Klausel oder Einstellung environment_version = 'None' aktiviert diese Funktion bei diesen Berechnungstypen nicht. Classic Compute benötigt keine Umgebungsversion 6.

Um ausgehende Aufrufe von einem skalaren oder Batch Unity Catalog Python UDF auf einem serverlosen SQL-Warehouse durchzuführen, aktivieren Sie die Enable networking for isolated workloads in Serverless SQL Warehouses Public Preview auf der Vorschauseite Ihres Arbeitsbereichs. Pro-SQL-Warehouses benötigen diese Vorschau nicht.

Um eine Unity Catalog-UDF zu erstellen, die Dienstanmeldeinformationen deklariert, muss der Ersteller der Funktion über ACCESS für die Anmeldeinformationen verfügen. Bei Serverless-Compute, Pro- und Serverless-SQL-Warehouses sowie Compute im Standard-Zugriffsmodus benötigen Aufrufer die üblichen Funktionsberechtigungen, einschließlich EXECUTE, aber nicht ACCESS für die Anmeldeinformation. Bei Compute im dedizierten Zugriffsmodus müssen Aufrufer ebenfalls über ACCESS verfügen.

PySpark UDFs mit Sitzungsbereich verwenden die Berechtigungen des Aufrufers. Der Aufrufer muss für die Serviceanmeldeinformationen ACCESS haben; bei Compute im dedizierten Zugriffsmodus muss der Aufrufer MANAGE haben.

Siehe Umgebungsversionen und benutzerdefinierte Abhängigkeitsanforderungen.

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)

Angeben einer Standarddienstanmeldeinformation für eine Computeressource

Sie können optional eine Standard-Anmeldeinformation für einen universellen oder Auftrags-Computecluster angeben, indem Sie eine Umgebungsvariable festlegen. Standardmäßig verwendet das SDK diese Dienstanmeldeinformation, wenn keine Authentifizierung bereitgestellt wird. Benutzer benötigen weiterhin ACCESS auf dieser Anmeldeinformation, um sich mit dem externen Clouddienst zu verbinden. Databricks empfiehlt diesen Ansatz NICHT, da er Ihren Code weniger portabel macht, als die Anmeldeinformation des Dienstes in Ihrem Code zu benennen.

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 "Klassische Berechnung verwalten".

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

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

    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

credential = DefaultAzureCredential()
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')