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 selectNastavení.
- 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 oprávnění, které chcete, aby instanční objekt měl pro tento pracovní prostor, a potom klikněte na Update.
- Na kartě Oprávněnígrant přístup ke 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 generate 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ých kódů OAuthklikněte na Generate tajný.
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 účtů můžou také generate 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ě Služební principálovéselect váš služební principál.
V části tajných kódů OAuthklikněte na Generate 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 set následující přidružené proměnné prostředí, pole .databrickscfg
, Terraform, nebo Config
:
- 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 účtuset následující proměnné prostředí:
-
DATABRICKS_HOST
, set,https://accounts.azuredatabricks.net
na adresu URL konzoly účtu Azure Databricks. DATABRICKS_ACCOUNT_ID
DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Pro operace na úrovni pracovního prostoruset následující proměnné prostředí:
-
DATABRICKS_HOST
, set na adresu URL pro pracovní prostor Azure Databricks, 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 odpovídajícími values. 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.
Pro operace na úrovni účtu , set následující values ve vašem souboru .databrickscfg
. 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>
Pro operace na úrovni pracovního prostoru proveďte následující set ve vašem souboru .databrickscfg
values. 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í:
- Set proměnné prostředí, jak je uvedeno v části Prostředí tohoto článku.
-
Set
values ve vašem souboru
.databrickscfg
, jak je specifikováno v sekci „Profil“ tohoto článku.
Proměnné prostředí mají vždy přednost před values v souboru .databrickscfg
.
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í:
-
Set
values ve vašem souboru
.databrickscfg
pro operace na úrovni pracovního prostoru Azure Databricks , jak je uvedeno v části „Profil“. Také set proměnnou prostředícluster_id
ve vašem profilu na adresu URL podle pracovního prostoru, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
. -
Set proměnných prostředí pro Azure Databricks operace na úrovni pracovního prostoru, jak je specifikováno v sekci „Prostředí“ tohoto článku. Také set proměnnou prostředí
DATABRICKS_CLUSTER_ID
na adresu URL podle pracovního prostoru, napříkladhttps://adb-1234567890123456.7.azuredatabricks.net
.
Values v souboru .databrickscfg
vždy mají přednost před proměnnými prostředí.
Pokud chcete inicializovat klienta Databricks Connect pomocí těchto proměnných prostředí nebo values v souboru .databrickscfg
, přečtěte si téma Konfigurace výpočet pro Databricks Connect.
VS Code
Pro rozšíření Databricks pro Visual Studio Code postupujte takto:
-
Set
values ve vašem souboru
.databrickscfg
pro operace na úrovni pracovního prostoru Azure Databricks , jak je specifikováno v části „Profil“ tohoto článku. - V podokně Konfigurace rozšíření Databricks pro Visual Studio Code klikněte na Konfigurovat Databricks.
- V paletě
- Na paletě příkazů jeselect název vašeho cílového profilu v list pro vaši adresu URL.
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 konfiguraci (nahraďte zástupné symboly retrieve
vlastní implementací pro načtení values z konzole nebo jiného úložiště konfigurace, například HashiCorp Vault. Viz také Poskytovatel Vault). 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 konfiguraci (nahraďte zástupné symboly retrieve
vlastní implementací pro načtení values z konzoly nebo jiného úložiště konfigurace, například HashiCorp Vault. Viz také poskytovatele Vault). 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í nahrazení zástupných symbolů retrieve
vlastní implementací a načtení values 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
:
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 placeholdery retrieve
vaší vlastní implementací pro načtení values z konzole nebo z 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:
- Set klienta Databricks Connect pro Pythonu
- 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 konfiguraci (nahraďte zástupné symboly retrieve
vlastní implementací pro načtení values 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:
- Set Databricks Connect klienta pro Scalu (klient Databricks Connect pro Scalu 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 konfiguraci (nahraďte zástupné symboly retrieve
vlastní implementací pro načtení values z konzole 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 konfiguraci (nahraďte zástupné symboly retrieve
vlastní implementací pro načtení values 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.
Proveďte ručně generate a použijte přístupové tokeny pro autentizaci OAuth M2M
Nástroje a sady SDK Azure Databricks, které implementují jednotné ověřování klienta Databricks standardu, se automaticky generate, refresha budou za vás používat přístupové tokeny Azure Databricks OAuth 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ě generate, refreshnebo 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á hlavní služební účet přístup, ručně generate 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ě generate přístupový token na úrovni pracovního prostoru pouze pro tento pracovní prostor.
ručně generate přístupový token 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ě generate přístupový token 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á autentizaci Bearer
k getlist 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
Příklad ukazuje použití ověřování Bearer
k list 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