Microsoft Entra ID-Dienstprinzipalauthentifizierung

Die Authentifizierung über MS Entra-Dienstprinzipale verwendet zur Authentifizierung die Anmeldeinformationen eines MS Entra-Dienstprinzipals. Informationen zum Erstellen und Verwalten von Dienstprinzipalen für Azure Databricks finden Sie unter:

Hinweis

Databricks empfiehlt für die meisten Szenarien, die OAuth-Computer-zu-Computer-Authentifizierung (M2M) anstelle der MS Entra-Dienstprinzipalauthentifizierung zu verwenden. Grund dafür ist, dass die OAuth M2M-Authentifizierung Azure Databricks OAuth-Zugriffstoken nutzt, die stabiler sind, wenn die Authentifizierung nur mit Azure Databricks erfolgt.

Sie sollten die MS Entra-Dienstprinzipalauthentifizierung nur in Fällen verwenden, in denen Sie sich bei Azure Databricks und anderen Azure-Ressourcen gleichzeitig authentifizieren müssen.

Wenn Sie die OAuth M2M-Authentifizierung anstelle der MS Entra-Dienstprinzipalauthentifizierung verwenden möchten, überspringen Sie diesen Artikel, und lesen Sie Authentifizierung des Zugriffs bei Azure Databricks mit einem Dienstprinzipal unter Verwendung von OAuth (OAuth M2M).

MS Entra-Dienstprinzipale unterscheiden sich von verwalteten Identitäten für Azure-Ressourcen, die Azure Databricks auch für die Authentifizierung unterstützt. Informationen zum Verwenden verwalteter Identitäten für Azure-Ressourcen anstelle von MS Entra-Dienstprinzipale für die Azure Databricks-Authentifizierung finden Sie unter Einrichten und Verwenden der Authentifizierung mit von Azure verwalteten Identitäten für die Automatisierung von Azure Databricks.

Ausführliche Informationen zur Microsoft Entra-Authentifizierung speziell für Databricks mit Azure DevOps finden Sie unter Authentifizieren mit Azure DevOps in Databricks.

Um die MS Entra-Dienstprinzipalauthentifizierung bei Azure Databricks zu konfigurieren, müssen Sie die folgenden zugeordneten Umgebungsvariablen, .databrickscfg-Felder, Terraform-Felder oder Config-Felder festlegen:

  • Der Azure Databricks-Host.

    • Geben Sie für Kontovorgänge https://accounts.azuredatabricks.net an.

    • Geben Sie für Arbeitsbereichsvorgänge die arbeitsbereichsspezifische URL an, z. B. https://adb-1234567890123456.7.azuredatabricks.net.

      Wenn der MS Entra-Dienstprinzipal dem Arbeitsbereich noch nicht hinzugefügt wurde, geben Sie stattdessen die Azure-Ressourcen-ID an. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigung Mitwirkender oder Besitzer für die Azure-Ressource verfügen.

  • Für Kontovorgänge die Azure Databricks-Konto-ID.

  • Die Azure-Ressourcen-ID.

  • Die Mandant-ID des MS Entra-Dienstprinzipal.

  • Die Client-ID des MS Entra-Dienstprinzipal.

  • Der geheime Clientschlüssel des MS Entra-Dienstprinzipal.

Um die MS Entra-Dienstprinzipalauthentifizierung bei Azure Databricks durchzuführen, integrieren Sie Folgendes in Ihren Code, basierend auf dem beteiligten Tool oder SDK:

Informationen zum Verwenden von Umgebungsvariablen für einen bestimmten Azure Databricks-Authentifizierungstyp mit einem Tool oder SDK finden Sie unter Authentifizierung des Zugriffs auf Azure Databricks-Ressourcen oder der Dokumentation der Tools bzw. von SDK. Siehe auch Umgebungsvariablen und Felder für die einheitliche Clientauthentifizierung und die Standardmethoden und einheitliche Clientauthentifizierung.

Legen Sie für Vorgänge auf Kontoebene die folgenden Umgebungsvariablen fest:

  • DATABRICKS_HOST, legen Sie diesen Parameter auf den Wert der Konsolen-URL Ihres Azure Databricks-Kontos fest, https://accounts.azuredatabricks.net.

    • DATABRICKS_ACCOUNT_ID
    • ARM_TENANT_ID
    • ARM_CLIENT_ID
    • ARM_CLIENT_SECRET

    Legen Sie für Vorgänge auf Arbeitsbereichsebene die folgenden Umgebungsvariablen fest:

    Geben Sie für Vorgänge auf der Arbeitsbereichsebene DATABRICKS_AZURE_RESOURCE_ID zusammen mit der Ressourcen-ID des Azure Databricks-Arbeitsbereichs anstelle von HOST zusammen mit der Arbeitsbereichs-URL an, falls der MS Entra ID-Dienstprinzipal noch nicht dem Arbeitsbereich hinzugefügt wurde. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigungen „Mitwirkender“ oder „Besitzer“ für die Azure-Ressource im Azure Databricks-Arbeitsbereich verfügen.

Erstellen oder identifizieren Sie ein Azure Databricks-Konfigurationsprofil mit den folgenden Feldern in Ihrer .databrickscfg-Datei. Wenn Sie das Profil erstellen, ersetzen Sie die Platzhalter durch die entsprechenden Werte. Informationen zur Verwendung des Profils mit einem Tool oder SDK finden Sie unter Authentifizierung des Zugriffs auf Azure Databricks-Ressourcen oder in der Dokumentation des jeweiligen Tools oder SDK. Siehe auch Umgebungsvariablen und Felder für die einheitliche Clientauthentifizierung und die Standardmethoden und einheitliche Clientauthentifizierung.

Legen Sie für Vorgänge auf Kontoebene die folgenden Werte in Ihrer .databrickscfg-Datei fest. In diesem Fall lautet die Konsolen-URL Ihres Azure Databricks-Kontos https://accounts.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host                = <account-console-url>
account_id          = <account-id>
azure_tenant_id     = <azure-service-principal-tenant-id>
azure_client_id     = <azure-service-principal-application-id>
azure_client_secret = <azure-service-principal-client-secret>

Legen Sie für Vorgänge auf Arbeitsbereichsebene die folgenden Werte in Ihrer .databrickscfg-Datei fest. In diesem Fall ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host                = <workspace-url>
azure_tenant_id     = <azure-service-principal-tenant-id>
azure_client_id     = <azure-service-principal-application-id>
azure_client_secret = <azure-service-principal-client-secret>

Geben Sie für Vorgänge auf der Arbeitsbereichsebene azure_workspace_resource_id zusammen mit der Ressourcen-ID des Azure Databricks-Arbeitsbereichs anstelle von host zusammen mit der Arbeitsbereichs-URL an, falls der MS Entra ID-Dienstprinzipal noch nicht dem Arbeitsbereich hinzugefügt wurde. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigungen „Mitwirkender“ oder „Besitzer“ für die Azure-Ressource im Azure Databricks-Arbeitsbereich verfügen.

Führen Sie für Databricks CLI eine der folgenden Aktionen aus:

  • Legen Sie die Umgebungsvariablen wie im Abschnitt „Umgebung“ dieses Artikels angegeben fest.
  • Legen Sie die Werte in Ihrer .databrickscfg-Datei wie im Abschnitt „Profil“ dieses Artikels angegeben fest.

Umgebungsvariablen haben immer Vorrang vor den Werten in Ihrer .databrickscfg-Datei.

Weitere Informationen finden Sie zudem unter Microsoft Entra ID-Dienstprinzipalauthentifizierung.

Hinweis

Die Authentifizierung mit MS Entra-Dienstprinzipalen wird in den folgenden Databricks Connect-Versionen unterstützt:

  • Für Python: Databricks Connect für Databricks Runtime 13.1 und höher.
  • Für Scala: Databricks Connect für Databricks Runtime 13.3 LTS und höher.

Für Databricks Connect können Sie eine der folgenden Aktionen ausführen:

  • Legen Sie die Werte in Ihrer .databrickscfg-Datei für Vorgänge auf Arbeitsbereichsebene in Azure Databricks fest, wie im Abschnitt „Profil“ dieses Artikels angegeben. Legen Sie auch die Umgebungsvariable cluster_id in Ihrem Profil auf Ihre arbeitsbereichsspezifische URL fest, z. B. https://adb-1234567890123456.7.azuredatabricks.net.
  • Legen Sie die Umgebungsvariablen für Vorgänge auf Arbeitsbereichsebene in Azure Databricks fest, wie im Abschnitt „Umgebung“ dieses Artikels angegeben. Legen Sie auch die Umgebungsvariable DATABRICKS_CLUSTER_ID auf Ihre arbeitsbereichsspezifische URL fest, z. B. https://adb-1234567890123456.7.azuredatabricks.net.

Die Werte in Ihrer .databrickscfg-Datei haben immer Vorrang vor Umgebungsvariablen.

Informationen zum Initialisieren des Databricks Connect-Clients mit diesen Umgebungsvariablen oder den Werten in Ihrer .databrickscfg-Datei finden Sie unter den folgenden Ressourcen:

Für die Databricks-Erweiterung für Visual Studio Code gehen Sie folgendermaßen vor:

  1. Legen Sie die Werte in Ihrer .databrickscfg-Datei für Vorgänge auf Arbeitsbereichsebene in Azure Databricks fest, wie im Abschnitt „Profil“ dieses Artikels angegeben.
  2. Wählen Sie in der Databricks-Erweiterung für Visual Studio Code im Bereich Konfiguration die Option Databricks konfigurieren aus.
  3. Geben Sie in der Befehlspalette als Databricks-Host Ihre arbeitsbereichsspezifische URL ein, z. B https://adb-1234567890123456.7.azuredatabricks.net, und drücken Sie dann Enter.
  4. Wählen Sie in der Befehlspalette den Namen Ihres Zielprofils in der Liste für Ihre URL aus.

Weitere Informationen finden Sie unter Einrichten der Authentifizierung für die Databricks-Erweiterung für Visual Studio Code.

Für Vorgänge auf Kontoebene, für Standardauthentifizierung:

provider "databricks" {
  alias = "accounts"
}

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. dem HashiCorp-Tresor. Weitere Informationen finden Sie unter Tresoranbieter). In diesem Fall lautet die Konsolen-URL Ihres Azure Databricks-Kontos https://accounts.azuredatabricks.net:

provider "databricks" {
  alias               = "accounts"
  host                = <retrieve-account-console-url>
  account_id          = <retrieve-account-id>
  azure_tenant_id     = <retrieve-azure-tenant-id>
  azure_client_id     = <retrieve-azure-client-id>
  azure_client_secret = <retrieve-azure-client-secret>
}

Für Vorgänge auf Arbeitsbereichsebene, für Standardauthentifizierung:

provider "databricks" {
  alias = "workspace"
}

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. dem HashiCorp-Tresor. Weitere Informationen finden Sie unter Tresoranbieter). In diesem Fall ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net:

provider "databricks" {
  alias               = "workspace"
  host                = <retrieve-workspace-url>
  azure_tenant_id     = <retrieve-azure-tenant-id>
  azure_client_id     = <retrieve-azure-client-id>
  azure_client_secret = <retrieve-azure-client-secret>
}

Geben Sie für Vorgänge auf der Arbeitsbereichsebene azure_workspace_resource_id zusammen mit der Ressourcen-ID des Azure Databricks-Arbeitsbereichs anstelle von host zusammen mit der Arbeitsbereichs-URL an, falls der MS Entra ID-Dienstprinzipal noch nicht dem Arbeitsbereich hinzugefügt wurde. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigungen „Mitwirkender“ oder „Besitzer“ für die Azure-Ressource im Azure Databricks-Arbeitsbereich verfügen.

Weitere Informationen zur Authentifizierung mit dem Databricks-Terraform-Anbieter finden Sie unter Authentifizierung.

Für Vorgänge auf Kontoebene, für Standardauthentifizierung:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. Azure-KeyVault). In diesem Fall lautet die Konsolen-URL Ihres Azure Databricks-Kontos https://accounts.azuredatabricks.net:

from databricks.sdk import AccountClient

a = AccountClient(
  host                = retrieve_account_console_url(),
  account_id          = retrieve_account_id(),
  azure_tenant_id     = retrieve_azure_tenant_id(),
  azure_client_id     = retrieve_azure_client_id(),
  azure_client_secret = retrieve_azure_client_secret()
)
# ...

Für Vorgänge auf Arbeitsbereichsebene, für Standardauthentifizierung:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. Azure-KeyVault). In diesem Fall ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(
  host                = retrieve_workspace_url(),
  azure_tenant_id     = retrieve_azure_tenant_id(),
  azure_client_id     = retrieve_azure_client_id(),
  azure_client_secret = retrieve_azure_client_secret()
)
# ...

Geben Sie für Vorgänge auf der Arbeitsbereichsebene azure_workspace_resource_id zusammen mit der Ressourcen-ID des Azure Databricks-Arbeitsbereichs anstelle von host zusammen mit der Arbeitsbereichs-URL an, falls der MS Entra ID-Dienstprinzipal noch nicht dem Arbeitsbereich hinzugefügt wurde. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigungen „Mitwirkender“ oder „Besitzer“ für die Azure-Ressource im Azure Databricks-Arbeitsbereich verfügen.

Weitere Informationen zur Authentifizierung mit Databricks-Tools und -SDKs, die Python verwenden und die einheitliche Databricks-Clientauthentifizierung implementieren, finden Sie hier:

Für Vorgänge auf Kontoebene, für Standardauthentifizierung:

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. Azure-KeyVault). In diesem Fall lautet die Konsolen-URL Ihres Azure Databricks-Kontos https://accounts.azuredatabricks.net:

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId())
  .setAzureTenantId(retrieveAzureTenantId())
  .setAzureClientId(retrieveAzureClientId())
  .setAzureClientSecret(retrieveAzureClientSecret())
AccountClient a = new AccountClient(cfg);
// ...

Für Vorgänge auf Arbeitsbereichsebene, für Standardauthentifizierung:

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. Azure-KeyVault). In diesem Fall ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
  .setAzureTenantId(retrieveAzureTenantId())
  .setAzureClientId(retrieveAzureClientId())
  .setAzureClientSecret(retrieveAzureClientSecret())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Geben Sie für Vorgänge auf der Arbeitsbereichsebene setAzureWorkspaceResourceId zusammen mit der Ressourcen-ID des Azure Databricks-Arbeitsbereichs anstelle von setHost zusammen mit der Arbeitsbereichs-URL an, falls der MS Entra ID-Dienstprinzipal noch nicht dem Arbeitsbereich hinzugefügt wurde. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigungen „Mitwirkender“ oder „Besitzer“ für die Azure-Ressource im Azure Databricks-Arbeitsbereich verfügen.

Weitere Informationen zur Authentifizierung mit Databricks-Tools und -SDKs, die Java verwenden und die einheitliche Databricks-Clientauthentifizierung implementieren, finden Sie hier:

Für Vorgänge auf Kontoebene, für Standardauthentifizierung:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. Azure-KeyVault). In diesem Fall lautet die Konsolen-URL Ihres Azure Databricks-Kontos https://accounts.azuredatabricks.net:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:              retrieveAccountConsoleUrl(),
  AccountId:         retrieveAccountId(),
  AzureTenantId:     retrieveAzureTenantId(),
  AzureClientId:     retrieveAzureClientId(),
  AzureClientSecret: retrieveAzureClientSecret(),
}))
// ...

Für Vorgänge auf Arbeitsbereichsebene, für Standardauthentifizierung:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

Für die direkte Konfiguration (ersetzen Sie die retrieve-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. Azure-KeyVault). In diesem Fall ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host:              retrieveWorkspaceUrl(),
  AzureTenantId:     retrieveAzureTenantId(),
  AzureClientId:     retrieveAzureClientId(),
  AzureClientSecret: retrieveAzureClientSecret(),
}))
// ...

Geben Sie für Vorgänge auf der Arbeitsbereichsebene AzureWorkspaceResourceId zusammen mit der Ressourcen-ID des Azure Databricks-Arbeitsbereichs anstelle von Host zusammen mit der Arbeitsbereichs-URL an, falls der MS Entra ID-Dienstprinzipal noch nicht dem Arbeitsbereich hinzugefügt wurde. In diesem Fall muss der MS Entra-Dienstprinzipal mindestens über die Berechtigungen „Mitwirkender“ oder „Besitzer“ für die Azure-Ressource im Azure Databricks-Arbeitsbereich verfügen.

Weitere Informationen zur Authentifizierung mit Databricks-Tools und -SDKs, die Go verwenden und die einheitliche Databricks-Clientauthentifizierung implementieren, finden Sie unter Authentifizieren des Databricks SDK für Go bei Ihrem Azure Databricks-Konto oder -Arbeitsbereich.