Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Öffnen Sie die Bearbeitungsseite für den Cluster.
Klicken Sie unten auf der Seite auf "Erweitert ", und wechseln Sie zur Registerkarte "Spark ".
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')