Freigeben über


Authentifizierung des Zugriffs auf Azure Databricks mit einem Benutzerkonto mithilfe von OAuth (OAuth U2M)

Azure Databricks verwendet die OAuth-Benutzer-zu-Computer-Authentifizierung (U2M), um CLI- und API-Zugriff auf Azure Databricks-Konto- und Arbeitsbereichsressourcen im Auftrag eines Benutzers zu ermöglichen. Nachdem sich ein Benutzer erstmalig angemeldet und der OAuth-Authentifizierungsanforderung zugestimmt hat, wird dem beteiligten Tool oder SDK ein OAuth-Token zugewiesen, um die tokenbasierte Authentifizierung ab diesem Zeitpunkt im Namen des Benutzers durchzuführen. Das OAuth-Token hat eine Lebensdauer von einer Stunde. Danach versucht das beteiligte Tool oder SDK automatisch, ein neues Token abzurufen, das auch eine Stunde gültig ist.

Azure Databricks unterstützt zwei Möglichkeiten zum Authentifizieren des Zugriffs für ein Benutzerkonto mit OAuth:

U2M-Authentifizierung mit einheitlicher Databricks-Clientauthentifizierung

Hinweis

Bevor Sie mit der Konfiguration der Authentifizierung beginnen, überprüfen Sie die ACL-Berechtigungen für eine bestimmte Kategorie von Vorgängen für Arbeitsbereichsobjekte, und bestimmen Sie, ob Ihr Konto über die erforderliche Zugriffsebene verfügt. Weitere Informationen finden Sie unter Zugriffssteuerungsliste.

Um eine OAuth U2M-Authentifizierung mit Azure Databricks SDKs und Tools durchzuführen, die eine einheitliche Client-Authentifizierung unterstützen, integrieren Sie Folgendes in Ihren Code:

Environment

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

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 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>

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>

BEFEHLSZEILENSCHNITTSTELLE (CLI)

Führen Sie bei Verwendung der Databricks-Befehlszeilenschnittstelle (Databricks CLI) den Befehl databricks auth login mit den folgenden Optionen aus:

Befolgen Sie nach der Ausführung dieses Befehls die Anweisungen im Webbrowser, um sich bei Ihrem Azure Databricks-Konto oder -Arbeitsbereich anzumelden.

Weitere Informationen finden Sie unter OAuth U2M-Authentifizierung mit der Databricks-CLI.

Verbinden

Hinweis

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

VS-Code

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

  1. Klicken Sie im Bereich Konfiguration auf Databricks konfigurieren.
  2. 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.
  3. Wählen Sie OAuth (U2M) aus.
  4. Befolgen Sie die Anweisungen auf dem Bildschirm in Ihrem Webbrowser, um die Authentifizierung mit Ihrem Azure Databricks-Konto abzuschließen und den Zugriff vom Typ all-apis zuzulassen.

Weitere Informationen finden Sie unter OAuth U2M-Authentifizierung mit der Databricks-CLI.

Terraform

Hinweis

OAuth-U2M-Authentifizierung wird noch nicht unterstützt.

Python

Sowohl für Operationen auf Konto- als auch auf Arbeitsbereichsebene müssen Sie die Databricks CLI verwenden, um den folgenden Befehl auszuführen, bevor Sie Ihren Python-Code ausführen. Dieser Befehl weist die Databricks CLI an, das erforderliche OAuth-Token im Pfad .databricks/token-cache.json innerhalb des Basisordners des Benutzers auf Ihrem Computer zu generieren und zwischenzuspeichern:

Konfiguration von Vorgängen auf Kontoebene in Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Ersetzen Sie die folgenden Platzhalter:

  • Ersetzen Sie <account-console-url> durch den Wert https://accounts.azuredatabricks.net. (Legen Sie dies nicht auf den Wert Ihrer Azure Databricks-Arbeitsbereichs-URL fest.)
  • Ersetzen sie <account-id> durch den Wert der Azure Databricks-Kontos. Siehe Auffinden Ihrer Konto-ID.

Hinweis

Wenn Sie ein vorhandenes Azure Databricks-Konfigurationsprofil mit den bereits festgelegten Feldern host und account_id besitzen, können Sie --host <account-console-url> --account-id <account-id> durch --profile <profile-name> ersetzen.

Nachdem Sie den Befehl auth login ausgeführt haben, werden Sie aufgefordert, die Kontoanmelde-URL und die Konto-ID als Azure Databricks-Konfigurationsprofil zu speichern. Geben Sie bei entsprechender Aufforderung den Namen eines neuen oder vorhandenen Profils in die Datei .databrickscfg ein. Jedes vorhandene Profil mit demselben Namen in der Datei .databrickscfg wird überschrieben.

Wenn Sie dazu aufgefordert werden, führen Sie die Anweisungen auf dem Bildschirm im Webbrowsers aus, um die Anmeldung abzuschließen. Verwenden Sie dann Python-Code, der einem der folgenden Codeschnipsel ähnelt:

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       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

Konfiguration von Vorgängen auf Arbeitsbereichsebene in Databricks

databricks auth login --host <worskpace-url>

Ersetzen Sie den Platzhalter <workspace-url> durch die arbeitsbereichsspezifische URL der Azure Databricks-Zielinstanz, z. B. https://adb-1234567890123456.7.azuredatabricks.net.

Hinweis

Wenn Sie ein vorhandenes Azure Databricks-Konfigurationsprofil mit dem bereits festgelegten Feld host besitzen, können Sie --host <workspace-url> durch --profile <profile-name> ersetzen.

Nachdem Sie den Befehl auth login ausgeführt haben, werden Sie aufgefordert, die Arbeitsbereichs-URL als Azure Databricks-Konfigurationsprofil zu speichern. Geben Sie bei entsprechender Aufforderung den Namen eines neuen oder vorhandenen Profils in die Datei .databrickscfg ein. Jedes vorhandene Profil mit demselben Namen in der Datei .databrickscfg wird überschrieben.

Wenn Sie dazu aufgefordert werden, führen Sie die Anweisungen auf dem Bildschirm im Webbrowsers aus, um die Anmeldung abzuschließen. Verwenden Sie dann Python-Code, der einem der folgenden Codeschnipsel ähnelt:

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 = retrieveWorkspaceUrl())
# ...

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

Java

Sowohl für Operationen auf Konto- als auch auf Arbeitsplatzebene müssen Sie die Databricks CLI verwenden, um den folgenden Befehl auszuführen, bevor Sie Ihren Java-Code ausführen. Dieser Befehl weist die Databricks CLI an, das erforderliche OAuth-Token im Pfad .databricks/token-cache.json im Basisordners des Benutzers auf Ihrem Computer zu generieren und zwischenzuspeichern:

Konfiguration von Vorgängen auf Kontoebene in Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Ersetzen Sie die folgenden Platzhalter:

  • Ersetzen Sie <account-console-url> durch den Wert https://accounts.azuredatabricks.net. (Legen Sie dies nicht auf den Wert Ihrer Azure Databricks-Arbeitsbereichs-URL fest.)
  • Ersetzen sie <account-id> durch den Wert der Azure Databricks-Kontos. Siehe Auffinden Ihrer Konto-ID.

Hinweis

Wenn Sie ein vorhandenes Azure Databricks-Konfigurationsprofil mit den bereits festgelegten Feldern host und account_id besitzen, können Sie --host <account-console-url> --account-id <account-id> durch --profile <profile-name> ersetzen.

Nachdem Sie den Befehl auth login ausgeführt haben, werden Sie aufgefordert, die Kontoanmelde-URL und die Konto-ID als Azure Databricks-Konfigurationsprofil zu speichern. Geben Sie bei entsprechender Aufforderung den Namen eines neuen oder vorhandenen Profils in die Datei .databrickscfg ein. Jedes vorhandene Profil mit demselben Namen in der Datei .databrickscfg wird überschrieben.

Wenn Sie dazu aufgefordert werden, führen Sie die Anweisungen auf dem Bildschirm im Webbrowsers aus, um die Anmeldung abzuschließen. Verwenden Sie dann Java-Code, der einem der folgenden Codeschnipsel ähnelt:

Für die 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());
AccountClient a = new AccountClient(cfg);
// ...

Konfiguration von Vorgängen auf Arbeitsbereichsebene in Databricks

Bei Vorgängen auf Arbeitsbereichsebene sollten Sie zuerst die Databricks-CLI verwenden, um den folgenden Befehl auszuführen, bevor Sie den Java-Code ausführen. Dieser Befehl weist die Databricks CLI an, das erforderliche OAuth-Token im Pfad .databricks/token-cache.json innerhalb des Basisordners des Benutzers auf Ihrem Computer zu generieren und zwischenzuspeichern:

databricks auth login --host <worskpace-url>

Ersetzen Sie den Platzhalter <workspace-url> durch die arbeitsbereichsspezifische URL der Azure Databricks-Zielinstanz, z. B. https://adb-1234567890123456.7.azuredatabricks.net.

Hinweis

Wenn Sie ein vorhandenes Azure Databricks-Konfigurationsprofil mit dem bereits festgelegten Feld host besitzen, können Sie --host <workspace-url> durch --profile <profile-name> ersetzen.

Nachdem Sie den Befehl auth login ausgeführt haben, werden Sie aufgefordert, die Arbeitsbereichs-URL als Azure Databricks-Konfigurationsprofil zu speichern. Geben Sie bei entsprechender Aufforderung den Namen eines neuen oder vorhandenen Profils in die Datei .databrickscfg ein. Jedes vorhandene Profil mit demselben Namen in der Datei .databrickscfg wird überschrieben.

Wenn Sie dazu aufgefordert werden, führen Sie die Anweisungen auf dem Bildschirm im Webbrowsers aus, um die Anmeldung abzuschließen. Verwenden Sie dann Java-Code, der einem der folgenden Codeschnipsel ähnelt:

Für die 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())
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

Sowohl für Operationen auf Konto- als auch auf Arbeitsbereichsebene müssen Sie die Databricks-CLI verwenden, um den folgenden Befehl auszuführen, bevor Sie Ihren Go-Code ausführen. Dieser Befehl weist die Databricks CLI an, das erforderliche OAuth-Token im Pfad .databricks/token-cache.json innerhalb des Basisordners des Benutzers auf Ihrem Computer zu generieren und zwischenzuspeichern:

Konfiguration von Vorgängen auf Kontoebene in Databricks

databricks auth login --host <account-login-url> --account-id <account-id>

Ersetzen Sie die folgenden Platzhalter:

  • Ersetzen Sie <account-console-url> durch den Wert https://accounts.azuredatabricks.net. (Legen Sie dies nicht auf den Wert Ihrer Azure Databricks-Arbeitsbereichs-URL fest.)
  • Ersetzen sie <account-id> durch den Wert der Azure Databricks-Kontos. Siehe Auffinden Ihrer Konto-ID.

Hinweis

Wenn Sie ein vorhandenes Azure Databricks-Konfigurationsprofil mit den bereits festgelegten Feldern host und account_id besitzen, können Sie --host <account-console-url> --account-id <account-id> durch --profile <profile-name> ersetzen.

Nachdem Sie den Befehl auth login ausgeführt haben, werden Sie aufgefordert, die Kontoanmelde-URL und die Konto-ID als Azure Databricks-Konfigurationsprofil zu speichern. Geben Sie bei entsprechender Aufforderung den Namen eines neuen oder vorhandenen Profils in die Datei .databrickscfg ein. Jedes vorhandene Profil mit demselben Namen in der Datei .databrickscfg wird überschrieben.

Wenn Sie dazu aufgefordert werden, führen Sie die Anweisungen auf dem Bildschirm im Webbrowsers aus, um die Anmeldung abzuschließen. Verwenden Sie dann Go-Code, der einem der folgenden Codeschnipsel ähnelt:

Für die 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(),
}))
// ...

Konfiguration von Vorgängen auf Arbeitsbereichsebene in Databricks

Bei Vorgängen auf Arbeitsbereichsebene sollten Sie zuerst die Databricks-CLI verwenden, um den folgenden Befehl auszuführen, bevor Sie den Go-Code ausführen. Dieser Befehl weist die Databricks CLI an, das erforderliche OAuth-Token im Pfad .databricks/token-cache.json innerhalb des Basisordners des Benutzers auf Ihrem Computer zu generieren und zwischenzuspeichern:

databricks auth login --host <worskpace-url>

Ersetzen Sie den Platzhalter <workspace-url> durch die arbeitsbereichsspezifische URL der Azure Databricks-Zielinstanz, z. B. https://adb-1234567890123456.7.azuredatabricks.net.

Hinweis

Wenn Sie ein vorhandenes Azure Databricks-Konfigurationsprofil mit dem bereits festgelegten Feld host besitzen, können Sie --host <workspace-url> durch --profile <profile-name> ersetzen.

Nachdem Sie den Befehl auth login ausgeführt haben, werden Sie aufgefordert, die Arbeitsbereichs-URL als Azure Databricks-Konfigurationsprofil zu speichern. Geben Sie bei entsprechender Aufforderung den Namen eines neuen oder vorhandenen Profils in die Datei .databrickscfg ein. Jedes vorhandene Profil mit demselben Namen in der Datei .databrickscfg wird überschrieben.

Wenn Sie dazu aufgefordert werden, führen Sie die Anweisungen auf dem Bildschirm im Webbrowsers aus, um die Anmeldung abzuschließen. Verwenden Sie dann Go-Code, der einem der folgenden Codeschnipsel ähnelt:

Für die 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(),
}))
// ...

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-U2M-Authentifizierung (User-to-Machine, Benutzer-zu-Computer)

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

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

Schritt 1: Generieren eines Paars für OAuth-Codeüberprüfung und -Codeabfrage

Um Zugriffstoken für die OAuth-U2M-Authentifizierung manuell zu generieren und zu verwenden, benötigen Sie zuerst eine OAuth-Codeüberprüfung und eine OAuth-Codeabfrage, die von der Codeprüfer abgeleitet wird. Sie verwenden die Codeabfrage in Schritt 2, um einen OAuth-Autorisierungscode zu generieren. Sie verwenden die Codeüberprüfung und den Autorisierungscode in Schritt 3, um das OAuth-Zugriffstoken zu generieren.

Hinweis

Während es technisch möglich ist, nicht codierte Nur-Text-Zeichenfolgen für die Codeüberprüfung und die Codeabfrage zu verwenden, empfiehlt Databricks dringend, stattdessen den OAuth-Standard zum Generieren der Codeüberprüfung und Codeabfrage zu verwenden.

Insbesondere die Codeüberprüfung sollte eine kryptografisch zufällige Zeichenfolge sein, die sich aus Zeichen aus den Sätzen A-Z, a-z, 0-9 und den Interpunktionszeichen -._~ (Bindestrich, Punkt, Unterstrich und Tilde) zusammensetzt und zwischen 43 und 128 Zeichen lang ist. Die Codeabfrage sollte eine Base64-URL-codierte Zeichenfolge des SHA256-Hashs der Codeüberprüfung sein. Weitere Informationen finden Sie unter Autorisierungsanforderung.

Sie können das folgende Python-Skript ausführen, um schnell ein eindeutiges Codeüberprüfungs- und Codeabfragepaar zu generieren. Sie können dieses generierte Codeüberprüfungs- und Codeaufforderungspaar zwar mehrmals wiederverwenden, Databricks empfiehlt aber, jedes Mal ein neues Codeüberprüfungs- und Codeaufforderungspaar zu generieren, wenn Sie Zugriffstoken für die OAuth-U2M-Authentifizierung manuell generieren.

import uuid, hashlib, base64

# Generate a UUID.
uuid1 = uuid.uuid4()

# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()

# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1

# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')

# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')

# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

Schritt 2: Generieren eines Autorisierungscodes

Sie verwenden einen OAuth-Autorisierungscode, um ein Azure Databricks-OAuth-Zugriffstoken zu generieren. Der Autorisierungscode läuft sofort ab, nachdem Sie ihn zum Generieren eines Azure Databricks-OAuth-Zugriffstokens verwendet haben. Der Bereich des Autorisierungscodes hängt von der Ebene ab, auf der Sie ihn generieren. Sie können einen Autorisierungscode wie folgt entweder auf Azure Databricks-Kontoebene oder auf Azure Databricks-Arbeitsbereichsebene generieren:

Generieren eines Autorisierungscodes auf Kontoebene

  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. Navigieren Sie über die Adressleiste des Webbrowsers zur folgenden URL. Zur besseren Lesbarkeit wurden Zeilenumbrüche hinzugefügt. Ihre URL darf diese Zeilenumbrüche nicht enthalten.

    Ersetzen Sie in der folgenden URL die folgenden Werte:

    • Ersetzen Sie <account-id> durch die von Ihnen kopierte Konto-ID.
    • Ersetzen Sie <redirect-url> durch eine Umleitungs-URL zu Ihrem lokalen Computer, z. B. http://localhost:8020.
    • Ersetzen Sie <state> durch einige Nur-Text-Zeichenfolgen, die Sie verwenden können, um die Integrität des Autorisierungscodes zu überprüfen.
    • Ersetzen Sie <code-challenge> durch die Codeabfrage, die Sie in Schritt 1 generiert haben.
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  5. Wenn Sie dazu aufgefordert werden, folgen Sie den Anweisungen auf dem Bildschirm, um sich bei Ihrem Azure Databricks-Konto anzumelden.

  6. Kopieren Sie in der Adressleiste Ihres Webbrowsers den Autorisierungscode. Der Autorisierungscode ist die vollständige Zeichenfolge zwischen den Zeichen code= und & in der URL. Beispielsweise ist der Autorisierungscode in der folgenden URL dcod...7fe6:

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Sie sollten die Integrität dieses Autorisierungscodes überprüfen, indem Sie sich vergewissern, dass der Wert <state> in dieser Antwort-URL mit dem Wert state übereinstimmt, den Sie in Ihrer Anforderungs-URL angegeben haben. Wenn die Werte unterschiedlich sind, sollten Sie diesen Autorisierungscode nicht verwenden, da er möglicherweise kompromittiert wurde.

  7. Fahren Sie mit Generieren eines Zugriffstokens auf Kontoebene fort.

Generieren eines Autorisierungscodes auf Arbeitsbereichsebene

  1. Navigieren Sie über die Adressleiste des Webbrowsers zur folgenden URL. Zur besseren Lesbarkeit wurden Zeilenumbrüche hinzugefügt. Ihre URL darf diese Zeilenumbrüche nicht enthalten.

    Ersetzen Sie in der folgenden URL die folgenden Werte:

    • Ersetzen Sie <databricks-instance> durch den Namen der Azure Databricks-Arbeitsbereichsinstanz, zum Beispiel adb-1234567890123456.7.azuredatabricks.net.
    • Ersetzen Sie <redirect-url> durch eine Umleitungs-URL zu Ihrem lokalen Computer, z. B. http://localhost:8020.
    • Ersetzen Sie <state> durch einige Nur-Text-Zeichenfolgen, die Sie verwenden können, um die Integrität des Autorisierungscodes zu überprüfen.
    • Ersetzen Sie <code-challenge> durch die Codeabfrage, die Sie in Schritt 1 generiert haben.
    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. Wenn Sie dazu aufgefordert werden, folgen Sie den Anweisungen auf dem Bildschirm, um sich bei Ihrem Azure Databricks-Arbeitsbereich anzumelden.

  3. Kopieren Sie in der Adressleiste Ihres Webbrowsers den Autorisierungscode. Der Autorisierungscode ist die vollständige Zeichenfolge zwischen den Zeichen code= und & in der URL. Beispielsweise ist der Autorisierungscode in der folgenden URL dcod...7fe6:

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Sie sollten die Integrität dieses Autorisierungscodes überprüfen, indem Sie sich vergewissern, dass der Wert <state> in dieser Antwort-URL mit dem Wert state übereinstimmt, den Sie in Ihrer Anforderungs-URL angegeben haben. Wenn die Werte unterschiedlich sind, sollten Sie diesen Autorisierungscode nicht verwenden, da er möglicherweise kompromittiert wurde.

Schritt 3: Verwenden des Autorisierungscodes zum Generieren eines OAuth-Zugriffstokens

Sie verwenden den OAuth-Autorisierungscode aus dem vorherigen Schritt, um ein Azure Databricks-OAuth-Zugriffstoken zu generieren. Gehen Sie dazu wie folgt vor:

Generieren eines Zugriffstokens auf Kontoebene

  1. Verwenden Sie einen Client wie curl zusammen mit dem Autorisierungscode auf Kontoebene, um das OAuth-Zugriffstoken auf Kontoebene zu generieren. Ersetzen Sie im folgenden curl-Aufruf die folgenden Platzhalter:

    • Ersetzen Sie <account-id> durch die Konto-ID aus Schritt 2.
    • Ersetzen Sie <redirect-url> durch die Umleitungs-URL aus Schritt 2.
    • Ersetzen Sie <code-verifier> durch die Codeüberprüfung, die Sie in Schritt 1 generiert haben.
    • Ersetzen Sie <authorization-code> durch den Autorisierungscode auf Kontoebene, den Sie in Schritt 2 generiert haben.
    curl --request POST \
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Kopieren Sie in der Antwort das OAuth-Zugriffstoken auf Kontoebene. Das Zugriffstoken ist die vollständige Zeichenfolge im access_token-Objekt. Das Zugriffstoken in der folgenden Antwort ist zum Beispiel eyJr...Dkag:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Dieses Zugriffstoken läuft in einer Stunde ab. Wiederholen Sie dieses Verfahren aus Schritt 1, um ein neues Zugriffstoken zu generieren.

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

Generieren eines Zugriffstokens auf Arbeitsbereichsebene

  1. Verwenden Sie einen Client wie curl zusammen mit dem Autorisierungscode auf Arbeitsbereichsebene, um das OAuth-Zugriffstoken auf Arbeitsbereichsebene zu generieren. Ersetzen Sie im folgenden curl-Aufruf die folgenden Platzhalter:

    • Ersetzen Sie <databricks-instance> durch den Namen der Azure Databricks-Arbeitsbereichsinstanz, zum Beispiel adb-1234567890123456.7.azuredatabricks.net.
    • Ersetzen Sie <redirect-url> durch die Umleitungs-URL aus Schritt 2.
    • Ersetzen Sie <code-verifier> durch die Codeüberprüfung, die Sie in Schritt 1 generiert haben.
    • Ersetzen Sie <authorization-code> durch den Autorisierungscode auf Arbeitsbereichsebene, den Sie in Schritt 2 generiert haben.
    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Kopieren Sie in der Antwort das OAuth-Zugriffstoken auf Arbeitsbereichsebene. Das Zugriffstoken ist die vollständige Zeichenfolge im access_token-Objekt. Das Zugriffstoken in der folgenden Antwort ist zum Beispiel eyJr...Dkag:

    {
     "access_token": "eyJr...Dkag",
     "refresh_token": "doau...f26e",
     "scope": "all-apis offline_access",
     "token_type": "Bearer",
     "expires_in": 3600
    }
    

    Dieses Zugriffstoken läuft in einer Stunde ab. Wiederholen Sie dieses Verfahren aus Schritt 1, um ein neues Zugriffstoken zu generieren.

Schritt 4: Aufrufen einer Databricks-REST-API

Sie verwenden das OAuth-Zugriffstoken auf Konto- oder Arbeitsbereichsebene, um sich in Azure Databricks bei REST-APIs auf Kontoebene und REST-APIs auf Arbeitsbereichsebene zu authentifizieren, je nach Bereich des Zugriffstokens. Ihr Azure Databricks-Benutzerkonto muss ein Kontoadministrator sein, um REST-APIs auf Kontoebene aufrufen zu können.

Beispiel einer REST-API-Anforderung auf Kontoebene

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

  • Ersetzen Sie <oauth-access-token> durch das OAuth-Zugriffstoken auf Kontoebene.
  • 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 curl zusammen mit der Bearer-Authentifizierung verwendet, um alle verfügbaren Cluster im angegebenen Arbeitsbereich aufzulisten.

  • Ersetzen Sie <oauth-access-token> durch das OAuth-Zugriffstoken auf Konto- oder Arbeitsbereichsebene.
  • Ersetzen Sie <databricks-instance> durch den Namen der Azure Databricks-Arbeitsbereichsinstanz, zum Beispiel adb-1234567890123456.7.azuredatabricks.net.
export OAUTH_TOKEN=<oauth-access-token>

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