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:
- Verwalten sie den Zugriff auf externe Clouddienste mithilfe von Dienstanmeldeinformationen.
- Verwalten von Dienstanmeldeinformationen
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.
Öffnen Sie die Bearbeitungsseite für den Cluster.
Siehe "Compute verwalten".
Klicken Sie unten auf der Seite auf "Erweiterte Optionen", und wechseln Sie zur Registerkarte "Spark".
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]