Auktorisera interaktiv åtkomst till Azure Databricks-resurser med ett användarkonto med OAuth
Det här avsnittet innehåller steg och information för att auktorisera åtkomst till Azure Databricks-resurser när du interaktivt kör Azure Databricks CLI-kommandon eller anropar Azure Databricks REST-API:er.
Azure Databricks använder OAuth som det föredragna protokollet för användarauktorisering och autentisering när du interagerar med Azure Databricks-resurser utanför användargränssnittet. Azure Databricks tillhandahåller också verktyget för enhetlig klientautentisering för att automatisera uppdateringen av åtkomsttoken som genereras som en del av OAuths autentiseringsmetod.
Mer information på hög nivå finns i Auktorisera åtkomst till Azure Databricks-resurser.
Vilka alternativ har jag för auktorisering och autentisering vid åtkomst till Azure Databricks-resurser?
I det här avsnittet refererar auktorisering till protokollet (OAuth) som används för att förhandla om åtkomst till specifika Azure Databricks-resurser via delegering. Authentication refererar till den mekanism med vilken autentiseringsuppgifter representeras, överförs och verifieras– vilket i det här fallet är åtkomsttoken.
Azure Databricks använder OAuth 2.0-baserad auktorisering för att ge åtkomst till Azure Databricks-konto- och arbetsyteresurser från kommandoraden eller koden för en användare med behörighet att komma åt dessa resurser. När en användare först loggar in och godkänner OAuth-autentiseringsbegäran ges en OAuth-token till det deltagande verktyget eller SDK:n för att utföra tokenbaserad autentisering för användarens räkning från och med den tiden. OAuth-åtkomsttoken har en livslängd på en timme, varefter det aktuella verktyget eller SDK:n gör ett automatiskt bakgrundsförsök för att hämta en ny token som också är giltig i en timme.
Azure Databricks stöder två sätt att auktorisera åtkomst för ett användarkonto med OAuth:
- Mestadels automatiskt, med hjälp av stöd för enhetlig klientautentisering i Databricks. Använd den här förenklade metoden om du använder specifika Azure Databricks SDK:er (till exempel Databricks Terraform SDK) och verktyg. Verktyg och SDK:er som stöds visas i Databricks enhetlig klientautentisering.
- Manuellt genom att direkt generera ett OAuth-kodverifierare/utmaningspar och en auktoriseringskod, och använda dem för att skapa den första OAuth-token som du anger i konfigurationen. Använd den här metoden när du inte använder ett API som stöds av databricks enhetlig klientautentisering. För mer information se: Generera och använd åtkomsttokener manuellt för användartill-maskin-autentisering (U2M) för OAuth.
Interaktiv användarauktorisering med databricks-enhetlig klientautentisering
Kommentar
Innan du börjar konfigurera auktoriseringen granskar du ACL-behörigheterna för den specifika kategori av åtgärder som du ska utföra på arbetsyteobjekt och avgör om ditt konto har den åtkomstnivå som du behöver. Mer information finns i Åtkomstkontrollistor.
Om du vill utföra OAuth-auktorisering med Azure Databricks SDK:er och verktyg som stöder enhetlig klientautentisering integrerar du följande i koden:
Environment
Information om hur du använder miljövariabler för en specifik Azure Databricks-autentiseringstyp med ett verktyg eller SDK finns i Auktorisera å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
, ställs in till värdet på din Azure Databricks-kontokonsol-URL,https://accounts.azuredatabricks.net
. DATABRICKS_ACCOUNT_ID
Ange följande miljövariabler för åtgärder på arbetsytenivå:
-
DATABRICKS_HOST
anger du värdet för url:en för Azure Databricks per arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
.
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. Om du vill använda profilen med ett verktyg eller SDK kan du läsa Auktorisera å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 filen .databrickscfg
. 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>
För åtgärder på arbetsytenivåanger du följande värden i filen .databrickscfg
. 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>
CLI
För Databricks CLI kör du databricks auth login
kommandot med följande alternativ:
- För Azure Databricks-åtgärder på kontonivå,
--host <account-console-url> --account-id <account-id>
. - För åtgärder på Azure Databricks-arbetsytenivå,
--host <workspace-url>
.
När du har kört det här kommandot följer du anvisningarna i webbläsaren för att logga in på ditt Azure Databricks-konto eller din arbetsyta.
Mer information finns i OAuth-auktorisering med Databricks CLI-.
Anslut
Kommentar
OAuth U2M-autentisering stöds i följande Databricks Connect-versioner:
- För Python, Databricks Connect för Databricks Runtime 13.1 och senare.
- För Scala, Databricks Connect för Databricks Runtime 13.3 LTS och senare.
För Databricks Connect kan du göra något av följande:
- Ange värdena i din
.databrickscfg
-fil för Azure Databricks åtgärder på arbetsytenivå enligt beskrivningen i avsnittet Profil i den här artikeln. Ställ även in miljövariabelncluster_id
i din profil till URL:en för för varje arbetsyta, till exempelhttps://adb-1234567890123456.7.azuredatabricks.net
. - Ange miljövariablerna för Azure Databricks åtgärder på arbetsytenivå enligt beskrivningen i avsnittet Miljö i den här artikeln. Ställ också in miljövariabeln
DATABRICKS_CLUSTER_ID
till din URL för 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 din .databrickscfg
-fil finns i Compute-konfiguration för Databricks Connect.
VS Code
Gör följande för Databricks-tillägget för Visual Studio Code:
- I fönstret Konfiguration 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
. - Välj OAuth (användare till dator).
- Slutför autentisera med ditt Azure Databricks-konto och ge åtkomst till alla API:er genom att följa anvisningarna på skärmen i webbläsaren.
Mer information finns i OAuth U2M-auktorisering med Databricks CLI-.
Terraform
För både och åtgärder på arbetsytenivå måste du använda Databricks CLI för att köra följande kommando innan du tillämpar Terraform-konfigurationen. Det här kommandot instruerar Databricks CLI att generera och cacha den nödvändiga OAuth-token i sökvägen .databricks/token-cache.json
inom din användares hemmapp på din dator.
Konfigurera för databricks-åtgärder på kontonivå
databricks auth login --host <account-console-url> --account-id <account-id>
Ersätt följande platshållare:
- Ersätt
<account-console-url>
med värdethttps://accounts.azuredatabricks.net
. (Ange inte värdet för din Azure Databricks--arbetsyta URL.) - Ersätt
<account-id>
med värdet för ditt Azure Databricks-konto. Se Hitta ditt konto-ID.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fälten host
och account_id
redan har angetts kan du ersätta --host <account-console-url> --account-id <account-id>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara kontots inloggnings-URL och konto-ID som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Terraform-kod som liknar något av följande kodfragment:
provider "databricks" {
alias = "account"
}
För direkt konfiguration anger du provider
med hjälp av följande konfiguration. Ersätt retrieve-
platshållare 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 Vault Provider). I det här exemplet kan du ange account_id
till ditt Azure Databricks-konto-konsolens URL.
provider "databricks" {
alias = "account"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
}
Konfigurera för databricks-åtgärder på arbetsytenivå
databricks auth login --host <workspace-url>
Ersätt platshållaren <workspace-url>
med mål-URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net
.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fältet host
redan har angetts kan du ersätta --host <workspace-url>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara arbetsytans URL som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Terraform-kod som liknar något av följande kodfragment:
provider "databricks" {
alias = "workspace"
}
För direkt konfiguration (ersätt retrieve
platshållare 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 Vault Provider). 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>
}
Mer information om autentisering med Databricks Terraform-providern finns i Autentisering.
Python
För både åtgärder på kontonivå och arbetsytenivå måste du använda Databricks CLI för att köra följande kommando innan du kör Python-koden. Det här kommandot instruerar Databricks CLI att generera och cacha den nödvändiga OAuth-token i sökvägen .databricks/token-cache.json
inom din användares hemmapp på din dator.
Konfigurera för databricks-åtgärder på kontonivå
databricks auth login --host <account-console-url> --account-id <account-id>
Ersätt följande platshållare:
- Ersätt
<account-console-url>
med värdethttps://accounts.azuredatabricks.net
. (Ange inte värdet för din Azure Databricks--arbetsyta URL.) - Ersätt
<account-id>
med värdet för ditt Azure Databricks-konto. Se Hitta ditt konto-ID.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fälten host
och account_id
redan har angetts kan du ersätta --host <account-console-url> --account-id <account-id>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara kontots inloggnings-URL och konto-ID som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Python-kod som liknar något av följande kodfragment:
För standardauktorisering med databricks enhetlig klientautentisering:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
För direkt konfiguration (ersätt retrieve
platshållare 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 = retrieveAccountConsoleUrl(),
account_id = retrieveAccountId()
)
# ...
Konfigurera för databricks-åtgärder på arbetsytenivå
databricks auth login --host <worskpace-url>
Ersätt platshållaren <workspace-url>
med mål-URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net
.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fältet host
redan har angetts kan du ersätta --host <workspace-url>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara arbetsytans URL som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Python-kod som liknar något av följande kodfragment:
För standardauktorisering med databricks enhetlig klientautentisering:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
För direkt konfiguration (ersätt retrieve
platshållare 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 = retrieveWorkspaceUrl())
# ...
Mer information om autentisering med Databricks-verktyg och SDK:er som använder Python och som implementerar enhetlig autentisering med Databricks-klienten finns i:
- Konfigurera Databricks Connect-klienten för Python
- Konfigurera auktorisering för Databricks-tillägget för Visual Studio Code
- Autentisera Databricks SDK för Python med ditt Azure Databricks-konto eller din arbetsyta
Java
För både åtgärder på kontonivå och arbetsytenivå måste du använda Databricks CLI för att köra följande kommando innan du kör Java-koden. Det här kommandot instruerar Databricks CLI att generera och cachelagra nödvändig OAuth-token i sökvägen .databricks/token-cache.json
i din användares hemkatalog på datorn.
Konfigurera för databricks-åtgärder på kontonivå
databricks auth login --host <account-console-url> --account-id <account-id>
Ersätt följande platshållare:
- Ersätt
<account-console-url>
med värdethttps://accounts.azuredatabricks.net
. (Ange inte värdet för din Azure Databricks--arbetsyta URL.) - Ersätt
<account-id>
med värdet för ditt Azure Databricks-konto. Se Hitta ditt konto-ID.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fälten host
och account_id
redan har angetts kan du ersätta --host <account-console-url> --account-id <account-id>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara kontots inloggnings-URL och konto-ID som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Java-kod som liknar något av följande kodfragment:
För standardauktorisering med databricks enhetlig klientautentisering:
import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...
För direkt konfiguration (ersätt retrieve
platshållare 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 com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
.setHost(retrieveAccountConsoleUrl())
.setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...
Konfigurera för databricks-åtgärder på arbetsytenivå
För åtgärder på arbetsytenivåbör du först använda Databricks CLI för att köra följande kommando innan du kör Java-koden. Det här kommandot instruerar Databricks CLI att generera och cacha den nödvändiga OAuth-token i sökvägen .databricks/token-cache.json
inom din användares hemmapp på din dator.
databricks auth login --host <worskpace-url>
Ersätt platshållaren <workspace-url>
med mål-URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net
.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fältet host
redan har angetts kan du ersätta --host <workspace-url>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara arbetsytans URL som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Java-kod som liknar något av följande kodfragment:
För standardauktorisering med databricks enhetlig klientautentisering:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
För direkt konfiguration (ersätt retrieve
platshållare 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())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...
Mer information om att auktorisera och autentisera med Databricks-verktyg och SDK:er som använder Java och som implementerar Databricks-klientens enhetliga autentiseringfinns i:
- Konfigurera Databricks Connect-klienten för Scala (Databricks Connect-klienten för Scala använder den 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 både åtgärder på kontonivå och arbetsytenivå måste du använda Databricks CLI för att köra följande kommando innan du kör Go-koden. Det här kommandot instruerar Databricks CLI att generera och cacha den nödvändiga OAuth-token i sökvägen .databricks/token-cache.json
inom din användares hemmapp på din dator.
Konfigurera för databricks-åtgärder på kontonivå
databricks auth login --host <account-login-url> --account-id <account-id>
Ersätt följande platshållare:
- Ersätt
<account-console-url>
med värdethttps://accounts.azuredatabricks.net
. (Ange inte värdet för din Azure Databricks--arbetsyta URL.) - Ersätt
<account-id>
med värdet för ditt Azure Databricks-konto. Se Hitta ditt konto-ID.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fälten host
och account_id
redan har angetts kan du ersätta --host <account-console-url> --account-id <account-id>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara kontots inloggnings-URL och konto-ID som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Go-kod som liknar något av följande kodfragment:
För standardauktorisering med databricks enhetlig klientautentisering:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
För direkt konfiguration (ersätt retrieve
platshållare 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"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
}))
// ...
Konfigurera för databricks-åtgärder på arbetsytenivå
För åtgärder på arbetsytenivå bör du först använda Databricks CLI för att köra följande kommando innan du kör Go-koden. Det här kommandot instruerar Databricks CLI att generera och cacha den nödvändiga OAuth-token i sökvägen .databricks/token-cache.json
inom din användares hemmapp på din dator.
databricks auth login --host <worskpace-url>
Ersätt platshållaren <workspace-url>
med mål-URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net
.
Kommentar
Om du har en befintlig Azure Databricks-konfigurationsprofil med fältet host
redan har angetts kan du ersätta --host <workspace-url>
med --profile <profile-name>
.
När du har kört auth login
kommandot uppmanas du att spara arbetsytans URL som en Azure Databricks-konfigurationsprofil. När du uppmanas till det anger du namnet på en ny eller befintlig profil i .databrickscfg
filen. Alla befintliga profiler med samma namn i .databrickscfg
filen skrivs över.
Om du uppmanas att göra det slutför du webbläsarens instruktioner på skärmen för att slutföra inloggningen. Använd sedan Go-kod som liknar något av följande kodfragment:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
För direkt konfiguration (ersätt retrieve
platshållare 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"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
}))
// ...
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 U2M-autentisering (användar-till-dator) för OAuth
Kommentar
Det här avsnittet tillhandahålls för användare med verktyg eller tjänster från tredje part som inte fungerar med databricks-klientens enhetliga autentiseringsstandard .
Om du av någon anledning måste generera, uppdatera eller använda Azure Databricks OAuth-åtkomsttoken för OAuth U2M-autentisering manuellt följer du anvisningarna i det här avsnittet.
steg 1: Generera en OAuth-kodverifierare och kodutmaningspar
Om du vill generera och använda åtkomsttoken manuellt för OAuth U2M-autentisering måste du först ha en OAuth-kodverifierare och en OAuth-kodutmaning som härleds från kodverifieraren. Du använder kodutmaningen i steg 2 för att generera en OAuth-auktoriseringskod. Du använder kodverifieraren och auktoriseringskoden i steg 3 för att generera OAuth-åtkomsttoken.
Kommentar
Det är tekniskt möjligt att använda okodade okodade okodade textsträngar för kodverifieraren och kodutmaningen, men Databricks rekommenderar starkt att du följer OAuth-standarden för att generera kodverifieraren och kodutmaningen i stället.
Mer specifikt bör kodverifieraren vara en kryptografiskt slumpmässig sträng med tecken från uppsättningarna A-Z
, a-z
, 0-9
och skiljetecken -._~
(bindestreck, punkt, understreck och tilde), mellan 43 och 128 tecken långa. Koduppgiften ska vara en Base64-URL-kodad sträng i SHA256-hashen för kodverifieraren. Mer information finns i Auktoriseringsbegäran.
Du kan köra följande Python-skript för att snabbt generera ett unikt kodverifierare och kodutmaningspar. Även om du kan återanvända den här genererade kodverifieraren och kodutmaningsparet flera gånger rekommenderar Databricks att du genererar en ny kodverifierare och kodutmaningspar varje gång du manuellt genererar åtkomsttoken för OAuth U2M-autentisering.
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}")
Steg 2: Generera en auktoriseringskod
Du använder en OAuth-auktoriseringskod för att generera en Azure Databricks OAuth-åtkomsttoken. Auktoriseringskoden upphör omedelbart efter att du har använt den för att generera en Azure Databricks OAuth-åtkomsttoken. Omfånget för auktoriseringskoden beror på vilken nivå du genererar den från. Du kan generera en auktoriseringskod på antingen Azure Databricks-kontonivå eller arbetsytenivå på följande sätt:
- Om du vill anropa och arbetsytenivå REST-API:er inom konton och arbetsytor som ditt Azure Databricks-användarkonto har åtkomst till generera en auktoriseringskod på kontonivå.
- Om du bara vill anropa REST-API:er på en arbetsyta som ditt användarkonto har åtkomst till kan du generera en auktoriseringskod på arbetsytenivå endast för den arbetsytan.
Generera en auktoriseringskod på kontonivå
Klicka på nedåtpilen bredvid ditt användarnamn i det övre högra hörnet.
Kopiera ditt konto-ID.
I webbläsarens adressfält bläddrar du till följande URL. Radbrytningar har lagts till för läsbarhet. Url:en får inte innehålla dessa radbrytningar.
Ersätt följande i följande URL:
- Ersätt
<account-id>
med det konto-ID som du kopierade. - Ersätt
<redirect-url>
med en omdirigerings-URL till den lokala datorn, till exempelhttp://localhost:8020
. - Ersätt
<state>
med en sträng med oformaterad text som du kan använda för att verifiera auktoriseringskodens integritet. - Ersätt
<code-challenge>
med den koduppgift som du genererade i steg 1.
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
- Ersätt
När du uppmanas att göra det följer du anvisningarna på skärmen för att logga in på ditt Azure Databricks-konto.
Kopiera auktoriseringskoden i webbläsarens adressfält. Auktoriseringskoden är den fullständiga strängen
code=
med tecken mellan&
och tecknet i URL:en. Auktoriseringskoden i följande URL ärdcod...7fe6
till exempel :http://localhost:8020/?code=dcod...7fe6&state=<state>
Du bör kontrollera integriteten för den här auktoriseringskoden genom att visuellt bekräfta att
<state>
värdet i den här svars-URL:en matchar detstate
värde som du angav i din begärande-URL. Om värdena skiljer sig bör du inte använda den här auktoriseringskoden eftersom den kan komprometteras.Gå vidare till Generera en åtkomsttoken på kontonivå.
Generera en auktoriseringskod på arbetsytenivå
I webbläsarens adressfält bläddrar du till följande URL. Radbrytningar har lagts till för läsbarhet. Url:en får inte innehålla dessa radbrytningar.
Ersätt följande i följande URL:
- Ersätt
<databricks-instance>
med instansnamnet för Azure Databricks-arbetsytan, till exempeladb-1234567890123456.7.azuredatabricks.net
. - Ersätt
<redirect-url>
med en omdirigerings-URL till den lokala datorn, till exempelhttp://localhost:8020
. - Ersätt
<state>
med en sträng med oformaterad text som du kan använda för att verifiera auktoriseringskodens integritet. - Ersätt
<code-challenge>
med den koduppgift som du genererade i steg 1.
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
- Ersätt
När du uppmanas att göra det följer du anvisningarna på skärmen för att logga in på din Azure Databricks-arbetsyta.
Kopiera auktoriseringskoden i webbläsarens adressfält. Auktoriseringskoden är den fullständiga strängen
code=
med tecken mellan&
och tecknet i URL:en. Auktoriseringskoden i följande URL ärdcod...7fe6
till exempel :http://localhost:8020/?code=dcod...7fe6&state=<state>
Du bör kontrollera integriteten för den här auktoriseringskoden genom att visuellt bekräfta att
<state>
värdet i den här svars-URL:en matchar detstate
värde som du angav i din begärande-URL. Om värdena skiljer sig bör du inte använda den här auktoriseringskoden eftersom den kan komprometteras.
Steg 3: Använd auktoriseringskoden för att generera en OAuth-åtkomsttoken
Du använder OAuth-auktoriseringskoden från föregående steg för att generera en Azure Databricks OAuth-åtkomsttoken på följande sätt:
- Om du vill anropa och arbetsytenivå REST-API:er inom konton och arbetsytor som ditt Azure Databricks-användarkonto har åtkomst till använder du auktoriseringskoden på kontonivå för att generera en åtkomsttoken på kontonivå.
- Om du bara vill anropa REST-API:er på en arbetsyta som ditt användarkonto har åtkomst till kan du använda auktoriseringskoden på arbetsytenivå för att generera en åtkomsttoken på arbetsytenivå endast för den arbetsytan.
Generera en åtkomsttoken på kontonivå
Använd en klient som
curl
tillsammans med auktoriseringskoden på kontonivå för att generera OAuth-åtkomsttoken på kontonivå. Ersätt följande platshållare i följandecurl
anrop:- Ersätt
<account-id>
med konto-ID från steg 2. - Ersätt
<redirect-url>
med omdirigerings-URL:en från steg 2. - Ersätt
<code-verifier>
med kodverifieraren som du genererade i steg 1. - Ersätt
<authorization-code>
med auktoriseringskoden på kontonivå som du genererade i steg 2.
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>"
- Ersätt
I svaret kopierar du OAuth-åtkomsttoken på kontonivå. Åtkomsttoken är den fullständiga strängen
access_token
med tecken i objektet. Åtkomsttoken i följande svar äreyJr...Dkag
till exempel :{ "access_token": "eyJr...Dkag", "refresh_token": "doau...f26e", "scope": "all-apis offline_access", "token_type": "Bearer", "expires_in": 3600 }
Den här åtkomsttoken upphör att gälla om en timme. Om du vill generera en ny åtkomsttoken upprepar du den här proceduren från steg 1.
Gå vidare till Steg 4: Anropa ett Databricks REST API.
Generera en åtkomsttoken på arbetsytenivå
Använd en klient, till exempel
curl
tillsammans med auktoriseringskoden på arbetsytenivå för att generera OAuth-åtkomsttoken på arbetsytenivå. Ersätt följande platshållare i följandecurl
anrop:- Ersätt
<databricks-instance>
med instansnamnet för Azure Databricks-arbetsytan, till exempeladb-1234567890123456.7.azuredatabricks.net
. - Ersätt
<redirect-url>
med omdirigerings-URL:en från steg 2. - Ersätt
<code-verifier>
med kodverifieraren som du genererade i steg 1. - Ersätt
<authorization-code>
med auktoriseringskoden på arbetsytan som du genererade i steg 2.
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>"
- Ersätt
I svaret kopierar du OAuth-åtkomsttoken på arbetsytenivå. Åtkomsttoken är den fullständiga strängen
access_token
med tecken i objektet. Åtkomsttoken i följande svar äreyJr...Dkag
till exempel :{ "access_token": "eyJr...Dkag", "refresh_token": "doau...f26e", "scope": "all-apis offline_access", "token_type": "Bearer", "expires_in": 3600 }
Den här åtkomsttoken upphör att gälla om en timme. Om du vill generera en ny åtkomsttoken upprepar du den här proceduren från steg 1.
Steg 4: Anropa ett Databricks REST API
Du använder OAuth-åtkomsttoken på kontonivå eller arbetsytenivå för att autentisera till REST-API:er på Azure Databricks-kontonivå och REST-API:er på arbetsytenivå, beroende på åtkomsttokens omfång. Ditt Azure Databricks-användarkonto måste vara kontoadministratör för att anropa REST-API:er på kontonivå.
Exempel på REST API-begäran på kontonivå
I det här exemplet används curl
tillsammans med Bearer
autentisering för att hämta en lista över alla arbetsytor som är associerade med ett konto.
- Ersätt
<oauth-access-token>
med OAuth-åtkomsttoken på kontonivå. - 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 curl
tillsammans med Bearer
-autentisering för att lista alla tillgängliga kluster på den angivna arbetsytan.
- Ersätt
<oauth-access-token>
med OAuth-åtkomsttoken på kontonivå eller arbetsytenivå. - Ersätt
<databricks-instance>
med instansnamnet för Azure Databricks-arbetsytan, till exempeladb-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"