Autentisera åtkomst till Azure Databricks med tjänstens huvudnamn med OAuth (OAuth M2M)
Den här artikeln beskriver hur du skapar ett Huvudnamn för Azure Databricks-tjänsten och använder den för att autentisera till en målentitet med OAuth.
Steg 1: Skapa ett huvudnamn för tjänsten
Kontoadministratörer och arbetsyteadministratörer kan skapa ett tjänsthuvudnamn. I det här steget beskrivs hur du skapar ett huvudnamn för tjänsten på en arbetsyta. Information om hur du använder kontokonsolen finns i Hantera tjänstens huvudnamn i ditt konto.
Du kan också skapa ett Microsoft Entra ID-hanterat tjänsthuvudnamn och lägga till det i Azure Databricks. Mer information finns i Databricks och Microsoft Entra ID-tjänstens huvudnamn.
- Som arbetsyteadministratör loggar du in på Azure Databricks-arbetsytan.
- Klicka på ditt användarnamn i det övre fältet på Azure Databricks-arbetsytan och välj Inställningar.
- Klicka på fliken Identitet och åtkomst .
- Bredvid Tjänstens huvudnamn klickar du på Hantera.
- Klicka på Lägg till tjänstens huvudnamn.
- Klicka på listrutepilen i sökrutan och klicka sedan på Lägg till ny.
- Under Hantering väljer du Hanterad Databricks.
- Ange ett namn för tjänstens huvudnamn.
- Klicka på Lägg till.
Tjänstens huvudnamn läggs till i både din arbetsyta och Azure Databricks-kontot.
Steg 2: Tilldela behörigheter till tjänstens huvudnamn
- Klicka på namnet på tjänstens huvudnamn för att öppna informationssidan.
- På fliken Konfigurationer markerar du kryssrutan bredvid varje berättigande som du vill att tjänstens huvudnamn ska ha för den här arbetsytan och klickar sedan på Uppdatera.
- På fliken Behörigheter beviljar du åtkomst till alla Azure Databricks-användare, tjänsthuvudnamn och grupper som du vill hantera och använda tjänstens huvudnamn. Se Hantera roller på ett huvudnamn för tjänsten.
Steg 3: Skapa en OAuth-hemlighet för tjänstens huvudnamn
Innan du kan använda OAuth för att autentisera till Azure Databricks måste du först skapa en OAuth-hemlighet som kan användas för att generera OAuth-åtkomsttoken. Ett huvudnamn för tjänsten kan ha upp till fem OAuth-hemligheter. Kontoadministratörer och arbetsyteadministratörer kan skapa en OAuth-hemlighet för tjänstens huvudnamn.
På informationssidan för tjänstens huvudnamn klickar du på fliken Hemligheter .
Under OAuth-hemligheter klickar du på Generera hemlighet.
Kopiera det visade hemlighets - och klient-ID:t och klicka sedan på Klar.
Hemligheten avslöjas bara en gång under skapandet. Klient-ID:t är samma som tjänstens huvudnamns program-ID.
Kontoadministratörer kan också generera en OAuth-hemlighet från informationssidan för tjänstens huvudnamn i kontokonsolen.
Klicka på Användarhantering.
På fliken Tjänstens huvudnamn väljer du tjänstens huvudnamn.
Under OAuth-hemligheter klickar du på Generera hemlighet.
Kopiera det visade hemlighets - och klient-ID:t och klicka sedan på Klar.
Kommentar
För att tjänstens huvudnamn ska kunna använda kluster eller SQL-lager måste du ge tjänstens huvudnamn åtkomst till dem. Se Beräkningsbehörigheter eller Hantera ett SQL-lager.
Steg 4: Använda OAuth M2M-autentisering
Om du vill använda OAuth M2M-autentisering måste du ange följande associerade miljövariabler, .databrickscfg
fält, Terraform-fält eller Config
fält:
- Azure Databricks-värden, som anges som
https://accounts.azuredatabricks.net
för kontoåtgärder eller mål-URL per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
för arbetsyteåtgärder. - Azure Databricks-konto-ID för Azure Databricks-kontoåtgärder.
- Klient-ID för tjänstens huvudnamn.
- Tjänstens huvudhemlighet.
Om du vill utföra OAuth M2M-autentisering integrerar du följande i koden baserat på det deltagande verktyget eller SDK:n:
Environment
Information om hur du använder miljövariabler för en specifik Azure Databricks-autentiseringstyp med ett verktyg eller SDK finns i Autentisera åtkomst till Azure Databricks-resurser eller verktygets eller SDK:s dokumentation. Se även Miljövariabler och fält för klient enhetlig autentisering och Standardmetoder för klient enhetlig autentisering.
För åtgärder på kontonivå anger du följande miljövariabler:
DATABRICKS_HOST
, ange till Azure Databricks-kontokonsolens URL,https://accounts.azuredatabricks.net
.DATABRICKS_ACCOUNT_ID
DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
För åtgärder på arbetsytans nivå anger du följande miljövariabler:
DATABRICKS_HOST
anger du till URL:en för Azure Databricks per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Profil
Skapa eller identifiera en Azure Databricks-konfigurationsprofil med följande fält i .databrickscfg
filen. Om du skapar profilen ersätter du platshållarna med lämpliga värden. Information om hur du använder profilen med ett verktyg eller SDK finns i Autentisera åtkomst till Azure Databricks-resurser eller verktygets eller SDK:s dokumentation. Se även Miljövariabler och fält för klient enhetlig autentisering och Standardmetoder för klient enhetlig autentisering.
För åtgärder på kontonivå anger du följande värden i .databrickscfg
filen. I det här fallet är https://accounts.azuredatabricks.net
Azure Databricks-kontokonsolens URL:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
För åtgärder på arbetsytenivå anger du följande värden i .databrickscfg
filen. I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel 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>
CLI
Gör något av följande för Databricks CLI:
- Ange miljövariablerna enligt beskrivningen i avsnittet "Miljö".
- Ange värdena i
.databrickscfg
filen enligt beskrivningen i avsnittet Profil i den här artikeln.
Miljövariabler har alltid företräde framför värden i filen .databrickscfg
.
Se även OAuth-autentisering från dator till dator (M2M).
Anslut
Kommentar
OAuth M2M-autentisering stöds i följande Databricks Connect-versioner:
- För Python, Databricks Connect för Databricks Runtime 14.0 och senare.
- För Scala, Databricks Connect för Databricks Runtime 13.3 LTS och senare. Databricks SDK för Java som ingår i Databricks Connect för Databricks Runtime 13.3 LTS och senare måste uppgraderas till Databricks SDK för Java 0.17.0 eller senare.
För Databricks Connect kan du göra något av följande:
- Ange värdena i
.databrickscfg
filen för åtgärder på Azure Databricks-arbetsytenivå enligt beskrivningen i den här artikelns avsnitt "Profil". Angecluster_id
även miljövariabeln i din profil till url:en per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
. - Ange miljövariablerna för åtgärder på Azure Databricks-arbetsytenivå enligt beskrivningen i den här artikelns "Miljö"-avsnitt. Ange
DATABRICKS_CLUSTER_ID
även miljövariabeln till url:en per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
.
Värden i .databrickscfg
filen har alltid företräde framför miljövariabler.
Information om hur du initierar Databricks Connect-klienten med dessa miljövariabler eller värden i filen finns i .databrickscfg
Beräkningskonfiguration för Databricks Connect.
VS Code
Gör följande för Databricks-tillägget för Visual Studio Code:
- Ange värdena i
.databrickscfg
filen för åtgärder på Azure Databricks-arbetsytenivå enligt beskrivningen i den här artikelns avsnitt "Profil". - I fönstret Konfiguration i Databricks-tillägget för Visual Studio Code klickar du på Konfigurera Databricks.
- I kommandopaletten för Databricks Host anger du url:en per arbetsyta, till exempel
https://adb-1234567890123456.7.azuredatabricks.net
och trycker sedan påEnter
. - I kommandopaletten väljer du målprofilens namn i listan för din URL.
Mer information finns i Autentiseringskonfiguration för Databricks-tillägget för Visual Studio Code.
Terraform
För åtgärder på kontonivå för standardautentisering:
provider "databricks" {
alias = "accounts"
}
För direkt konfiguration (ersätt retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel HashiCorp Vault. Se även Valvprovider). I det här fallet är https://accounts.azuredatabricks.net
Azure Databricks-kontokonsolens URL:
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 åtgärder på arbetsytenivå för standardautentisering:
provider "databricks" {
alias = "workspace"
}
För direkt konfiguration (ersätt retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel HashiCorp Vault. Se även Valvprovider). I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net
:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Mer information om autentisering med Databricks Terraform-providern finns i Autentisering.
Python
För åtgärder på kontonivå använder du följande för standardautentisering:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
För direkt konfiguration använder du följande och ersätter retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault. I det här fallet är https://accounts.azuredatabricks.net
Azure Databricks-kontokonsolens URL:
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 åtgärder på arbetsytenivå, särskilt standardautentisering:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
För direkt konfiguration ersätter du retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault. I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel 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()
)
# ...
Mer information om autentisering med Databricks-verktyg och SDK:er som använder Python och implementerar enhetlig autentisering med Databricks-klienten finns i:
- Konfigurera Databricks Connect-klienten för Python
- Autentisera Databricks SDK för Python med ditt Azure Databricks-konto eller din arbetsyta
Kommentar
Databricks-tillägget för Visual Studio Code använder Python men har ännu inte implementerat OAuth M2M-autentisering.
Java
För åtgärder på arbetsytenivå för standardautentisering:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
För direkt konfiguration (ersätt retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault). I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel 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);
// ...
Mer information om autentisering med Databricks-verktyg och SDK:er som använder Java och implementerar enhetlig autentisering för Databricks-klienten finns i:
- Konfigurera Databricks Connect-klienten för Scala (Databricks Connect-klienten för Scala använder det inkluderade Databricks SDK för Java för autentisering)
- Autentisera Databricks SDK för Java med ditt Azure Databricks-konto eller din arbetsyta
Go
För åtgärder på kontonivå för standardautentisering:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
För direkt konfiguration (ersätt retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault). I det här fallet är https://accounts.azuredatabricks.net
Azure Databricks-kontokonsolens URL:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
För åtgärder på arbetsytenivå för standardautentisering:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
För direkt konfiguration (ersätt retrieve
platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault). I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel 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(),
}))
// ...
Mer information om autentisering med Databricks-verktyg och SDK:er som använder Go och som implementerar enhetlig autentisering för Databricks-klienten finns i Autentisera Databricks SDK för Go med ditt Azure Databricks-konto eller din arbetsyta.
Generera och använda åtkomsttoken manuellt för OAuth M2M-autentisering
Azure Databricks-verktyg och SDK:er som implementerar Databricks-klientens enhetliga autentiseringsstandard genererar, uppdaterar och använder azure Databricks OAuth-åtkomsttoken åt dig efter behov för OAuth M2M-autentisering.
Databricks rekommenderar att du använder klientad autentisering, men om du måste generera, uppdatera eller använda Azure Databricks OAuth-åtkomsttoken manuellt följer du anvisningarna i det här avsnittet.
Använd tjänstens huvudnamns klient-ID och OAuth-hemlighet för att begära en OAuth-åtkomsttoken för att autentisera till både REST-API:er på kontonivå och REST-API:er på arbetsytenivå. Åtkomsttoken upphör att gälla om en timme. Du måste begära en ny OAuth-åtkomsttoken efter förfallodatumet. Omfånget för OAuth-åtkomsttoken beror på vilken nivå du skapar token från. Du kan skapa en token på antingen kontonivå eller arbetsytenivå enligt följande:
- Om du vill anropa REST-API:er på kontonivå och arbetsytenivå inom konton och arbetsytor som tjänstens huvudnamn har åtkomst till genererar du manuellt en åtkomsttoken på kontonivå.
- Om du bara vill anropa REST-API:er inom en av de arbetsytor som tjänstens huvudnamn har åtkomst till genererar du manuellt en åtkomsttoken på arbetsytans nivå för endast den arbetsytan.
Generera en åtkomsttoken på kontonivå manuellt
En OAuth-åtkomsttoken som skapats från kontonivån kan användas mot Databricks REST-API:er i kontot och på alla arbetsytor som tjänstens huvudnamn har åtkomst till.
Klicka på nedåtpilen bredvid ditt användarnamn i det övre högra hörnet.
Kopiera ditt konto-ID.
Konstruera tokenslutpunkts-URL:en genom att
<my-account-id>
ersätta i följande URL med det konto-ID som du kopierade.https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
Använd en klient, till exempel
curl
för att begära en OAuth-åtkomsttoken med tokenslutpunktens URL, tjänstens huvudnamns klient-ID (även kallat program-ID) och tjänstens huvudnamns OAuth-hemlighet som du skapade. Omfångetall-apis
begär en OAuth-åtkomsttoken som kan användas för att komma åt alla Databricks REST-API:er som tjänstens huvudnamn har beviljats åtkomst till.- Ersätt
<token-endpoint-URL>
med den föregående tokenslutpunkts-URL:en. - Ersätt
<client-id>
med tjänstens huvudnamns klient-ID, som även kallas program-ID. - Ersätt
<client-secret>
med tjänstens huvudnamns OAuth-hemlighet som du skapade.
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'
Detta genererar ett svar som liknar:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
access_token
Kopiera från svaret.- Ersätt
Generera en åtkomsttoken på arbetsytans nivå manuellt
En OAuth-åtkomsttoken som skapats från arbetsytenivån kan bara komma åt REST-API:er på den arbetsytan, även om tjänstens huvudnamn är kontoadministratör eller är medlem i andra arbetsytor.
Skapa tokenslutpunkts-URL:en genom att
https://<databricks-instance>
ersätta med arbetsytans URL för din Azure Databricks-distribution:https://<databricks-instance>/oidc/v1/token
Använd en klient, till exempel
curl
för att begära en OAuth-åtkomsttoken med tokenslutpunktens URL, tjänstens huvudnamns klient-ID (även kallat program-ID) och tjänstens huvudnamns OAuth-hemlighet som du skapade. Omfångetall-apis
begär en OAuth-åtkomsttoken som kan användas för att komma åt alla Databricks REST-API:er som tjänstens huvudnamn har beviljats åtkomst till på arbetsytan som du begär token från.- Ersätt
<token-endpoint-URL>
med den föregående tokenslutpunkts-URL:en. - Ersätt
<client-id>
med tjänstens huvudnamns klient-ID, som även kallas program-ID. - Ersätt
<client-secret>
med tjänstens huvudnamns OAuth-hemlighet som du skapade.
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'
Detta genererar ett svar som liknar:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
access_token
Kopiera från svaret.- Ersätt
Anropa ett Databricks REST API
Nu kan du använda OAuth-åtkomsttoken för att autentisera till REST-API:er på Azure Databricks-kontonivå och REST-API:er på arbetsytenivå. Tjänstens huvudnamn måste vara kontoadministratör för att anropa REST-API:er på kontonivå.
Du kan inkludera token i huvudet med hjälp av Bearer
autentisering. Du kan använda den här metoden med curl
eller någon klient som du skapar.
Exempel på REST API-begäran på kontonivå
I det här exemplet används Bearer
autentisering för att hämta en lista över alla arbetsytor som är associerade med ett konto.
- Ersätt
<oauth-access-token>
med tjänstens huvudnamns OAuth-åtkomsttoken som du kopierade i föregående steg. - Ersätt
<account-id>
med ditt 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'
Exempel på REST API-begäran på arbetsytenivå
I det här exemplet används Bearer
autentisering för att lista alla tillgängliga kluster på den angivna arbetsytan.
- Ersätt
<oauth-access-token>
med tjänstens huvudnamns OAuth-åtkomsttoken som du kopierade i föregående steg. - Ersätt
<workspace-URL>
med din grundläggande arbetsyte-URL, som har formuläret som liknardbc-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'
Ytterligare resurser
- Tjänstens huvudnamn
- Översikt över Databricks-identitetsmodellen
- Ytterligare information om autentisering och åtkomstkontroll