Teilen über


Autorisieren des Dienstprinzipalzugriffs auf Azure Databricks mit OAuth

Auf dieser Seite wird erläutert, wie Sie den Zugriff auf Azure Databricks-Ressourcen von unbeaufsichtigten Prozessen autorisieren, z. B. automatisierte CLI-Befehle oder REST-API-Aufrufe von Skripts oder Anwendungen.

Azure Databricks verwendet OAuth 2.0 als bevorzugtes Protokoll für die Dienstprinzipalautorisierung und Authentifizierung außerhalb der Benutzeroberfläche. Die einheitliche Clientauthentifizierung automatisiert die Tokengenerierung und -aktualisierung. Wenn sich ein Dienstprinzipal anmeldet und seine Zustimmung erteilt wird, gibt OAuth ein Zugriffstoken für die CLI, das SDK oder ein anderes Tool aus, das in seinem Auftrag verwendet werden soll. Jedes Zugriffstoken ist für eine Stunde gültig, danach wird automatisch ein neues Token angefordert.

Auf dieser Seite bezieht sich die Autorisierung auf die Verwendung von OAuth, um einem Dienstprinzipalzugriff auf Azure Databricks-Ressourcen zu gewähren, während die Authentifizierung auf die Überprüfung von Anmeldeinformationen über Zugriffstoken verweist.

Weitere allgemeine Details finden Sie unter Autorisieren des Zugriffs auf Azure Databricks-Ressourcen.

Methoden zum Autorisieren eines Dienstprinzipals

Azure Databricks unterstützt zwei Möglichkeiten zum Autorisieren eines Dienstprinzipals:

  • Automatisch (empfohlen): Verwenden Sie einheitliche Authentifizierung mit unterstützten Tools und SDKs, z. B. dem Azure Databricks Terraform SDK. Dieser Ansatz behandelt die Tokengenerierung und -aktualisierung automatisch und eignet sich ideal für automatisierungs- oder andere unbeaufsichtigte Workloads.

  • Manuell: Generieren Sie eine Codeüberprüfung und Abfrage, und tauschen Sie sie dann für ein OAuth-Token aus. Verwenden Sie diese Methode, wenn Ihr Tool oder Ihre API keine einheitliche Authentifizierung unterstützt. Möglicherweise müssen Sie ihren eigenen Tokenaktualisierungsmechanismus für Ihre Anwendung erstellen. Ausführliche Informationen finden Sie unter Manuelles Generieren von OAuth M2M-Zugriffstoken.

Voraussetzungen

Führen Sie vor der Konfiguration von OAuth die folgenden Schritte aus:

  1. Erstellen Sie einen Azure Databricks-Dienstprinzipal. Siehe "Dienstprinzipale hinzufügen" zu Ihrem Konto.
  2. Wechseln Sie zur Registerkarte "Konfiguration " für den Dienstprinzipal, und wählen Sie die Berechtigungen aus, die für diesen Arbeitsbereich vorhanden sein sollen.
  3. Wechseln Sie zur Registerkarte "Berechtigungen ", und gewähren Sie Zugriff auf alle Azure Databricks-Benutzer, Dienstprinzipale und Gruppen, die Sie verwalten und verwenden möchten. Siehe Wer kann Dienstprinzipale verwalten und verwenden?.

Schritt 1: Erstellen eines geheimen OAuth-Schlüssels

Um den Zugriff auf Ihre Azure Databricks-Ressourcen mit OAuth zu autorisieren, müssen Sie einen OAuth-Geheimschlüssel erstellen. Der geheime Schlüssel wird verwendet, um OAuth-Zugriffstoken für die Authentifizierung zu generieren. Ein Dienstprinzipal kann bis zu fünf OAuth-Schlüssel aufweisen, und jeder geheime Schlüssel kann bis zu zwei Jahre gültig sein.

Kontoadministratoren und Arbeitsbereichsadministratoren können einen OAuth-Geheimschlüssel für einen Dienstprinzipal erstellen.

  1. Öffnen Sie auf der Detailseite des Dienstprinzipals die Registerkarte "Geheime Schlüssel ".
  2. Klicken Sie unter OAuth-Geheimnisse auf Geheimnis generieren.
  3. Legen Sie die Lebensdauer des geheimen Schlüssels in Tagen fest (maximal 730 Tage).
  4. Kopieren Sie den angezeigten geheimen Schlüssel und die Client-ID, und klicken Sie dann auf "Fertig". Das Geheimnis wird nur einmal angezeigt. Die Client-ID ist identisch mit der Anwendungs-ID des Dienstprinzipals.

Kontoadministratoren können auch einen OAuth-Geheimschlüssel über die Kontokonsole erstellen. Wählen Sie auf der Registerkarte " Benutzerverwaltung " den Dienstprinzipal aus, und wechseln Sie dann zur Registerkarte " Anmeldeinformationen" und "Geheime Schlüssel ".

Hinweis

Damit der Dienstprinzipal Cluster oder SQL-Warehouses verwenden kann, müssen Sie ihm Zugriff darauf gewähren. Weitere Informationen finden Sie unter Compute-Berechtigungen und Verwaltung eines SQL-Warehouse.

Schritt 2: Verwenden der OAuth-Autorisierung

Um die OAuth-Autorisierung mit dem einheitlichen Authentifizierungstool zu verwenden, müssen Sie die folgenden zugeordneten Umgebungsvariablen, .databrickscfg Felder, Terraformfelder oder Config Felder festlegen:

  • Der Azure Databricks-Host, der für Kontovorgänge als https://accounts.azuredatabricks.net oder für Arbeitsbereichsvorgänge als zielarbeitsbereichsspezifische URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net, angegeben wird.
  • Die Azure Databricks-Konto-ID für Azure Databricks-Kontovorgänge.
  • Die Client-ID des Dienstprinzipals.
  • Das Geheimnis des Dienstprinzipals.

Um die OAuth-Dienstprinzipalauthentifizierung durchzuführen, integrieren Sie Folgendes in Ihren Code, basierend auf dem teilnehmenden Tool oder SDK:

Umwelt

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

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

  • DATABRICKS_HOST, auf den Wert Ihrer Azure Databricks-Kontokonsolen-URL festgelegt, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

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

  • DATABRICKS_HOST, legen Sie den Wert Ihrer Azure Databricks-URL pro Arbeitsbereich fest, z https://adb-1234567890123456.7.azuredatabricks.net. B. .
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

Profil

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 zum Verwenden des Profils mit einem Tool oder SDK finden Sie unter Autorisieren des Zugriffs auf Azure Databricks-Ressourcen oder die Dokumentation des Tools oder SDKs. Siehe auch Umgebungsvariablen und Felder für die einheitliche Authentifizierung und die Priorität der Authentifizierungsmethode.

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>
client_id     = <service-principal-client-id>
client_secret = <service-principal-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>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

Bei der Autorisierung mit Azure AD-Dienstprinzipalen unterscheiden sich die Konfigurationsschlüssel von Azure Databricks-verwalteten Dienstprinzipalen:

host = https://<workspace-url>
azure_client_id = <azure-service-principal-client-id>
azure_client_secret = <azure-service-principal-secret>
azure_tenant_id = <azure-tenant-id>

Befehlszeilenschnittstelle (CLI)

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

  • Legen Sie die Umgebungsvariablen auf der Registerkarte " Umgebung " wie angegeben fest.
  • Legen Sie die Werte in Ihrer .databrickscfg Datei wie auf der Registerkarte "Profil" angegeben fest.

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

Weitere Informationen finden Sie unter OAuth Machine-to-Machine (M2M)-Authentifizierung.

Verbinden

Hinweis

Die OAuth-Dienstprinzipalauthentifizierung wird in den folgenden Databricks Connect-Versionen unterstützt:

  • Für Python: Databricks Connect für Databricks Runtime 14.0 und höher
  • Für Scala: Databricks Connect für Databricks Runtime 13.3 LTS und höher. Für das Databricks-SDK für Java, das in Databricks Connect für Databricks Runtime 13.3 LTS und höher enthalten ist, muss ein Upgrade auf das Databricks-SDK für Java 0.17.0 oder höher durchgeführt werden.

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

  • Verwenden eines Konfigurationsprofils: Legen Sie Arbeitsbereichswerte in Ihrer .databrickscfg Datei fest, wie auf der Registerkarte „Profil“ beschrieben. Setzen Sie außerdem die cluster_id URL auf die Arbeitsbereichsinstanz.
  • Verwenden sie Umgebungsvariablen: Legen Sie die gleichen Werte wie auf der Registerkarte " Umgebung " fest. Legen Sie außerdem die DATABRICKS_CLUSTER_ID URL der Arbeitsbereichsinstanz fest.

Werte in .databrickscfg haben Vorrang vor Umgebungsvariablen.

Informationen zum Initialisieren von Databricks Connect mit diesen Einstellungen finden Sie unter Computekonfiguration für Databricks Connect.

VS-Code

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 auf Azure Databricks-Arbeitsbereichsebene fest, wie auf der Registerkarte "Profil " 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 Autorisierung für die Databricks-Erweiterung für Visual Studio Code.

Terraformierung

Vorgänge auf Kontoebene

Für die Standardauthentifizierung:

provider "databricks" {
  alias = "accounts"
}

Für die direkte Konfiguration:

provider "databricks" {
  alias         = "accounts"
  host          = <retrieve-account-console-url>
  account_id    = <retrieve-account-id>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher wie HashiCorp Vault abzurufen. Siehe auch Tresoranbieter. In diesem Fall ist https://accounts.azuredatabricks.netdie Azure Databricks-Kontokonsolen-URL .

Vorgänge auf Arbeitsbereichsebene

Für die Standardkonfiguration:

provider "databricks" {
  alias = "workspace"
}

Für die direkte Konfiguration:

provider "databricks" {
  alias         = "workspace"
  host          = <retrieve-workspace-url>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher wie HashiCorp Vault abzurufen. Siehe auch Tresoranbieter. In diesem Fall ist der Host beispielsweise die Azure Databricks-URL pro Arbeitsbereich.https://adb-1234567890123456.7.azuredatabricks.net

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

Python

Vorgänge auf Kontoebene

Für die Standardkonfiguration:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Für die direkte Konfiguration:

from databricks.sdk import AccountClient

a = AccountClient(
  host          = retrieve_account_console_url(),
  account_id    = retrieve_account_id(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher wie Azure KeyVault abzurufen. In diesem Fall ist https://accounts.azuredatabricks.netdie Azure Databricks-Kontokonsolen-URL .

Vorgänge auf Arbeitsbereichsebene

Für die Standardkonfiguration:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Für die direkte Konfiguration:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(
  host          = retrieve_workspace_url(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einen anderen Konfigurationsspeicher wie Azure KeyVault abzurufen. In diesem Fall ist der Host beispielsweise die Azure Databricks-URL pro Arbeitsbereich.https://adb-1234567890123456.7.azuredatabricks.net

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

Hinweis

Die Databricks-Erweiterung für Visual Studio Code verwendet Python, hat aber noch keine OAuth-Dienstprinzipalauthentifizierung implementiert.

Java

Vorgänge auf Arbeitsbereichsebene

Für die Standardkonfiguration:

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

Für die direkte Konfiguration:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
  .setClientId(retrieveClientId())
  .setClientSecret(retrieveClientSecret());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einen anderen Konfigurationsspeicher wie Azure KeyVault abzurufen. In diesem Fall ist der Host beispielsweise die Azure Databricks-URL pro Arbeitsbereich.https://adb-1234567890123456.7.azuredatabricks.net

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

Go

Vorgänge auf Kontoebene

Standardkonfiguration:

import "github.com/databricks/databricks-sdk-go"

// Uses environment configuration automatically
a := databricks.Must(databricks.NewAccountClient())

Für die direkte Konfiguration:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:         retrieveWorkspaceUrl(),
  ClientId:     retrieveClientId(),
  ClientSecret: retrieveClientSecret(),
}))
// ...

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einen anderen Konfigurationsspeicher wie Azure KeyVault abzurufen. In diesem Fall ist https://accounts.azuredatabricks.netdie Azure Databricks-Kontokonsolen-URL .

Vorgänge auf Arbeitsbereichsebene

Für die Standardkonfiguration:

import "github.com/databricks/databricks-sdk-go"

// Uses environment configuration automatically
w := databricks.Must(databricks.NewWorkspaceClient())

Für die direkte Konfiguration:

import "github.com/databricks/databricks-sdk-go"
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
    Host:         retrieveAccountConsoleUrl(),
    ClientId:     retrieveClientId(),
    ClientSecret: retrieveClientSecret(),
}))
// ...

Ersetzen Sie die retrieve Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einen anderen Konfigurationsspeicher wie Azure KeyVault abzurufen. In diesem Fall ist der Host beispielsweise die Azure Databricks-URL pro Arbeitsbereich.https://adb-1234567890123456.7.azuredatabricks.net

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.

Manuelles Generieren von OAuth M2M-Zugriffstoken

Dieser Abschnitt richtet sich an Tools oder Dienste, die die einheitliche Authentifizierung von Databricks nicht unterstützen. Wenn Sie Azure Databricks OAuth-Token für die M2M-Authentifizierung manuell generieren, aktualisieren oder verwenden müssen, führen Sie die folgenden Schritte aus.

Um ein OAuth M2M-Zugriffstoken zu generieren, verwenden Sie die Client-ID des Dienstprinzipals und den geheimen OAuth-Schlüssel. Jedes Zugriffstoken ist für eine Stunde gültig. Fordern Sie nach Ablauf ein neues Token an. Sie können Token entweder auf Konto- oder Arbeitsbereichsebene generieren:

Generieren eines Zugriffstokens auf Kontoebene

Verwenden Sie ein Token auf Kontoebene, um REST-APIs für das Konto aufzurufen, und alle Arbeitsbereiche, auf die der Dienstprinzipal zugreifen kann.

  1. Suchen Sie Ihre Konto-ID.

  2. Erstellen Sie die Tokenendpunkt-URL, indem Sie die folgende URL durch Ihre Konto-ID ersetzen <account-id> .

    https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
    
  3. Dient curl zum Anfordern eines OAuth-Zugriffstokens. Replace:

    • <token-endpoint-URL> mit der obigen URL.
    • <client-id> mit der Client-ID des Dienstprinzipals (Anwendungs-ID).
    • <client-secret> mit dem OAuth-Schlüssel des Dienstprinzipals.
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
      curl --request POST \
      --url <token-endpoint-URL> \
      --user "$CLIENT_ID:$CLIENT_SECRET" \
      --data 'grant_type=client_credentials&scope=all-apis'
    

    Dies generiert eine Antwort, die in etwa wie folgt aussieht:

    {
      "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Der all-apis Bereich fordert ein OAuth-Zugriffstoken an, mit dem der Dienstprinzipal alle Databricks-REST-API aufrufen kann, auf die er über die Berechtigung zum Zugriff verfügt.

  4. Kopieren Sie den access_token Wert aus der Antwort.

Generieren eines Zugriffstokens auf Arbeitsbereichsebene

Verwenden Sie ein Token auf Arbeitsbereichsebene nur mit REST-APIs in diesem Arbeitsbereich.

  1. Erstellen Sie die Tokenendpunkt-URL, indem Sie <databricks-instance> sie durch den Namen der Azure <databricks-instance> ersetzen, zadb-1234567890123456.7.azuredatabricks.net. B. :

    https://<databricks-instance>/oidc/v1/token
    
  2. Dient curl zum Anfordern eines OAuth-Zugriffstokens. Replace:

    • <token-endpoint-URL> mit der obigen URL.
    • <client-id> mit der Client-ID des Dienstprinzipals (Anwendungs-ID).
    • <client-secret> mit dem OAuth-Schlüssel des Dienstprinzipals.
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'
    

    Dies generiert eine Antwort, die in etwa wie folgt aussieht:

    {
      "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    
  3. Kopieren Sie den access_token Wert aus der Antwort.

Hinweis

Um ein Token für einen Dienstendpunkt zu generieren, schließen Sie die Endpunkt-ID und die Aktion in Ihre Anforderung ein. Siehe OAuth-Token manuell abrufen.

Aufrufen einer Azure Databricks-REST-API

Verwenden Sie das OAuth-Zugriffstoken, um REST-APIs auf Kontoebene oder Arbeitsbereichsebene aufzurufen. Um APIs auf Kontoebene aufzurufen, muss der Dienstprinzipal ein Kontoadministrator sein.

Schließen Sie das Token in den Autorisierungsheader mit Bearer Authentifizierung ein.

Beispiel einer REST API-Anforderung auf Kontoebene

In diesem Beispiel werden alle Arbeitsbereiche für ein Konto aufgelistet. Replace:

  • <oauth-access-token> mit dem OAuth-Zugriffstoken des Dienstprinzipals.
  • <account-id> mit Ihrer Konto-ID.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces'

Beispiel einer REST-API-Anforderung auf Arbeitsbereichsebene

In diesem Beispiel werden alle verfügbaren Cluster in einem Arbeitsbereich aufgelistet. Replace:

  • <oauth-access-token> mit dem OAuth-Zugriffstoken des Dienstprinzipals.
  • <databricks-instance> mit dem Namen der Azure Databricks-Arbeitsbereichsinstanz, z. B adb-1234567890123456.7.azuredatabricks.net. .
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'

Problembehandlung bei der OAuth M2M-Authentifizierung

Führen Sie diese Schritte aus, um die am häufigsten auftretenden Probleme mit der OAuth M2M-Authentifizierung von Databricks für Dienstprinzipale zu beheben.

Schnellüberprüfungen

Überprüfen Sie zunächst diese häufig auftretenden Konfigurationsprobleme, die zu OAuth M2M-Authentifizierungsfehlern führen:

  • Anmeldeinformationen:DATABRICKS_CLIENT_ID ist auf die Anwendungs-ID des Dienstprinzipals (Client-ID) festgelegt und DATABRICKS_CLIENT_SECRET auf den geheimen Wert des OAuth-Schlüssels, beide ohne zusätzliche Leerzeichen.
  • Host:DATABRICKS_HOST zeigt auf https://accounts.azuredatabricks.net für Kontovorgänge oder die URL für den jeweiligen Arbeitsbereich, z.B. https://adb-1234567890123456.7.azuredatabricks.net für Arbeitsbereichsvorgänge. Schließen Sie /api nicht ein.
  • Zuweisung: Der Dienstprinzipal wird dem Zielarbeitsbereich zugewiesen.
  • Erlaubnisse: Der Dienstprinzipal verfügt über die erforderlichen Berechtigungen für die Zielressource.
  • Konflikte: Keine widersprüchlichen Variablen festgelegt, z. B. DATABRICKS_TOKEN, DATABRICKS_USERNAME. Führen Sie env | grep DATABRICKS aus und entscheiden Sie Konflikte.
  • Werkzeuge: Verwenden Sie einheitliche Authentifizierung und aktuelle CLI- oder SDK-Versionen.

401 Nicht autorisiert

Wahrscheinliche Ursachen und Korrekturen:

  • Ungültige Client-ID oder geheimer Schlüssel: Erneutes Kopieren DATABRICKS_CLIENT_ID und DATABRICKS_CLIENT_SECRET. Regenerieren Sie den Schlüssel, wenn Sie nicht sicher sind.
  • Abgelaufener geheimer Schlüssel: Erstellen Sie einen neuen geheimen Schlüssel, wenn der aktuelle geheime Schlüssel abgelaufen ist.
  • Falscher Tokenherausgeber: Verwenden Sie für M2M den OAuth-Tokenendpunkt Databricks, nicht Ihren IdP- oder Cloudtokendpunkt.
  • Host-Abweichung: Wenn Sie sich für Arbeitsbereichs-APIs authentifizieren, muss DATABRICKS_HOST die Arbeitsbereichs-URL sein, die Sie aufrufen.

403 Verboten

Wahrscheinliche Ursachen und Korrekturen:

  • Fehlende Ressourcenberechtigungen: Gewähren Sie dem Dienstprinzipal CAN USE oder CAN MANAGE auf Clustern oder SQL-Warehouses und den erforderlichen Berechtigungen auf Objektebene für Notizbücher, Aufträge oder Datenobjekte.
  • Keine Arbeitsbereichszuweisung: Weisen Sie den Dienstprinzipal dem Arbeitsbereich in der Kontokonsole zu.
  • Administrator-API-Zugriff: Weisen Sie für nur Administratoren-APIs den Dienstprinzipal der Arbeitsbereichsadministratorgruppe zu, oder gewähren Sie Kontoadministratorberechtigungen.

Konfigurationsprobleme

Symptome sind Timeouts, "Host nicht gefunden", "Konto nicht gefunden" oder "Arbeitsbereich nicht gefunden".

Fehlerbehebungen:

  • Hostregeln: Verwenden Sie die Kontokonsolen-URL für Konto-APIs. Verwenden Sie die Arbeitsbereichs-URL für Arbeitsbereich-APIs. Schließen Sie das /api Suffix nicht ein.
  • Konto-ID: Geben Sie DATABRICKS_ACCOUNT_ID nur für Vorgänge auf Kontoebene an. Verwenden Sie die UUID aus der Kontokonsole.
  • Profilauswahl: Wenn Sie mehrere Profile verwenden, geben Sie --profile <name> weiter oder legen Sie DATABRICKS_CONFIG_PROFILE fest.

Connectivity

Wenn die OAuth M2M-Authentifizierung aufgrund von Netzwerkproblemen fehlschlägt, überprüfen Sie anhand dieser Tests, ob Ihre Umgebung Datenbricks-Endpunkte erreichen kann:

  • DNS:nslookup <your-host> (sollte IP-Adressen für den Hostnamen zurückgeben)
  • TLS und Reichweite:curl -I https://<your-host> (sollte HTTP-Status 200, 401 oder 403 zurückgeben)
  • Firmennetz: Bestätigen Sie, dass Proxy- oder Firewallregeln HTTPS zu Databricks-Endpunkten zulassen

Zusätzliche Ressourcen