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:
- Meistens automatisch unter Verwendung der Databricks-Unterstützung für die einheitliche Clientauthentifizierung. Verwenden Sie diesen vereinfachten Ansatz, wenn Sie bestimmte Azure Databricks-SDKs (z. B. das Databricks Terraform SDK) und Tools verwenden. Unterstützte Tools und SDKs sind in der einheitlichen Clientauthentifizierung von Databricks aufgeführt.
- Manuelles Generieren eines OAuth-Codeüberprüfungs-/Captcha-Paars und eines Autorisierungscodes sowie deren Verwendung zum Erstellen des ursprünglichen OAuth-Tokens, das Sie in Ihrer Konfiguration bereitstellen. Verwenden Sie diesen Ansatz, wenn Sie keine API verwenden, die von der einheitlichen Clientauthentifizierung von Databricks unterstützt wird. Weitere Informationen finden Sie unter Manuelles Generieren und Verwenden von Zugriffstoken für die OAuth-U2M-Authentifizierung (User-to-Machine, Benutzer-zu-Computer).
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:
DATABRICKS_HOST
, legen Sie diesen Parameter auf den Wert Ihrer arbeitsbereichsspezifischen Azure Databricks-URL fest, z. B.https://adb-1234567890123456.7.azuredatabricks.net
.
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:
- Für Vorgänge auf Kontoebene in Azure Databricks:
--host <account-console-url> --account-id <account-id>
. - Für Vorgänge auf Arbeitsbereichsebene in Azure Databricks:
--host <workspace-url>
.
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 Umgebungsvariablecluster_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 Werten in Ihrer .databrickscfg
Datei 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:
- Klicken Sie im Bereich Konfiguration auf Databricks konfigurieren.
- Geben Sie in der Befehlspalette als Databricks-Host Ihre arbeitsbereichsspezifische URL ein, z. B
https://adb-1234567890123456.7.azuredatabricks.net
, und drücken Sie dannEnter
. - Wählen Sie OAuth (U2M) aus.
- 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 Werthttps://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:
- Einrichten des Databricks Connect-Clients für Python
- Einrichten der Authentifizierung für die Databricks-Erweiterung für Visual Studio Code
- Authentifizieren des Databricks SDK für Python bei Ihrem Azure Databricks-Konto oder -Arbeitsbereich
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 Werthttps://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:
- Einrichten des Databricks Connect-Clients für Scala (der Databricks Connect-Client für Scala verwendet das enthaltene Databricks SDK für Java zur Authentifizierung)
- Authentifizieren des Databricks SDK für Java bei Ihrem Azure Databricks-Konto oder -Arbeitsbereich
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 Werthttps://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)
Hinweis
Dieser Abschnitt wird für Benutzer mit Drittanbietertools oder -diensten bereitgestellt, die nicht mit dem einheitlichen Authentifizierungsstandard für Databricks-Clients funktionieren.
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:
- Um REST-APIs auf Kontoebene und Arbeitsbereichsebene in Konten und Arbeitsbereichen aufzurufen, auf die Ihr Azure Databricks-Benutzerkonto zugreifen kann, generieren Sie einen Autorisierungscode auf Kontoebene.
- Um REST-APIs nur in einem Arbeitsbereich aufzurufen, auf den Ihr Benutzerkonto Zugriff hat, können Sie einen Autorisierungscode auf Arbeitsbereichsebene nur für diesen Arbeitsbereich generieren.
Generieren eines Autorisierungscodes auf Kontoebene
Melden Sie sich als Kontoadministrator*in bei der Kontokonsole an.
Klicken Sie in der oberen rechten Ecke auf den nach unten weisenden Pfeil neben Ihrem Benutzernamen.
Kopieren Sie Ihre Konto-ID.
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
- Ersetzen Sie
Wenn Sie dazu aufgefordert werden, folgen Sie den Anweisungen auf dem Bildschirm, um sich bei Ihrem Azure Databricks-Konto anzumelden.
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 URLdcod...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 Wertstate
ü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.Fahren Sie mit Generieren eines Zugriffstokens auf Kontoebene fort.
Generieren eines Autorisierungscodes auf Arbeitsbereichsebene
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 Beispieladb-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
- Ersetzen Sie
Wenn Sie dazu aufgefordert werden, folgen Sie den Anweisungen auf dem Bildschirm, um sich bei Ihrem Azure Databricks-Arbeitsbereich anzumelden.
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 URLdcod...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 Wertstate
ü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:
- Um REST-APIs auf Kontoebene und Arbeitsbereichsebene in Konten und Arbeitsbereichen aufzurufen, auf die Ihr Azure Databricks-Benutzerkonto zugreifen kann, verwenden Sie den Autorisierungscode auf Kontoebene, um ein Zugriffstoken auf Kontoebene zu generieren.
- Um REST-APIs nur in einem Arbeitsbereich aufzurufen, auf den Ihr Benutzerkonto Zugriff hat, können Sie den Autorisierungscode auf Arbeitsbereichsebene verwenden, um ein Zugriffstoken auf Arbeitsbereichsebene nur für diesen Arbeitsbereich zu generieren.
Generieren eines Zugriffstokens auf Kontoebene
Verwenden Sie einen Client wie
curl
zusammen mit dem Autorisierungscode auf Kontoebene, um das OAuth-Zugriffstoken auf Kontoebene zu generieren. Ersetzen Sie im folgendencurl
-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>"
- Ersetzen Sie
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 BeispieleyJr...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.
Fahren Sie fort mit Schritt 4: Aufrufen einer Databricks-REST-API.
Generieren eines Zugriffstokens auf Arbeitsbereichsebene
Verwenden Sie einen Client wie
curl
zusammen mit dem Autorisierungscode auf Arbeitsbereichsebene, um das OAuth-Zugriffstoken auf Arbeitsbereichsebene zu generieren. Ersetzen Sie im folgendencurl
-Aufruf die folgenden Platzhalter:- Ersetzen Sie
<databricks-instance>
durch den Namen der Azure Databricks-Arbeitsbereichsinstanz, zum Beispieladb-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>"
- Ersetzen Sie
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 BeispieleyJr...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 Beispieladb-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"