OAuth-Computer-zu-Computer-Authentifizierung (M2M)

Die Authentifizierung über OAuth-M2M (Machine-to-Machine) verwendet die Anmeldeinformationen einer automatisierten Entität, um die Zielentität zu authentifizieren. In diesem Fall wird hierfür ein durch Azure Databricks verwalteter Dienstprinzipal oder ein durch Microsoft Entra ID (ehemals Azure Active Directory) verwalteter Dienstprinzipal verwendet.

Nachdem Azure Databricks den Zieldienstprinzipal erfolgreich über die OAuth M2M-Authentifizierungsanforderung authentifiziert hat, wird dem beteiligte Tool oder SDK ein Azure Databricks OAuth-Token übergeben, um die tokenbasierte Authentifizierung ab diesem Zeitpunkt im Auftrag des Dienstprinzipals durchzuführen. Das Azure Databricks OAuth-Token hat eine Lebensdauer von einer Stunde. Danach versucht das beteiligte Tool oder SDK automatisch, ein neues Token abzurufen, das wieder eine Stunde gültig ist.

Gehen Sie wie folgt vor, um die OAuth M2M-Authentifizierung zu konfigurieren:

Hinweis

Sie müssen ein Azure Databricks-Kontoadministrator sein, um Azure Databricks-OAuth-Anmeldeinformationen für Dienstprinzipale zu verwalten.

Schritt 1: Erstellen eines Microsoft Entra ID-Dienstprinzipals in Ihrem Azure-Konto

Führen Sie diesen Schritt aus, wenn Sie einen Microsoft Entra ID-Dienstprinzipal mit Ihrem Azure Databricks-Konto, -Arbeitsbereich oder beidem verknüpfen möchten. Fahren Sie andernfalls mit Schritt 2 fort.

  1. Melden Sie sich beim Azure-Portal an.

    Hinweis

    Welches Portal Sie verwenden, hängt davon ab, ob Ihre Microsoft Entra ID-Anwendung (früher Azure Active Directory) in der öffentlichen Azure-Cloud oder in einer nationalen Cloud oder Sovereign Cloud ausgeführt wird. Weitere Informationen finden Sie unter Nationale Clouds.

  2. Wenn Sie Zugriff auf mehrere Mandanten, Abonnements oder Verzeichnisse haben, klicken Sie im oberen Menü auf das Symbol Verzeichnisse und Abonnements (Verzeichnis mit Filter), um zu dem Verzeichnis zu wechseln, in dem Sie den Dienstprinzipal bereitstellen möchten.

  3. Suchen Sie in Ressourcen, Dienste und Dokumente suchen nach Microsoft Entra ID, und wählen Sie den Dienst aus.

  4. Klicken Sie auf + Hinzufügen, und wählen Sie App-Registrierung aus.

  5. Geben Sie für Name einen Namen für die Anwendung ein.

  6. Wählen Sie im Abschnitt Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis (einzelner Mandant) aus.

  7. Klicken Sie auf Registrieren.

  8. Kopieren Sie auf der Seite Übersicht der Anwendungsseite im Abschnitt Zusammenfassung die folgenden Werte:

    • Anwendungs-ID (Client)
    • Verzeichnis-ID (Mandant)

    In Azure registrierte App: Übersicht

  9. Wählen Sie zum Generieren eines geheimen Clientschlüssels unter Verwalten die Option Zertifikate und Geheimnisse aus.

    Hinweis

    Sie verwenden diesen geheimen Clientschlüssel, um Microsoft Entra ID-Token für die Authentifizierung von Microsoft Entra ID-Dienstprinzipale bei Azure Databricks zu generieren. Informationen dazu, ob ein Azure Databricks-Tool oder ein SDK Microsoft Entra ID-Token verwenden kann, finden Sie in der Dokumentation des Tools oder SDK.

  10. Klicken Sie auf der Registerkarte Geheime Clientschlüssel auf Neuer geheimer Clientschlüssel.

    Neuer geheimer Clientschlüssel

  11. Geben Sie im Bereich Geheimen Clientschlüssel hinzufügen unter Beschreibung eine Beschreibung für den geheimen Clientschlüssel ein.

  12. Wählen Sie unter Ablauf einen Ablaufzeitzeitraum für den geheimen Clientschlüssel aus, und klicken Sie dann auf Hinzufügen.

  13. Kopieren Sie den Wert des geheimen Clientschlüssels, und speichern Sie ihn an einem sicheren Ort, da dieser geheime Clientschlüssel das Kennwort für Ihre Anwendung ist.

Schritt 2: Hinzufügen eines Dienstprinzipals zu Ihrem Azure Databricks-Konto

Diese Schritte funktionieren nur, wenn Ihr Azure Databricks-Zielarbeitsbereich den Identitätsverbund unterstützt. Wenn Ihr Arbeitsbereich nicht für den Identitätsverbund aktiviert ist, fahren Sie mit Schritt 3 fort.

  1. Klicken Sie in der oberen Leiste Ihres Azure Databricks-Arbeitsbereichs auf Ihren Benutzernamen, und wählen Sie Konto verwalten aus.

    Alternativ können Sie direkt zu Ihrer Azure Databricks-Kontokonsole unter https://accounts.azuredatabricks.net wechseln.

  2. Melden Sie sich bei Ihrem Azure Databricks-Konto an, wenn Sie dazu aufgefordert werden.

  3. Klicken Sie auf der Randleiste auf Benutzerverwaltung.

  4. Klicken Sie auf die Registerkarte Dienstprinzipale.

  5. Klicken Sie auf Dienstprinzipal hinzufügen.

  6. Wählen Sie unter Verwaltung die Option Von Databricks verwaltet oder Von Microsoft Entra ID verwaltet aus.

  7. Wenn Sie Von Microsoft Entra ID verwaltet ausgewählt haben, fügen Sie unter Anwendungs-ID in Microsoft Entra den Wert der Anwendungs-ID (Client-ID) aus Schritt 1 ein.

  8. Geben Sie einen Namen für den Dienstprinzipal ein.

  9. Klicken Sie auf Hinzufügen.

  10. (Optional:) Weisen Sie dem Dienstprinzipal Berechtigungen auf Kontoebene zu:

    1. Klicken Sie auf der Registerkarte Dienstprinzipale auf den Namen Ihres Dienstprinzipals.
    2. Aktivieren oder deaktivieren Sie auf der Registerkarte Rollen jede Zielrolle, die diesem Dienstprinzipal zugewiesen werden soll.
    3. Gewähren Sie auf der Registerkarte Berechtigungen Zugriff auf alle Azure Databricks-Benutzer, Dienstprinzipale und Kontogruppenrollen, die Sie verwalten und mit diesem Dienstprinzipal verwenden möchten. Weitere Informationen finden Sie unter Verwalten von Rollen für einen Dienstprinzipal.

Schritt 3: Hinzufügen des Dienstprinzipals zu Ihrem Azure Databricks-Arbeitsbereich

Wenn Ihr Arbeitsbereich für den Identitätsverbund aktiviert ist:

  1. Klicken Sie in der oberen Leiste Ihres Azure Databricks-Arbeitsbereichs auf Ihren Benutzernamen, und wählen Sie Einstellungen aus.
  2. Klicken Sie auf die Registerkarte Identität und Zugriff.
  3. Klicken Sie neben Dienstprinzipale auf Verwalten.
  4. Klicken Sie auf Dienstprinzipal hinzufügen.
  5. Wählen Sie Ihren Dienstprinzipal aus Schritt 2 aus, und klicken Sie auf Hinzufügen.

Fahren Sie mit Schritt 4 fort.

Wenn Ihr Arbeitsbereich für den Identitätsverbund aktiviert ist:

  1. Klicken Sie in der oberen Leiste Ihres Azure Databricks-Arbeitsbereichs auf Ihren Benutzernamen, und wählen Sie Einstellungen aus.
  2. Klicken Sie auf die Registerkarte Identität und Zugriff.
  3. Klicken Sie neben Dienstprinzipale auf Verwalten.
  4. Klicken Sie auf Dienstprinzipal hinzufügen.
  5. Klicken Sie auf Neues hinzufügen.
  6. Wählen Sie unter Verwaltung die Option Von Databricks verwaltet oder Von Microsoft Entra ID verwaltet aus.
  7. Wenn Sie Von Microsoft Entra ID verwaltet ausgewählt haben, fügen Sie unter Anwendungs-ID in Microsoft Entra den Wert der Anwendungs-ID (Client-ID) aus Schritt 1 ein.
  8. Geben Sie einen Anzeigenamen für den neuen Dienstprinzipal ein, und klicken Sie auf Hinzufügen.

Schritt 4: Zuweisen von Berechtigungen auf Arbeitsbereichsebene für den Dienstprinzipal

  1. Wenn die Verwaltungskonsole für Ihren Arbeitsbereich noch nicht geöffnet ist, klicken Sie in der oberen Leiste auf Ihren Benutzernamen und dann auf Einstellungen.
  2. Klicken Sie auf die Registerkarte Identität und Zugriff.
  3. Klicken Sie neben Dienstprinzipale auf Verwalten.
  4. Klicken Sie auf den Namen des Dienstprinzipals, um die Seite mit dessen Einstellungen zu öffnen.
  5. Aktivieren Sie auf der Registerkarte Konfigurationen das Kontrollkästchen für jede Berechtigung, über die der Dienstprinzipal für diesen Arbeitsbereich verfügen soll, und klicken Sie dann auf Aktualisieren.
  6. Gewähren Sie auf der Registerkarte Berechtigungen Zugriff auf die Azure Databricks-Benutzer*innen, -Dienstprinzipale und -Gruppen, die Sie verwalten und mit diesem Dienstprinzipal verwenden möchten. Weitere Informationen finden Sie unter Verwalten von Rollen für einen Dienstprinzipal.

Schritt 5: Erstellen eines OAuth-Geheimnisses in Azure Databricks für den Dienstprinzipal

Bevor Sie OAuth zum Authentifizieren bei Azure Databricks verwenden können, müssen Sie zuerst einen OAuth-Geheimschlüssel erstellen, der zum Generieren von OAuth-Zugriffstoken verwendet werden kann. Ein Dienstprinzipal kann bis zu fünf OAuth-Schlüssel aufweisen. So erstellen Sie einen OAuth-Geheimschlüssel für einen Dienstprinzipal mithilfe der Kontokonsole:

  1. Melden Sie sich unter https://accounts.azuredatabricks.net bei der Azure Databricks-Kontokonsole an.
  2. Melden Sie sich bei Ihrem Azure Databricks-Konto an, wenn Sie dazu aufgefordert werden.
  3. Klicken Sie auf der Randleiste auf Benutzerverwaltung.
  4. Klicken Sie auf die Registerkarte Dienstprinzipale.
  5. Klicken Sie auf den Namen des Dienstprinzipals.
  6. Klicken Sie im Abschnitt OAuth-Geheimnis der Registerkarte Prinzipalinformationen auf Geheimnis generieren.
  7. Kopieren und speichern Sie im Dialogfeld Geheimnis generieren den Wert für Geheimnis an einem sicheren Ort, da dieses OAuth-Geheimnis das Kennwort für den Dienstprinzipal ist.
  8. Klicke auf Fertig.

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.

Konfigurieren der OAuth M2M-Authentifizierung abschließen

Zum Konfigurieren der OAuth M2M-Authentifizierung müssen Sie die folgenden zugeordneten Umgebungsvariablen, .databrickscfg-Felder, Terraform-Felder 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.
  • Geheimnis des Dienstprinzipals.

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

Umgebung

Informationen zum Verwenden von Umgebungsvariablen für einen bestimmten Azure Databricks-Authentifizierungstyp mit einem Tool oder SDK finden Sie unter Unterstützte Authentifizierungstypen nach Azure Databricks-Tool oder -SDK oder in der Dokumentation des jeweiligen Tools oder SDK. Siehe auch Umgebungsvariablen und Felder für die einheitliche Clientauthentifizierung und die Standardreihenfolge der Auswertung für einheitliche Clientauthentifizierungsmethoden und Anmeldeinformationen.

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

  • DATABRICKS_HOST, auf die URL der Kontokonsole von Azure Databricks 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:

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 zur Verwendung des Profils mit einem Tool oder SDK finden Sie unter Unterstützte Authentifizierungstypen nach Azure Databricks-Tool oder -SDK oder in der Dokumentation des jeweiligen Tools oder SDK. Siehe auch Umgebungsvariablen und Felder für die einheitliche Clientauthentifizierung und die Standardreihenfolge der Auswertung für einheitliche Clientauthentifizierungsmethoden und Anmeldeinformationen.

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>

Cli

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 unter OAuth Machine-to-Machine (M2M)-Authentifizierung.

Verbinden

Hinweis

Die M2M-Authentifizierung von OAuth wird in den folgenden Versionen von Databricks Connect 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:

  • Legen Sie die Werte in Ihrer .databrickscfg-Datei für Vorgänge auf Azure Databricks-Arbeitsbereichsebene wie im Abschnitt „Profil“ dieses Artikels angegeben fest. 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 Azure Databricks-Arbeitsbereichsebene wie im Abschnitt „Umgebung“ dieses Artikels angegeben fest. 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:

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 Azure Databricks-Arbeitsbereichsebene wie im Abschnitt „Profil“ dieses Artikels angegeben fest.
  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 VS Code.

Terraform

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>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Für Vorgänge auf Arbeitsbereichebene, 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>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

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

Python

Verwenden Sie für Vorgänge auf Kontoebene Folgendes für die 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(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Für Vorgänge auf Arbeitsbereichsebene, insbesondere für die 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(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

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

Hinweis

Die Databricks-Erweiterung für Visual Studio Code verwendet Python, verfügt jedoch noch über keine Implementierung der M2M-Authentifizierung von OAuth.

Java

Für Vorgänge auf Arbeitsbereichebene, 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())
  .setClientId(retrieveClientId())
  .setClientSecret(retrieveClientSecret());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

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

Go

Für Vorgänge auf Kontoebene, 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 lautet die Konsolen-URL Ihres Azure Databricks-Kontos https://accounts.azuredatabricks.net:

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

Für Vorgänge auf Arbeitsbereichebene, 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 ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net:

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

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 und Verwenden von Zugriffstoken für die OAuth-Computer-zu-Computer-Authentifizierung (M2M)

Azure Databricks-Tools und SDKs, die den einheitlichen Authentifizierungsstandard des Databricks-Clients implementieren, generieren, aktualisieren und verwenden automatisch Azure Databricks OAuth-Zugriffstoken nach Bedarf für die OAuth M2M-Authentifizierung in Ihrem Auftrag.

Wenn Sie aus irgendeinem Grund Azure Databricks OAuth-Zugriffstoken für die OAuth M2M-Authentifizierung manuell generieren, aktualisieren oder verwenden müssen, befolgen Sie die Anweisungen in diesem Abschnitt.

Schritt 1: Erstellen eines Dienstprinzipals und eines geheimen OAuth-Schlüssels

Wenn Sie noch nicht über einen von Azure Databricks verwalteten Dienstprinzipal oder von Microsoft Entra ID verwalteten Dienstprinzipal und den entsprechenden Azure Databricks OAuth-Schlüssel verfügen, erstellen Sie diese, indem Sie die Schritte 1 bis 5 am Anfang dieses Artikels ausführen.

Schritt 2: Manuelles Generieren eines Zugriffstokens

Sie können die Client-ID des verwalteten Dienstprinzipals von Azure Databricks oder die Client-ID des verwalteten Dienstprinzipals und den OAuth-Schlüssel von Azure Databricks verwenden, um ein Azure Databricks OAuth-Zugriffstoken anzufordern, um sowohl REST-APIs auf Kontoebene als auch REST-APIs auf Arbeitsbereichsebene zu authentifizieren. Das Token läuft in einer Stunde ab. Sie müssen nach Ablauf ein neues Azure Databricks-OAuth-Zugriffstoken anfordern. Der Umfang der OAuth-Zugriffstoken hängt von der Ebene ab, auf der Sie das Token erstellen. Sie können ein Token entweder auf Kontoebene oder auf Arbeitsbereichsebene wie folgt erstellen:

  • Um REST-APIs auf Kontoebene und Arbeitsbereichsebene innerhalb von Konten und Arbeitsbereichen aufzurufen, auf die der verwaltete Dienstprinzipal von Azure Databricks oder der verwaltete Microsoft Entra ID-Dienstprinzipal Zugriff hat, generieren Sie manuell ein Zugriffstoken auf Kontoebene.
    • Um REST-APIs nur innerhalb eines Arbeitsbereichs aufzurufen, auf den der verwaltete Dienstprinzipal von Azure Databricks oder der verwaltete Dienstprinzipal von Microsoft Entra ID Zugriff hat, können Sie manuell ein Zugriffstoken auf Arbeitsbereichsebene nur für diesen Arbeitsbereich generieren.

Manuelles Generieren eines Zugriffstokens auf Kontoebene

Ein Azure Databricks OAuth-Zugriffstoken, das auf Kontoebene erstellt wurde, kann für Databricks-REST-APIs im Konto und in allen Arbeitsbereichen verwendet werden, denen der verwaltete Dienstprinzipal von Azure Databricks oder der Verwaltete Dienstprinzipal von Microsoft Entra ID zugewiesen wurde.

  1. Melden Sie sich als Kontoadministrator*in bei der Kontokonsole an.

  2. Klicken Sie in der oberen rechten Ecke auf den nach unten weisenden Pfeil neben Ihrem Benutzernamen.

  3. Kopieren Sie Ihre Konto-ID.

  4. Erstellen Sie die Tokenendpunkt-URL, indem Sie <my-account-id> in der folgenden URL durch die Konto-ID ersetzen, die Sie kopiert haben.

    https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
    
  5. Verwenden Sie einen Client, z. B. curl, zum Anfordern eines Azure Databricks OAuth-Zugriffstokens mit der Tokenendpunkt-URL, der Client-ID (auch als Anwendungs-ID bezeichnet) des von Azure Databricks verwalteten Dienstprinzipals oder des von Microsoft Entra ID verwalteten Dienstprinzipals und dem Azure Databricks-OAuth-Geheimschlüssel, den Sie für den verwalteten Dienstprinzipal von Azure Databricks oder Microsoft Entra ID erstellt haben. Der all-apis-Bereich fordert ein Azure Databricks OAuth-Zugriffstoken an, das für den Zugriff auf alle Databricks-REST-APIs verwendet werden kann, auf die dem verwalteten Dienstprinzipal von Azure Databricks oder dem verwalteten Dienstprinzipal von Microsoft Entra ID Zugriff gewährt wurde.

    • Ersetzen Sie <token-endpoint-URL> durch die Tokenendpunkt-URL von oben.
    • Ersetzen Sie <client-id> mit der Client-ID des verwalteten Dienstprinzipals von Azure Databricks oder von Microsoft Entra ID, die auch als Anwendungs-ID bezeichnet wird.
    • Ersetzen Sie <client-secret> durch den geheimen Azure Databricks-OAuth-Schlüssel, den Sie für den verwalteten Dienstprinzipal von Azure Databricks oder von Microsoft Entra ID erstellt haben.
    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…",
      "scope": "all-apis",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Kopieren Sie access_token aus der Antwort.

    Das Azure Databricks-OAuth-Zugriffstoken läuft in einer Stunde ab. Sie müssen nach Ablauf manuell ein neues Azure Databricks-OAuth-Zugriffstoken erstellen.

  6. Fahren Sie fort mit Schritt 3: Aufrufen einer Databricks-REST-API.

Manuelles Generieren eines Zugriffstokens auf Arbeitsbereichsebene

Ein von der Arbeitsbereichsebene erstelltes Azure Databricks-OAuth-Zugriffstoken kann nur auf REST-APIs in diesem Arbeitsbereich zugreifen, auch wenn der verwaltete Dienstprinzipal von Azure Databricks oder von Microsoft Entra ID ein Kontoadministrator oder Mitglied anderer Arbeitsbereiche ist.

  1. Erstellen Sie die Tokenendpunkt-URL, indem Sie https://<databricks-instance> durch die Arbeitsbereichs-URL Ihrer Azure Databricks-Bereitstellung ersetzen:

    https://<databricks-instance>/oidc/v1/token
    
  2. Verwenden Sie einen Client, z. B. curl, zum Anfordern eines Azure Databricks OAuth-Zugriffstokens mit der Tokenendpunkt-URL, der Client-ID (auch als Anwendungs-ID bezeichnet) des von Azure Databricks verwalteten Dienstprinzipals oder des von Microsoft Entra ID verwalteten Dienstprinzipals und dem Azure Databricks-OAuth-Geheimschlüssel, den Sie für den verwalteten Dienstprinzipal von Azure Databricks oder Microsoft Entra ID erstellt haben. Der all-apis-Bereich fordert ein Azure Databricks OAuth-Zugriffstoken an, das für den Zugriff auf alle Databricks-REST-APIs verwendet werden kann, auf die dem verwalteten Dienstprinzipal von Azure Databricks oder von Microsoft Entra ID Zugriff aus dem Arbeitsbereich, aus dem Sie das Token anfordern, gewährt wurde.

    • Ersetzen Sie <token-endpoint-URL> durch die Tokenendpunkt-URL von oben.

    • Ersetzen Sie <client-id> mit der Client-ID des verwalteten Dienstprinzipals von Azure Databricks oder von Microsoft Entra ID, die auch als Anwendungs-ID bezeichnet wird.

    • Ersetzen Sie <client-secret> durch den geheimen Azure Databricks-OAuth-Schlüssel, den Sie für den verwalteten Dienstprinzipal von Azure Databricks oder von Microsoft Entra ID erstellt haben.

      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…",
        "scope": "all-apis",
        "token_type": "Bearer",
        "expires_in": 3600
      }
      

      Kopieren Sie access_token aus der Antwort.

      Das Azure Databricks-OAuth-Zugriffstoken läuft in einer Stunde ab. Sie müssen nach Ablauf manuell ein neues Azure Databricks-OAuth-Zugriffstoken erstellen.

Schritt 3: Aufrufen einer Databricks-REST-API

Sie können jetzt ein Azure Databricks-OAuth-Zugriffstoken verwenden, um sich bei Azure Databricks-REST-APIs auf Kontoebene und Azure Databricks-REST-APIs auf Arbeitsbereichsebene zu authentifizieren. Der verwaltete Dienstprinzipal von Azure Databricks oder der verwaltete Dienstprinzipal von Microsoft Entra ID muss ein Kontoadministrator sein, um REST-APIs auf Kontoebene aufzurufen.

Sie können das Token mithilfe der Bearer-Authentifizierung in den Header einschließen. Sie können diesen Ansatz mit curl oder einem beliebigen Client verwenden, den Sie erstellen.

Beispiel einer REST API-Anforderung auf Kontoebene

In diesem Beispiel wird die Bearer-Authentifizierung verwendet, um eine Liste aller Arbeitsbereiche abzurufen, die einem Konto zugeordnet sind.

  • Ersetzen Sie <oauth-access-token> mit dem OAuth-Zugriffstoken von Azure Databricks für den verwalteten Dienstprinzipal von Azure Databricks oder von Microsoft Entra ID.
  • Ersetzen Sie <account-id> durch Ihre 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 wird die Bearer-Authentifizierung verwendet, um alle verfügbaren Cluster im angegebenen Arbeitsbereich aufzulisten.

  • Ersetzen Sie <oauth-access-token> mit dem OAuth-Zugriffstoken von Azure Databricks für den verwalteten Dienstprinzipal von Azure Databricks oder von Microsoft Entra ID.

  • Ersetzen Sie <workspace-URL> durch die URL Ihres Basisarbeitsbereichs. Das Format sieht in etwa wie folgt aus: adb-1111111111111111.1.azuredatabricks.net.

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