Toegang tot Azure Databricks verifiëren met een service-principal met behulp van OAuth (OAuth M2M)
In dit artikel wordt uitgelegd hoe u een Azure Databricks-service-principal maakt en deze gebruikt om te verifiëren bij een doelentiteit met OAuth.
Stap 1: Een service-principal maken
Accountbeheerders en werkruimtebeheerders kunnen een service-principal maken. In deze stap wordt beschreven hoe u een service-principal maakt in een werkruimte. Zie Service-principals beheren in uw account om de accountconsole te gebruiken.
U kunt ook een door Microsoft Entra ID beheerde service-principal maken en deze toevoegen aan Azure Databricks. Zie Databricks en Microsoft Entra ID-service-principals voor meer informatie.
- Meld u als werkruimtebeheerder aan bij de Azure Databricks-werkruimte.
- Klik op uw gebruikersnaam in de bovenste balk van de Azure Databricks-werkruimte en selecteer Instellingen.
- Klik op het tabblad Identiteit en toegang .
- Klik naast Service-principals op Beheren.
- Klik op Service-principal toevoegen.
- Klik op de vervolgkeuzepijl in het zoekvak en klik vervolgens op Nieuwe toevoegen.
- Kies onder Beheer de optie Databricks beheerd.
- Voer een naam in voor de service-principal.
- Klik op Toevoegen.
De service-principal wordt toegevoegd aan zowel uw werkruimte als het Azure Databricks-account.
Stap 2: Machtigingen toewijzen aan uw service-principal
- Klik op de naam van uw service-principal om de bijbehorende detailpagina te openen.
- Schakel op het tabblad Configuraties het selectievakje in naast elk recht dat uw service-principal voor deze werkruimte moet hebben en klik vervolgens op Bijwerken.
- Op het tabblad Machtigingen verleent u toegang tot alle Azure Databricks-gebruikers, service-principals en groepen die u wilt beheren en gebruiken. Zie Rollen beheren in een service-principal.
Stap 3: Een OAuth-geheim maken voor een service-principal
Voordat u OAuth kunt gebruiken om te verifiëren bij Azure Databricks, moet u eerst een OAuth-geheim maken, dat kan worden gebruikt om OAuth-toegangstokens te genereren. Een service-principal kan maximaal vijf OAuth-geheimen bevatten. Accountbeheerders en werkruimtebeheerders kunnen een OAuth-geheim maken voor een service-principal.
Klik op de detailpagina van uw service-principal op het tabblad Geheimen .
Klik onder OAuth-geheimen op Geheim genereren.
Kopieer het weergegeven geheim en de client-id en klik vervolgens op Gereed.
Het geheim wordt slechts eenmaal onthuld tijdens het maken. De client-id is hetzelfde als de toepassings-id van de service-principal.
Accountbeheerders kunnen ook een OAuth-geheim genereren op de pagina met details van de service-principal in de accountconsole.
Meld u als accountbeheerder aan bij de accountconsole.
Klik op Gebruikersbeheer.
Selecteer uw service-principal op het tabblad Service-principals .
Klik onder OAuth-geheimen op Geheim genereren.
Kopieer het weergegeven geheim en de client-id en klik vervolgens op Gereed.
Notitie
Als u wilt dat de service-principal clusters of SQL-warehouses kan gebruiken, moet u de service-principal toegang geven tot deze clusters. Zie Compute-machtigingen of een SQL-warehouse beheren.
Stap 4: OAuth M2M-verificatie gebruiken
Als u OAuth M2M-verificatie wilt gebruiken, moet u de volgende gekoppelde omgevingsvariabelen, .databrickscfg
velden, Terraform-velden of Config
-velden instellen:
- De Azure Databricks-host, opgegeven als
https://accounts.azuredatabricks.net
voor accountbewerkingen of de doel-URL per werkruimte, bijvoorbeeldhttps://adb-1234567890123456.7.azuredatabricks.net
voor werkruimtebewerkingen. - De account-id van Azure Databricks voor bewerkingen van het Azure Databricks-account.
- De client-id van de service-principal.
- Het geheim van de service-principal.
Als u OAuth M2M-verificatie wilt uitvoeren, integreert u het volgende in uw code op basis van het deelnemende hulpprogramma of de SDK:
Omgeving
Als u omgevingsvariabelen wilt gebruiken voor een specifiek verificatietype van Azure Databricks met een hulpprogramma of SDK, raadpleegt u Verificatietoegang tot Azure Databricks-resources of de documentatie van het hulpprogramma of de SDK. Zie ook Omgevingsvariabelen en -velden voor geïntegreerde clientverificatie en de standaardmethoden voor geïntegreerde clientverificatie.
Stel voor bewerkingen op accountniveau de volgende omgevingsvariabelen in:
DATABRICKS_HOST
, ingesteld op de URL van de Azure Databricks-accountconsole,https://accounts.azuredatabricks.net
.DATABRICKS_ACCOUNT_ID
DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Stel voor bewerkingen op werkruimteniveau de volgende omgevingsvariabelen in:
DATABRICKS_HOST
, bijvoorbeeld ingesteld op de URLhttps://adb-1234567890123456.7.azuredatabricks.net
van Azure Databricks per werkruimte.DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Profiel
Maak of identificeer een Azure Databricks-configuratieprofiel met de volgende velden in uw .databrickscfg
bestand. Als u het profiel maakt, vervangt u de tijdelijke aanduidingen door de juiste waarden. Als u het profiel wilt gebruiken met een hulpprogramma of SDK, raadpleegt u Toegang tot Azure Databricks-resources of de documentatie van het hulpprogramma of de SDK verifiëren. Zie ook Omgevingsvariabelen en -velden voor geïntegreerde clientverificatie en de standaardmethoden voor geïntegreerde clientverificatie.
Stel voor bewerkingen op accountniveau de volgende waarden in uw .databrickscfg
bestand in. In dit geval is https://accounts.azuredatabricks.net
de URL van de Azure Databricks-accountconsole:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
Stel voor bewerkingen op werkruimteniveau de volgende waarden in het .databrickscfg
bestand in. In dit geval is de host de URL van Azure Databricks per werkruimte, bijvoorbeeldhttps://adb-1234567890123456.7.azuredatabricks.net
:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
CLI
Ga op een van de volgende manieren te werk voor de Databricks CLI:
- Stel de omgevingsvariabelen in zoals opgegeven in de sectie 'Omgeving' van dit artikel.
- Stel de waarden in het
.databrickscfg
bestand in zoals opgegeven in de sectie Profiel van dit artikel.
Omgevingsvariabelen hebben altijd voorrang op waarden in uw .databrickscfg
bestand.
Zie ook OAuth-verificatie van machine-naar-machine (M2M).
Verbinden
Notitie
OAuth M2M-verificatie wordt ondersteund in de volgende Databricks Connect-versies:
- Voor Python maakt Databricks Connect voor Databricks Runtime 14.0 en hoger.
- Voor Scala, Databricks Connect voor Databricks Runtime 13.3 LTS en hoger. De Databricks SDK voor Java die is opgenomen in Databricks Connect voor Databricks Runtime 13.3 LTS en hoger, moet worden bijgewerkt naar Databricks SDK voor Java 0.17.0 of hoger.
Voor Databricks Connect kunt u een van de volgende handelingen uitvoeren:
- Stel de waarden in uw
.databrickscfg
bestand in voor bewerkingen op werkruimteniveau van Azure Databricks, zoals opgegeven in de sectie Profiel van dit artikel. Stel ook decluster_id
omgevingsvariabele in uw profiel in op uw URL per werkruimte, bijvoorbeeldhttps://adb-1234567890123456.7.azuredatabricks.net
. - Stel de omgevingsvariabelen in voor bewerkingen op werkruimteniveau van Azure Databricks, zoals opgegeven in de sectie 'Omgeving' van dit artikel. Stel de
DATABRICKS_CLUSTER_ID
omgevingsvariabele ook in op uw URL per werkruimte, bijvoorbeeldhttps://adb-1234567890123456.7.azuredatabricks.net
.
Waarden in uw .databrickscfg
bestand hebben altijd voorrang op omgevingsvariabelen.
Zie Compute-configuratie voor Databricks Connect om de Databricks Connect-client te initialiseren met deze omgevingsvariabelen of -waarden in uw .databrickscfg
bestand.
VS Code
Ga als volgt te werk voor de Databricks-extensie voor Visual Studio Code:
- Stel de waarden in uw
.databrickscfg
bestand in voor bewerkingen op werkruimteniveau van Azure Databricks, zoals opgegeven in de sectie Profiel van dit artikel. - Klik in het deelvenster Configuratie van de Databricks-extensie voor Visual Studio Code op Databricks configureren.
- Voer in het opdrachtenpalet voor Databricks Host uw URL per werkruimte in, bijvoorbeeld
https://adb-1234567890123456.7.azuredatabricks.net
en drukEnter
op . - Selecteer in het opdrachtpalet de naam van uw doelprofiel in de lijst voor uw URL.
Zie Verificatie-instelling voor de Databricks-extensie voor Visual Studio Code voor meer informatie.
Terraform
Voor bewerkingen op accountniveau voor standaardverificatie:
provider "databricks" {
alias = "accounts"
}
Voor directe configuratie (vervang de retrieve
tijdelijke aanduidingen door uw eigen implementatie om de waarden op te halen uit de console of een ander configuratiearchief, zoals HashiCorp Vault. Zie ook Kluisprovider). In dit geval is https://accounts.azuredatabricks.net
de URL van de Azure Databricks-accountconsole:
provider "databricks" {
alias = "accounts"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Voor bewerkingen op werkruimteniveau voor standaardverificatie:
provider "databricks" {
alias = "workspace"
}
Voor directe configuratie (vervang de retrieve
tijdelijke aanduidingen door uw eigen implementatie om de waarden op te halen uit de console of een ander configuratiearchief, zoals HashiCorp Vault. Zie ook Kluisprovider). In dit geval is de host de URL van Azure Databricks per werkruimte, bijvoorbeeldhttps://adb-1234567890123456.7.azuredatabricks.net
:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Zie Verificatie voor meer informatie over verificatie met de Databricks Terraform-provider.
Python
Gebruik voor bewerkingen op accountniveau het volgende voor standaardverificatie:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
Voor directe configuratie gebruikt u het volgende, waarbij u de retrieve
tijdelijke aanduidingen vervangt door uw eigen implementatie, om de waarden op te halen uit de console of een ander configuratiearchief, zoals Azure KeyVault. In dit geval is https://accounts.azuredatabricks.net
de URL van de Azure Databricks-accountconsole:
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()
)
# ...
Voor bewerkingen op werkruimteniveau, met name voor standaardverificatie:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
Vervang voor directe configuratie de retrieve
tijdelijke aanduidingen door uw eigen implementatie om de waarden op te halen uit de console of een ander configuratiearchief, zoals Azure KeyVault. In dit geval is de host de URL van Azure Databricks per werkruimte, bijvoorbeeldhttps://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()
)
# ...
Zie voor meer informatie over verificatie met Databricks-hulpprogramma's en SDK's die gebruikmaken van Python en geïntegreerde Verificatie voor Databricks-clients implementeren:
- De Databricks Connect-client instellen voor Python
- De Databricks SDK voor Python verifiëren met uw Azure Databricks-account of -werkruimte
Notitie
De Databricks-extensie voor Visual Studio Code maakt gebruik van Python, maar heeft nog geen OAuth M2M-verificatie geïmplementeerd.
Java
Voor bewerkingen op werkruimteniveau voor standaardverificatie:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
Voor directe configuratie (vervang de retrieve
tijdelijke aanduidingen door uw eigen implementatie om de waarden op te halen uit de console of een ander configuratiearchief, zoals Azure KeyVault). In dit geval is de host de URL van Azure Databricks per werkruimte, bijvoorbeeldhttps://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);
// ...
Zie voor meer informatie over verificatie met Databricks-hulpprogramma's en SDK's die gebruikmaken van Java en geïntegreerde Verificatie van Databricks-clients implementeren:
- De Databricks Connect-client voor Scala instellen (de Databricks Connect-client voor Scala maakt gebruik van de meegeleverde Databricks SDK voor Java voor verificatie)
- De Databricks SDK voor Java verifiëren met uw Azure Databricks-account of -werkruimte
Go
Voor bewerkingen op accountniveau voor standaardverificatie:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
Voor directe configuratie (vervang de retrieve
tijdelijke aanduidingen door uw eigen implementatie om de waarden op te halen uit de console of een ander configuratiearchief, zoals Azure KeyVault). In dit geval is https://accounts.azuredatabricks.net
de URL van de Azure Databricks-accountconsole:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
Voor bewerkingen op werkruimteniveau voor standaardverificatie:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
Voor directe configuratie (vervang de retrieve
tijdelijke aanduidingen door uw eigen implementatie om de waarden op te halen uit de console of een ander configuratiearchief, zoals Azure KeyVault). In dit geval is de host de URL van Azure Databricks per werkruimte, bijvoorbeeldhttps://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(),
}))
// ...
Zie De Databricks-SDK voor Go verifiëren met uw Azure Databricks-account of -werkruimte voor meer informatie over verificatie met Databricks-hulpprogramma's en SDK's die gebruikmaken van Go en die geïntegreerde Verificatie van de Databricks-client implementeren.
Toegangstokens handmatig genereren en gebruiken voor OAuth M2M-verificatie
Azure Databricks-hulpprogramma's en SDK's die de geïntegreerde verificatiestandaard van de Databricks-client implementeren, genereert, vernieuwt en gebruikt azure Databricks OAuth-toegangstokens namens u indien nodig voor OAuth M2M-verificatie.
Databricks raadt u aan om geïntegreerde clientverificatie te gebruiken, maar als u azure Databricks OAuth-toegangstokens handmatig moet genereren, vernieuwen of gebruiken, volgt u de instructies in deze sectie.
Gebruik de client-id en het OAuth-geheim van de service-principal om een OAuth-toegangstoken aan te vragen om te verifiëren bij zowel REST API's op accountniveau als REST API's op werkruimteniveau. Het toegangstoken verloopt over een uur. U moet een nieuw OAuth-toegangstoken aanvragen na de vervaldatum. Het bereik van het OAuth-toegangstoken is afhankelijk van het niveau van waaruit u het token maakt. U kunt als volgt een token maken op accountniveau of op werkruimteniveau:
- Als u REST API's op account- en werkruimteniveau wilt aanroepen binnen accounts en werkruimten waartoe de service-principal toegang heeft, genereert u handmatig een toegangstoken op accountniveau.
- Als u REST API's wilt aanroepen binnen slechts één van de werkruimten waartoe de service-principal toegang heeft, genereert u handmatig een toegangstoken op werkruimteniveau voor alleen die werkruimte.
Handmatig een toegangstoken op accountniveau genereren
Een OAuth-toegangstoken dat is gemaakt op basis van het accountniveau, kan worden gebruikt voor Databricks REST API's in het account en in alle werkruimten waar de service-principal toegang toe heeft.
Meld u als accountbeheerder aan bij de accountconsole.
Klik op de pijl-omlaag naast uw gebruikersnaam in de rechterbovenhoek.
Kopieer uw account-id.
Maak de eindpunt-URL van het token door de volgende URL te vervangen door
<my-account-id>
de account-id die u hebt gekopieerd.https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
Gebruik een client zoals
curl
het aanvragen van een OAuth-toegangstoken met de eindpunt-URL van het token, de client-id van de service-principal (ook wel een toepassings-id genoemd) en het OAuth-geheim van de service-principal dat u hebt gemaakt. Hetall-apis
bereik vraagt een OAuth-toegangstoken aan dat kan worden gebruikt voor toegang tot alle Databricks REST API's waartoe de service-principal toegang heeft gekregen.- Vervang door
<token-endpoint-URL>
de url van het voorgaande tokeneindpunt. - Vervang door
<client-id>
de client-id van de service-principal, die ook wel een toepassings-id wordt genoemd. - Vervang
<client-secret>
door het OAuth-geheim van de service-principal dat u hebt gemaakt.
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'
Hiermee wordt een antwoord gegenereerd dat vergelijkbaar is met:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
Kopieer het
access_token
uit het antwoord.- Vervang door
Handmatig een toegangstoken op werkruimteniveau genereren
Een OAuth-toegangstoken dat is gemaakt op werkruimteniveau, heeft alleen toegang tot REST API's in die werkruimte, zelfs als de service-principal een accountbeheerder is of lid is van andere werkruimten.
Bouw de eindpunt-URL van het token door de werkruimte-URL van uw Azure Databricks-implementatie te vervangen
https://<databricks-instance>
:https://<databricks-instance>/oidc/v1/token
Gebruik een client zoals
curl
het aanvragen van een OAuth-toegangstoken met de eindpunt-URL van het token, de client-id van de service-principal (ook wel een toepassings-id genoemd) en het OAuth-geheim van de service-principal dat u hebt gemaakt. Hetall-apis
bereik vraagt een OAuth-toegangstoken aan dat kan worden gebruikt voor toegang tot alle Databricks REST API's waartoe de service-principal toegang heeft gekregen binnen de werkruimte waaruit u het token aanvraagt.- Vervang door
<token-endpoint-URL>
de url van het voorgaande tokeneindpunt. - Vervang door
<client-id>
de client-id van de service-principal, die ook wel een toepassings-id wordt genoemd. - Vervang
<client-secret>
door het OAuth-geheim van de service-principal dat u hebt gemaakt.
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'
Hiermee wordt een antwoord gegenereerd dat vergelijkbaar is met:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
Kopieer het
access_token
uit het antwoord.- Vervang door
Een Databricks REST API aanroepen
U kunt nu het OAuth-toegangstoken gebruiken om te verifiëren bij REST API's op azure Databricks-accountniveau en REST API's op werkruimteniveau. De service-principal moet een accountbeheerder zijn om REST API's op accountniveau aan te roepen.
U kunt het token opnemen in de header met behulp van Bearer
verificatie. U kunt deze benadering gebruiken met curl
of elke client die u bouwt.
Voorbeeld van REST API-aanvraag op accountniveau
In dit voorbeeld wordt verificatie gebruikt Bearer
om een lijst op te halen met alle werkruimten die zijn gekoppeld aan een account.
- Vervang
<oauth-access-token>
door het OAuth-toegangstoken van de service-principal dat u in de vorige stap hebt gekopieerd. - Vervang door
<account-id>
uw account-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'
Voorbeeld van REST API-aanvraag op werkruimteniveau
In dit voorbeeld wordt verificatie gebruikt Bearer
om alle beschikbare clusters in de opgegeven werkruimte weer te geven.
- Vervang
<oauth-access-token>
door het OAuth-toegangstoken van de service-principal dat u in de vorige stap hebt gekopieerd. - Vervang door
<workspace-URL>
de URL van uw basiswerkruimte, die het formulier heeft dat vergelijkbaar is metdbc-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'
Aanvullende bronnen
- Service-principals
- Overzicht van het Databricks-identiteitsmodel
- Aanvullende informatie over verificatie en toegangsbeheer