Delen via


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.

  1. Meld u als werkruimtebeheerder aan bij de Azure Databricks-werkruimte.
  2. Klik op uw gebruikersnaam in de bovenste balk van de Azure Databricks-werkruimte en selecteer Instellingen.
  3. Klik op het tabblad Identiteit en toegang .
  4. Klik naast Service-principals op Beheren.
  5. Klik op Service-principal toevoegen.
  6. Klik op de vervolgkeuzepijl in het zoekvak en klik vervolgens op Nieuwe toevoegen.
  7. Kies onder Beheer de optie Databricks beheerd.
  8. Voer een naam in voor de service-principal.
  9. 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

  1. Klik op de naam van uw service-principal om de bijbehorende detailpagina te openen.
  2. 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.
  3. 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.

  1. Klik op de detailpagina van uw service-principal op het tabblad Geheimen .

  2. Klik onder OAuth-geheimen op Geheim genereren.

    OAuth-geheim genereren vanuit werkruimte

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

  1. Meld u als accountbeheerder aan bij de accountconsole.

  2. Klik op Pictogram gebruikersbeheer van accountconsole Gebruikersbeheer.

  3. Selecteer uw service-principal op het tabblad Service-principals .

  4. Klik onder OAuth-geheimen op Geheim genereren.

    OAuth-geheim genereren vanuit werkruimte

  5. 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, bijvoorbeeld https://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:

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.netde 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 de cluster_id omgevingsvariabele in uw profiel in op uw URL per werkruimte, bijvoorbeeld https://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, bijvoorbeeld https://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:

  1. Stel de waarden in uw .databrickscfg bestand in voor bewerkingen op werkruimteniveau van Azure Databricks, zoals opgegeven in de sectie Profiel van dit artikel.
  2. Klik in het deelvenster Configuratie van de Databricks-extensie voor Visual Studio Code op Databricks configureren.
  3. Voer in het opdrachtenpalet voor Databricks Host uw URL per werkruimte in, bijvoorbeeld https://adb-1234567890123456.7.azuredatabricks.neten druk Enterop .
  4. 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.netde 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.netde 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:

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:

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.netde 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:

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.

  1. Meld u als accountbeheerder aan bij de accountconsole.

  2. Klik op de pijl-omlaag naast uw gebruikersnaam in de rechterbovenhoek.

  3. Kopieer uw account-id.

  4. 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
    
  5. 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. Het all-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.

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.

  1. Bouw de eindpunt-URL van het token door de werkruimte-URL van uw Azure Databricks-implementatie te vervangenhttps://<databricks-instance>:

    https://<databricks-instance>/oidc/v1/token
    
  2. 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. Het all-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.

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

Aanvullende bronnen