Ověřování přístupu k Azure Databricks pomocí instančního objektu pomocí OAuth (OAuth M2M)
Tento článek vysvětluje, jak vytvořit instanční objekt Azure Databricks a použít ho k ověření v cílové entitě pomocí OAuth.
Krok 1: Vytvoření instančního objektu
Správci účtů a správci pracovních prostorů mohou vytvořit instanční objekty. Tento krok popisuje vytvoření instančního objektu v pracovním prostoru. Pokud chcete použít konzolu účtu, přečtěte si téma Správa instančních objektů ve vašem účtu.
Můžete také vytvořit spravovaný instanční objekt Microsoft Entra ID a přidat ho do Azure Databricks. Další informace najdete v tématu Databricks a instanční objekty Microsoft Entra ID.
- Jako správce pracovního prostoru se přihlaste k pracovnímu prostoru Azure Databricks.
- Klikněte na své uživatelské jméno v horním panelu pracovního prostoru Azure Databricks a vyberte Nastavení.
- Klikněte na kartu Identita a přístup .
- Vedle instančních objektů klikněte na Spravovat.
- Klikněte na Přidat instanční objekt.
- Klikněte na šipku rozevíracího seznamu ve vyhledávacím poli a potom klikněte na Přidat nový.
- V části Správa zvolte Spravovaná služba Databricks.
- Zadejte název instančního objektu.
- Klikněte na tlačítko Přidat.
Instanční objekt se přidá do vašeho pracovního prostoru i do účtu Azure Databricks.
Krok 2: Přiřazení oprávnění k instančnímu objektu
- Kliknutím na název instančního objektu otevřete stránku s podrobnostmi.
- Na kartě Konfigurace zaškrtněte políčko vedle každého nároku, který má mít instanční objekt pro tento pracovní prostor, a klikněte na tlačítko Aktualizovat.
- Na kartě Oprávnění udělte přístup všem uživatelům, instančním objektům a skupinám Azure Databricks, které chcete spravovat a používat. Viz Správa rolí v instančním objektu.
Krok 3: Vytvoření tajného klíče OAuth pro instanční objekt
Než budete moct použít OAuth k ověření v Azure Databricks, musíte nejdřív vytvořit tajný klíč OAuth, který se dá použít k vygenerování přístupových tokenů OAuth. Instanční objekt může mít až pět tajných kódů OAuth. Správci účtů a správci pracovního prostoru můžou vytvořit tajný kód OAuth pro instanční objekt.
Na stránce podrobností instančního objektu klikněte na kartu Tajné kódy .
V části Tajné kódy OAuth klikněte na Generovat tajný kód.
Zkopírujte zobrazený tajný klíč a ID klienta a klikněte na tlačítko Hotovo.
Tajný kód bude odhalen pouze jednou během vytváření. ID klienta je stejné jako ID aplikace instančního objektu.
Správci účtu můžou také vygenerovat tajný kód OAuth ze stránky podrobností instančního objektu v konzole účtu.
Jako správce účtu se přihlaste ke konzole účtu.
Klikněte na Správa uživatelů.
Na kartě Instanční objekt vyberte instanční objekt.
V části Tajné kódy OAuth klikněte na Generovat tajný kód.
Zkopírujte zobrazený tajný klíč a ID klienta a klikněte na tlačítko Hotovo.
Poznámka:
Pokud chcete instančnímu objektu povolit používání clusterů nebo SQL Warehouse, musíte k nim instančnímu objektu udělit přístup. Přečtěte si informace o výpočetních oprávněních nebo správě SLUŽBY SQL Warehouse.
Krok 4: Použití ověřování OAuth M2M
Pokud chcete použít ověřování OAuth M2M, musíte nastavit následující přidružené proměnné prostředí, .databrickscfg
pole, pole Terraformu nebo Config
pole:
- Hostitel Azure Databricks určený pro
https://accounts.azuredatabricks.net
operace účtu nebo cílovou adresu URL pracovního prostoru, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
pro operace pracovního prostoru. - ID účtu Azure Databricks pro operace účtu Azure Databricks
- ID klienta instančního objektu.
- Tajný klíč instančního objektu.
Pokud chcete provést ověřování OAuth M2M, integrujte následující kód na základě zúčastněného nástroje nebo sady SDK:
Prostředí
Pokud chcete použít proměnné prostředí pro konkrétní typ ověřování Azure Databricks pomocí nástroje nebo sady SDK, přečtěte si téma Ověřování přístupu k prostředkům Azure Databricks nebo dokumentaci k nástroji nebo sadě SDK. Viz také proměnné prostředí a pole pro jednotné ověřování klienta a výchozí metody pro jednotné ověřování klienta.
Pro operace na úrovni účtu nastavte následující proměnné prostředí:
DATABRICKS_HOST
, nastavte adresu URLhttps://accounts.azuredatabricks.net
konzoly účtu Azure Databricks.DATABRICKS_ACCOUNT_ID
DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Pro operace na úrovni pracovního prostoru nastavte následující proměnné prostředí:
DATABRICKS_HOST
, nastavte na adresu URL Azure Databricks pro jednotlivé pracovní prostory, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Profil
Vytvořte nebo identifikujte konfigurační profil Azure Databricks s následujícími poli v .databrickscfg
souboru. Pokud vytvoříte profil, nahraďte zástupné symboly příslušnými hodnotami. Pokud chcete profil použít s nástrojem nebo sadou SDK, přečtěte si téma Ověřování přístupu k prostředkům Azure Databricks nebo dokumentaci k nástroji nebo sadě SDK. Viz také proměnné prostředí a pole pro jednotné ověřování klienta a výchozí metody pro jednotné ověřování klienta.
V případě operací na úrovni účtu nastavte v .databrickscfg
souboru následující hodnoty. V tomto případě adresa URL konzoly účtu Azure Databricks je https://accounts.azuredatabricks.net
:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
U operací na úrovni pracovního prostoru nastavte v .databrickscfg
souboru následující hodnoty. V tomto případě je hostitelem adresa URL azure Databricks pro jednotlivé pracovní prostory, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
Rozhraní příkazového řádku
Pro rozhraní příkazového řádku Databricks proveďte jednu z následujících věcí:
- Nastavte proměnné prostředí, jak je uvedeno v části Prostředí tohoto článku.
- Nastavte hodnoty v
.databrickscfg
souboru, jak je uvedeno v části Profil tohoto článku.
Proměnné prostředí mají vždy přednost před hodnotami v .databrickscfg
souboru.
Viz také ověřování OAuth typu počítač-počítač (M2M).
Propojit
Poznámka:
Ověřování OAuth M2M se podporuje v následujících verzích Databricks Connect:
- Pro Python databricks Connect pro Databricks Runtime 14.0 a novější.
- Pro Scala, Databricks Connect pro Databricks Runtime 13.3 LTS a vyšší. Sada Databricks SDK pro Javu, která je součástí Databricks Connect pro Databricks Runtime 13.3 LTS a vyšší, musí být upgradována na Sadu Databricks SDK pro Javu 0.17.0 nebo vyšší.
Pro Databricks Connect můžete udělat jednu z těchto věcí:
- Nastavte hodnoty v
.databrickscfg
souboru pro operace na úrovni pracovního prostoru Azure Databricks, jak je uvedeno v části Profil tohoto článku. Nastavte také proměnnoucluster_id
prostředí ve vašem profilu na adresu URL pro jednotlivé pracovní prostory, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
. - Nastavte proměnné prostředí pro operace na úrovni pracovního prostoru Azure Databricks, jak je uvedeno v části Prostředí tohoto článku. Nastavte také proměnnou
DATABRICKS_CLUSTER_ID
prostředí na adresu URL pro jednotlivé pracovní prostory, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
.
Hodnoty v .databrickscfg
souboru mají vždy přednost před proměnnými prostředí.
Pokud chcete inicializovat klienta Databricks Connect pomocí těchto proměnných prostředí nebo hodnot v souboru, podívejte .databrickscfg
se na jednu z těchto věcí:
- Informace o Pythonu najdete v tématu Konfigurace vlastností připojení pro Python.
- Informace o jazyce Scala naleznete v tématu Konfigurace vlastností připojení pro Scala.
VS Code
Pro rozšíření Databricks pro Visual Studio Code postupujte takto:
- Nastavte hodnoty v
.databrickscfg
souboru pro operace na úrovni pracovního prostoru Azure Databricks, jak je uvedeno v části Profil tohoto článku. - V podokně Konfigurace rozšíření Databricks pro Visual Studio Code klikněte na Konfigurovat Databricks.
- V paletě příkazů zadejte pro hostitele Databricks adresu URL pro jednotlivé pracovní prostory, například
https://adb-1234567890123456.7.azuredatabricks.net
a stiskněteEnter
. - V paletě příkazů vyberte v seznamu pro svoji adresu URL název cílového profilu.
Další podrobnosti najdete v tématu Nastavení ověřování pro rozšíření Databricks pro Visual Studio Code.
Terraform
Pro operace na úrovni účtu pro výchozí ověřování:
provider "databricks" {
alias = "accounts"
}
Pro přímou retrieve
konfiguraci (nahraďte zástupné symboly vlastní implementací pro načtení hodnot z konzoly nebo jiného úložiště konfigurace, například HashiCorp Vault. Viz také poskytovatel trezoru). V tomto případě adresa URL konzoly účtu Azure Databricks je https://accounts.azuredatabricks.net
:
provider "databricks" {
alias = "accounts"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Pro operace na úrovni pracovního prostoru pro výchozí ověřování:
provider "databricks" {
alias = "workspace"
}
Pro přímou retrieve
konfiguraci (nahraďte zástupné symboly vlastní implementací pro načtení hodnot z konzoly nebo jiného úložiště konfigurace, například HashiCorp Vault. Viz také poskytovatel trezoru). V tomto případě je hostitelem adresa URL azure Databricks pro jednotlivé pracovní prostory, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Další informace o ověřování pomocí zprostředkovatele Databricks Terraform najdete v tématu Ověřování.
Python
Pro operace na úrovni účtu použijte pro výchozí ověřování následující:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
Pro přímou konfiguraci použijte následující retrieve
nahrazení zástupných symbolů vlastní implementací a načtení hodnot z konzoly nebo jiného úložiště konfigurace, jako je Azure KeyVault. V tomto případě adresa URL konzoly účtu Azure Databricks je https://accounts.azuredatabricks.net
:
from databricks.sdk import AccountClient
a = AccountClient(
host = retrieve_account_console_url(),
account_id = retrieve_account_id(),
client_id = retrieve_client_id(),
client_secret = retrieve_client_secret()
)
# ...
Pro operace na úrovni pracovního prostoru konkrétně výchozí ověřování:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
V případě přímé konfigurace nahraďte retrieve
zástupné symboly vlastní implementací pro načtení hodnot z konzoly nebo jiného úložiště konfigurace, jako je Azure KeyVault. V tomto případě je hostitelem adresa URL azure Databricks pro jednotlivé pracovní prostory, napříkladhttps://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()
)
# ...
Další informace o ověřování pomocí nástrojů Databricks a sad SDK, které používají Python a implementují jednotné ověřování klienta Databricks, najdete v tématu:
- Nastavení klienta Databricks Connect pro Python
- Ověření sady Databricks SDK pro Python pomocí účtu nebo pracovního prostoru Azure Databricks
Poznámka:
Rozšíření Databricks pro Visual Studio Code používá Python, ale ještě neimplementovalo ověřování OAuth M2M.
Java
Pro operace na úrovni pracovního prostoru pro výchozí ověřování:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
Pro přímou retrieve
konfiguraci (nahraďte zástupné symboly vlastní implementací pro načtení hodnot z konzoly nebo jiného úložiště konfigurace, například Azure KeyVault). V tomto případě je hostitelem adresa URL azure Databricks pro jednotlivé pracovní prostory, napříkladhttps://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);
// ...
Další informace o ověřování pomocí nástrojů Databricks a sad SDK, které používají Javu a implementují jednotné ověřování klientů Databricks, najdete v tématu:
- Nastavení klienta Databricks Connect pro Scala (klient Databricks Connect pro Scala používá k ověřování zahrnutou sadu Databricks SDK pro Javu)
- Ověření sady Databricks SDK pro Javu pomocí účtu nebo pracovního prostoru Azure Databricks
Go
Pro operace na úrovni účtu pro výchozí ověřování:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
Pro přímou retrieve
konfiguraci (nahraďte zástupné symboly vlastní implementací pro načtení hodnot z konzoly nebo jiného úložiště konfigurace, například Azure KeyVault). V tomto případě adresa URL konzoly účtu Azure Databricks je https://accounts.azuredatabricks.net
:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
Pro operace na úrovni pracovního prostoru pro výchozí ověřování:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
Pro přímou retrieve
konfiguraci (nahraďte zástupné symboly vlastní implementací pro načtení hodnot z konzoly nebo jiného úložiště konfigurace, například Azure KeyVault). V tomto případě je hostitelem adresa URL azure Databricks pro jednotlivé pracovní prostory, napříkladhttps://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(),
}))
// ...
Další informace o ověřování pomocí nástrojů Databricks a sad SDK, které používají Go a které implementují jednotné ověřování klienta Databricks, najdete v tématu Ověření sady Databricks SDK for Go pomocí účtu nebo pracovního prostoru Azure Databricks.
Ruční generování a používání přístupových tokenů pro ověřování OAuth M2M
Nástroje a sady SDK Azure Databricks, které implementují standard sjednoceného ověřování klienta Databricks, automaticky vygenerují, aktualizují a použijí přístupové tokeny Azure Databricks OAuth vaším jménem podle potřeby pro ověřování OAuth M2M.
Databricks doporučuje používat jednotné ověřování klientů, ale pokud je nutné ručně generovat, aktualizovat nebo používat přístupové tokeny Azure Databricks OAuth, postupujte podle pokynů v této části.
Pomocí ID klienta instančního objektu a tajného klíče OAuth požádejte o ověření přístupového tokenu OAuth pro rozhraní REST API na úrovni účtu i rozhraní REST API na úrovni pracovního prostoru. Platnost přístupového tokenu vyprší za jednu hodinu. Po vypršení platnosti musíte požádat o nový přístupový token OAuth. Rozsah přístupového tokenu OAuth závisí na úrovni, ze které token vytvoříte. Token můžete vytvořit na úrovni účtu nebo na úrovni pracovního prostoru následujícím způsobem:
- Pokud chcete volat rozhraní REST API na úrovni účtu a pracovního prostoru v rámci účtů a pracovních prostorů, ke kterým má instanční objekt přístup, ručně vygenerujte přístupový token na úrovni účtu.
- Pokud chcete volat rozhraní REST API pouze v jednom z pracovních prostorů, ke kterým má instanční objekt přístup, ručně vygenerujte přístupový token na úrovni pracovního prostoru pouze pro tento pracovní prostor.
Ruční vygenerování přístupového tokenu na úrovni účtu
Přístupový token OAuth vytvořený z úrovně účtu se dá použít pro rozhraní Databricks REST API v účtu a v jakémkoli pracovním prostoru, ke které má instanční objekt přístup.
Jako správce účtu se přihlaste ke konzole účtu.
Klikněte na šipku dolů vedle svého uživatelského jména v pravém horním rohu.
Zkopírujte ID účtu.
Vytvořte adresu URL koncového bodu tokenu tak
<my-account-id>
, že nahradíte následující adresu URL ID účtu, které jste zkopírovali.https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
Použijte klienta, například
curl
k vyžádání přístupového tokenu OAuth s adresou URL koncového bodu tokenu, ID klienta instančního objektu (označovaného také jako ID aplikace) a tajným kódem OAuth instančního objektu, který jste vytvořili. Oborall-apis
požaduje přístupový token OAuth, který lze použít pro přístup ke všem rozhraním REST API Databricks, ke kterým byl instančnímu objektu udělen přístup.- Nahraďte
<token-endpoint-URL>
předchozí adresou URL koncového bodu tokenu. - Nahraďte
<client-id>
ID klienta instančního objektu, které se označuje také jako ID aplikace. - Nahraďte
<client-secret>
tajným kódem OAuth instančního objektu, který jste vytvořili.
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'
Tím se vygeneruje podobná odpověď:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
access_token
Zkopírujte odpověď.- Nahraďte
Ruční vygenerování přístupového tokenu na úrovni pracovního prostoru
Přístupový token OAuth vytvořený z úrovně pracovního prostoru má přístup pouze k rozhraním REST API v daném pracovním prostoru, i když je instanční objekt správcem účtu nebo je členem jiných pracovních prostorů.
Vytvořte adresu URL koncového bodu tokenu nahrazením
https://<databricks-instance>
adresy URL pracovního prostoru vašeho nasazení Azure Databricks:https://<databricks-instance>/oidc/v1/token
Použijte klienta, například
curl
k vyžádání přístupového tokenu OAuth s adresou URL koncového bodu tokenu, ID klienta instančního objektu (označovaného také jako ID aplikace) a tajným kódem OAuth instančního objektu, který jste vytvořili. Oborall-apis
požaduje přístupový token OAuth, který se dá použít pro přístup ke všem rozhraním Databricks REST API, ke kterým byl instančnímu objektu udělen přístup v rámci pracovního prostoru, ze kterého požadujete token.- Nahraďte
<token-endpoint-URL>
předchozí adresou URL koncového bodu tokenu. - Nahraďte
<client-id>
ID klienta instančního objektu, které se označuje také jako ID aplikace. - Nahraďte
<client-secret>
tajným kódem OAuth instančního objektu, který jste vytvořili.
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'
Tím se vygeneruje podobná odpověď:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }
access_token
Zkopírujte odpověď.- Nahraďte
Volání rozhraní REST API služby Databricks
Přístupový token OAuth teď můžete použít k ověření v rozhraních REST API na úrovni účtu Azure Databricks a rozhraní REST API na úrovni pracovního prostoru. Instanční objekt musí být správcem účtu pro volání rozhraní REST API na úrovni účtu.
Token můžete zahrnout do hlavičky pomocí Bearer
ověřování. Tento přístup můžete použít s libovolným klientem curl
, kterého sestavíte.
Příklad požadavku rozhraní REST API na úrovni účtu
Tento příklad používá Bearer
ověřování k získání seznamu všech pracovních prostorů přidružených k účtu.
- Nahraďte
<oauth-access-token>
přístupovým tokenem OAuth instančního objektu, který jste zkopírovali v předchozím kroku. - Nahraďte
<account-id>
ID účtu.
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'
Příklad požadavku rozhraní REST API na úrovni pracovního prostoru
Tento příklad používá Bearer
ověřování k výpisu všech dostupných clusterů v zadaném pracovním prostoru.
- Nahraďte
<oauth-access-token>
přístupovým tokenem OAuth instančního objektu, který jste zkopírovali v předchozím kroku. - Nahraďte
<workspace-URL>
adresou URL základního pracovního prostoru, která má formulář podobný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'
Další materiály
- Instanční objekty
- Přehled modelu identit Databricks
- Další informace o ověřování a řízení přístupu