Weitere Informationen finden Sie unter „Autorisieren des unbeaufsichtigten Zugriffs auf Azure Databricks-Ressourcen mit einem Dienstprinzipal mithilfe von OAuth“.
Dieses Thema enthält Schritte und Details zum Autorisieren des Zugriffs auf Azure Databricks-Ressourcen beim Automatisieren von Azure Databricks CLI-Befehlen oder aufrufen von Azure Databricks-REST-APIs aus Code, der von einem unbeaufsichtigten Prozess ausgeführt wird.
Azure Databricks verwendet OAuth als bevorzugtes Protokoll für die Benutzerautorisierung und Authentifizierung bei der Interaktion mit Azure Databricks-Ressourcen außerhalb der Benutzeroberfläche. Azure Databricks bietet außerdem das einheitliche Clientauthentifizierungstool, um die Aktualisierung der zugriffstoken zu automatisieren, die als Teil der OAuth-Authentifizierungsmethode generiert werden. Dies gilt für Dienstprinzipale sowie Benutzerkonten. Sie müssen jedoch einen Dienstprinzipal mit den entsprechenden Berechtigungen und Privilegien für die Azure Databricks-Ressourcen konfigurieren, auf die er als Teil seiner Vorgänge zugreifen muss.
Weitere allgemeine Details finden Sie unter Autorisierung des Zugriffs auf Azure Databricks-Ressourcen.
Was sind meine Optionen für die Autorisierung und Authentifizierung bei Verwendung eines Azure Databricks-Dienstprinzipals?
In diesem Thema bezieht sich Autorisierung auf das Protokoll (OAuth), das verwendet wird, um den Zugriff auf bestimmte Azure Databricks-Ressourcen durch Delegation auszuhandeln. Authentifizierung bezieht sich auf den Mechanismus, mit dem Anmeldeinformationen dargestellt, übertragen und überprüft werden , die in diesem Fall Zugriffstokensind.
Azure Databricks verwendet OAuth 2.0-basierte Autorisierung, um den Zugriff auf Azure Databricks-Konto- und Arbeitsbereichsressourcen über die Befehlszeile oder den Code im Auftrag eines Dienstprinzipals mit den Berechtigungen für den Zugriff auf diese Ressourcen zu ermöglichen. Sobald ein Azure Databricks-Dienstprinzipal konfiguriert ist und seine Anmeldeinformationen überprüft werden, wenn er einen CLI-Befehl ausführt oder eine REST-API aufruft, wird dem teilnehmenden Tool oder SDK ein OAuth-Token übergeben, um die tokenbasierte Authentifizierung im Auftrag des Dienstprinzipals ab diesem Zeitpunkt auszuführen. Das OAuth-Zugriffstoken hat eine Lebensdauer von einer Stunde. Danach führt das betroffene Tool oder SDK einen automatischen Hintergrundversuch aus, um ein neues Token abzurufen, das auch für eine Stunde gültig ist.
Azure Databricks unterstützt zwei Möglichkeiten zum Autorisieren des Zugriffs für einen Dienstprinzipal 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 werden in databricks unified client authenticationaufgeführt. Dieser Ansatz eignet sich gut für Automatisierungs- oder andere unbeaufsichtigte Prozessszenarien.
- Manuelles Generieren eines OAuth-Codeüberprüfungs-/Abfragepaars und eines Autorisierungscodes und 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. In diesem Fall müssen Sie möglicherweise einen eigenen Mechanismus entwickeln, um die Aktualisierung von Zugriffstoken zu behandeln, die speziell für das Drittanbietertool oder die verwendete API gelten. Weitere Informationen finden Sie unter: Manuelles Generieren und Verwenden von Zugriffstoken für die OAuth-Dienstprinzipalauthentifizierung.
Bevor Sie beginnen, müssen Sie einen Azure Databricks-Dienstprinzipal konfigurieren und ihm die entsprechenden Berechtigungen für den Zugriff auf die Ressourcen zuweisen, die es verwenden muss, wenn Ihr Automatisierungscode oder die Befehle diese anfordern.
Voraussetzung: Erstellen eines Dienstprinzipals
Kontoadministratoren und Arbeitsbereichsadministratoren können Dienstprinzipale erstellen. In diesem Schritt wird beschrieben, wie man einen Dienstprinzipal in einem Azure Databricks-Arbeitsbereich erstellt. Ausführliche Informationen zur Azure Databricks-Kontokonsole selbst finden Sie unter Verwalten von Dienstprinzipalen in Ihrem Konto.
Sie können auch einen verwalteten Dienstprinzipal der Microsoft Entra-ID erstellen und zu Azure Databricks hinzufügen. Weitere Informationen finden Sie unter Databricks und Microsoft Entra ID-Dienstprinzipale.
- Melden Sie sich als Arbeitsbereichsadministrator beim Azure Databricks-Arbeitsbereich an.
- Wählen Sie Ihren Benutzernamen in der oberen Leiste des Azure Databricks-Arbeitsbereichs und anschließend Einstellungen aus.
- Klicken Sie auf die Registerkarte Identität und Zugriff.
- Klicken Sie neben Dienstprinzipale auf Verwalten.
- Klicken Sie auf Dienstprinzipal hinzufügen.
- Klicken Sie im Suchfeld auf den Dropdownpfeil, und klicken Sie dann auf "Neu hinzufügen".
- Wählen Sie unter "Verwaltung" die Option "Databricks verwaltet" aus.
- Geben Sie einen Namen für den Dienstprinzipal ein.
- Klicken Sie auf Hinzufügen.
Der Dienstprinzipal wird sowohl Ihrem Arbeitsbereich als auch dem Azure Databricks-Konto hinzugefügt.
Schritt 1: Zuweisen von Berechtigungen zu Ihrem Dienstprinzipal
- Klicken Sie auf den Namen Des Dienstprinzipals, um die Detailseite zu öffnen.
- 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.
- 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 2: Erstellen eines OAuth-Geheimnisses für einen Dienstprinzipal
Bevor Sie OAuth verwenden können, um den Zugriff auf Ihre Azure Databricks-Ressourcen zu autorisieren, müssen Sie zuerst einen OAuth-Geheimschlüssel erstellen, der zum Generieren von OAuth-Zugriffstoken für die Authentifizierung verwendet werden kann. Ein Dienstprinzipal kann bis zu fünf OAuth-Schlüssel aufweisen. Kontoadministratoren und Arbeitsbereichsadministratoren können einen OAuth-Geheimschlüssel für einen Dienstprinzipal erstellen.
Klicken Sie auf der Detailseite Ihres Dienstprinzipals auf die Registerkarte "Geheime Schlüssel ".
Klicken Sie unter OAuth-Geheimnisse auf Geheimnis generieren.
Kopieren Sie den angezeigten geheimen Schlüssel und die Client-ID, und klicken Sie dann auf "Fertig".
Das Geheimnis wird nur einmal während der Erstellung offenbart. Die Client-ID ist identisch mit der Anwendungs-ID des Dienstprinzipals.
Kontoadministratoren können auch einen OAuth-Geheimschlüssel über die Seite mit den Dienstprinzipaldetails in der Kontokonsole generieren.
Melden Sie sich als Kontoadministrator*in bei der Kontokonsole an.
Klicken Sie auf
Benutzerverwaltung.
Wählen Sie auf der Registerkarte "Dienstprinzipale" Ihren Dienstprinzipal aus.
Klicken Sie unter OAuth-Geheimnisse auf Geheimnis generieren.
Kopieren Sie den angezeigten geheimen Schlüssel und die Client-ID, und klicken Sie dann 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.
Schritt 3: Verwenden der OAuth-Autorisierung
Um die OAuth-Autorisierung mit dem einheitlichen Clientauthentifizierungstool zu verwenden, 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-Dienstprinzipalauthentifizierung durchzuführen, integrieren Sie Folgendes in Ihren Code, basierend auf dem teilnehmenden Tool oder SDK:
Environment
Informationen zum Verwenden von Umgebungsvariablen für einen bestimmten Azure Databricks-Authentifizierungstyp mit einem Tool oder SDK finden Sie unter Autorisierung des Zugriffs auf Azure Databricks-Ressourcen oder der Dokumentation des 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 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:
DATABRICKS_HOST
, legen Sie diesen Parameter auf die arbeitsbereichsspezifische Azure Databricks-URL fest, z. B.https://adb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Profil
Erstellen oder identifizieren Sie ein Azure Databricks-Konfigurationsprofil mit den folgenden Feldern in Ihrer .databrickscfg
-Datei. Wenn Sie das Profil erstellen, ersetzen Sie die Platzhalter durch die entsprechenden Werte. Informationen zum Verwenden des Profils mit einem Tool oder SDK finden Sie unter Autorisierung des Zugriffs auf Azure Databricks-Ressourcen oder der Dokumentation des Tools oder SDKs. 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>
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>
BEFEHLSZEILENSCHNITTSTELLE (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 OAuth-Dienstprinzipalauthentifizierung wird in den folgenden Databricks Connect-Versionen unterstützt:
- Für Python: Databricks Connect für Databricks Runtime 14.0 und höher
- Für Scala: Databricks Connect für Databricks Runtime 13.3 LTS und höher. Für das Databricks-SDK für Java, das in Databricks Connect für Databricks Runtime 13.3 LTS und höher enthalten ist, muss ein Upgrade auf das Databricks-SDK für Java 0.17.0 oder höher durchgeführt werden.
Für Databricks Connect können Sie eine der folgenden Aktionen ausführen:
- 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:
- 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. - Wählen Sie in der Databricks-Erweiterung für Visual Studio Code im Bereich Konfiguration die Option Databricks konfigurieren aus.
- 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 in der Befehlspalette den Namen Ihres Zielprofils in der Liste für Ihre URL aus.
Weitere Informationen finden Sie unter Einrichten der Autorisierung für die Databricks-Erweiterung für Visual Studio Code.
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 Arbeitsbereichsebene, für Standardauthentifizierung:
provider "databricks" {
alias = "workspace"
}
Für die direkte Konfiguration (ersetzen Sie die retrieve
-Platzhalter durch Ihre eigene Implementierung, um die Werte aus der Konsole oder einem anderen Konfigurationsspeicher abzurufen, z. B. dem HashiCorp-Tresor. Weitere Informationen finden Sie unter Tresoranbieter). In diesem Fall ist der Host die arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net
:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
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()
# ...
Verwenden Sie für eine direkte Konfiguration Folgendes, und ersetzen Sie dabei die Platzhalter vom Typ retrieve
durch Ihre eigene Implementierung, um die Werte aus der Konsole oder aus einem anderen Konfigurationsspeicher (z. B. Azure Key Vault) abzurufen. 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()
# ...
Ersetzen Sie für eine direkte Konfiguration die Platzhalter vom Typ retrieve
durch Ihre eigene Implementierung, um die Werte aus der Konsole oder aus einem anderen Konfigurationsspeicher (z. B. Azure Key Vault) abzurufen. 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:
- Einrichten des Databricks Connect-Clients für Python
- Authentifizieren des Databricks SDK für Python bei Ihrem Azure Databricks-Konto oder -Arbeitsbereich
Hinweis
Die Databricks-Erweiterung für Visual Studio Code verwendet Python, hat aber noch keine OAuth-Dienstprinzipalauthentifizierung implementiert.
Java
Für Vorgänge auf Arbeitsbereichsebene mit Standardauthentifizierung gilt:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
Ersetzen Sie für eine direkte Konfiguration die Platzhalter vom Typ retrieve
durch Ihre eigene Implementierung, um die Werte aus der Konsole oder aus einem anderen Konfigurationsspeicher (z. B. Azure Key Vault) abzurufen. 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:
- 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
Für Vorgänge auf Kontoebene mit Standardauthentifizierung gilt:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
Ersetzen Sie für eine direkte Konfiguration die Platzhalter vom Typ retrieve
durch Ihre eigene Implementierung, um die Werte aus der Konsole oder aus einem anderen Konfigurationsspeicher (z. B. Azure Key Vault) abzurufen. 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 Arbeitsbereichsebene mit Standardauthentifizierung gilt:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
Ersetzen Sie für eine direkte Konfiguration die Platzhalter vom Typ retrieve
durch Ihre eigene Implementierung, um die Werte aus der Konsole oder aus einem anderen Konfigurationsspeicher (z. B. Azure Key Vault) abzurufen. 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-Dienstprinzipalauthentifizierung
Azure Databricks-Tools und SDKs, die den einheitlichen Databricks-Client-Authentifizierungsstandard implementieren, generieren, aktualisieren und verwenden nach Bedarf Azure Databricks OAuth-Zugriffstoken in Ihrem Auftrag für die OAuth-Dienstprinzipalauthentifizierung.
Databricks empfiehlt jedoch die Verwendung der einheitlichen Clientauthentifizierung, wenn Sie Azure Databricks OAuth-Zugriffstoken manuell generieren, aktualisieren oder verwenden müssen, befolgen Sie die Anweisungen in diesem Abschnitt.
Verwenden Sie die Client-ID des Dienstprinzipals und den geheimen OAuth-Schlüssel, um ein OAuth-Zugriffstoken anzufordern, um sowohl REST-APIs auf Kontoebene als auch REST-APIs auf Arbeitsbereichsebene zu authentifizieren. Das Zugriffstoken läuft in einer Stunde ab. Sie müssen nach dem Ablauf ein neues 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 in Konten und Arbeitsbereichen aufzurufen, auf die der Dienstprinzipal Zugriff hat, generieren Sie manuell ein Zugriffstoken auf Kontoebene.
- Um REST-APIs nur innerhalb eines der Arbeitsbereiche aufzurufen, auf die der Dienstprinzipal Zugriff hat, generieren Sie manuell ein Zugriffstoken auf Arbeitsbereichsebene nur für diesen Arbeitsbereich.
Manuelles Generieren eines Zugriffstokens auf Kontoebene
Ein von der Kontoebene erstelltes OAuth-Zugriffstoken kann für Databricks-REST-APIs im Konto verwendet werden, und in allen Arbeitsbereichen hat der Dienstprinzipal Zugriff darauf.
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.
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
Verwenden Sie einen Client, z
curl
. B. um ein OAuth-Zugriffstoken mit der Tokenendpunkt-URL, die Client-ID des Dienstprinzipals (auch als Anwendungs-ID bezeichnet) und den von Ihnen erstellten OAuth-Schlüssel des Dienstprinzipals anzufordern. Derall-apis
Bereich fordert ein OAuth-Zugriffstoken an, das für den Zugriff auf alle Databricks-REST-APIs verwendet werden kann, auf die der Dienstprinzipal Zugriff gewährt wurde.- Ersetzen Sie
<token-endpoint-URL>
durch die zuvor erwähnte Tokenendpunkt-URL. - Ersetzen Sie
<client-id>
durch die Client-ID des Dienstprinzipals, die auch als Anwendungs-ID bezeichnet wird. - Ersetzen Sie
<client-secret>
durch das von Ihnen erstellte OAuth-Geheimnis des Dienstprinzipals.
export CLIENT_ID=<client-id> export CLIENT_SECRET=<client-secret> curl --request POST \ --url <token-endpoint-URL> \ --user "$CLIENT_ID:$CLIENT_SECRET" \ --data 'grant_type=client_credentials&scope=all-apis'
Dies generiert eine Antwort, die in etwa wie folgt aussieht:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
Kopieren Sie
access_token
aus der Antwort.- Ersetzen Sie
Manuelles Generieren eines Zugriffstokens auf Arbeitsbereichsebene
Ein von der Arbeitsbereichsebene erstelltes OAuth-Zugriffstoken kann nur auf REST-APIs in diesem Arbeitsbereich zugreifen, auch wenn der Dienstprinzipal ein Kontoadministrator ist oder Mitglied anderer Arbeitsbereiche ist.
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
Verwenden Sie einen Client, z
curl
. B. um ein OAuth-Zugriffstoken mit der Tokenendpunkt-URL, die Client-ID des Dienstprinzipals (auch als Anwendungs-ID bezeichnet) und den von Ihnen erstellten OAuth-Schlüssel des Dienstprinzipals anzufordern. Derall-apis
Bereich fordert ein OAuth-Zugriffstoken an, das für den Zugriff auf alle Databricks-REST-APIs verwendet werden kann, denen der Dienstprinzipal Zugriff innerhalb des Arbeitsbereichs gewährt hat, von dem Sie das Token anfordern.- Ersetzen Sie
<token-endpoint-URL>
durch die zuvor erwähnte Tokenendpunkt-URL. - Ersetzen Sie
<client-id>
durch die Client-ID des Dienstprinzipals, die auch als Anwendungs-ID bezeichnet wird. - Ersetzen Sie
<client-secret>
durch das von Ihnen erstellte OAuth-Geheimnis des Dienstprinzipals.
export CLIENT_ID=<client-id> export CLIENT_SECRET=<client-secret> curl --request POST \ --url <token-endpoint-URL> \ --user "$CLIENT_ID:$CLIENT_SECRET" \ --data 'grant_type=client_credentials&scope=all-apis'
Dies generiert eine Antwort, die in etwa wie folgt aussieht:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
Kopieren Sie
access_token
aus der Antwort.- Ersetzen Sie
Aufrufen einer Databricks-REST-API
Sie können das OAuth-Zugriffstoken verwenden, um sich bei den Azure Databricks REST-APIs sowohl auf Kontoebene (,) als auch auf Arbeitsbereichsebene (,) zu authentifizieren. Der Dienstprinzipal muss über Kontoadministratorberechtigungen verfügen, um REST-APIs auf Kontoebene aufzurufen.
Schließen Sie das Zugriffstoken mithilfe der Bearer
-Authentifizierung in den Autorisierungsheader ein. 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>
das OAuth-Zugriffstoken des Dienstprinzipals, das Sie im vorherigen Schritt kopiert haben. - 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>
das OAuth-Zugriffstoken des Dienstprinzipals, das Sie im vorherigen Schritt kopiert haben. - Ersetzen Sie
<workspace-URL>
durch die URL Ihres Basisarbeitsbereichs. Das Format sieht in etwa wie folgt aus:dbc-a1b2345c-d6e7.cloud.databricks.com
.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'
Zusätzliche Ressourcen
- Dienstprinzipale
- Übersicht über das Databricks-Identitätsmodell
- Weitere Informationen zur Authentifizierung und Zugriffssteuerung