Sdílet prostřednictvím


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.

  1. Jako správce pracovního prostoru se přihlaste k pracovnímu prostoru Azure Databricks.
  2. Klikněte na své uživatelské jméno v horním panelu pracovního prostoru Azure Databricks a vyberte Nastavení.
  3. Klikněte na kartu Identita a přístup .
  4. Vedle instančních objektů klikněte na Spravovat.
  5. Klikněte na Přidat instanční objekt.
  6. Klikněte na šipku rozevíracího seznamu ve vyhledávacím poli a potom klikněte na Přidat nový.
  7. V části Správa zvolte Spravovaná služba Databricks.
  8. Zadejte název instančního objektu.
  9. 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

  1. Kliknutím na název instančního objektu otevřete stránku s podrobnostmi.
  2. 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.
  3. 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.

  1. Na stránce podrobností instančního objektu klikněte na kartu Tajné kódy .

  2. V části Tajné kódy OAuth klikněte na Generovat tajný kód.

    Generování tajného kódu OAuth z pracovního prostoru

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

  1. Jako správce účtu se přihlaste ke konzole účtu.

  2. Klikněte na Ikona správy uživatelů konzoly účtu Správa uživatelů.

  3. Na kartě Instanční objekt vyberte instanční objekt.

  4. V části Tajné kódy OAuth klikněte na Generovat tajný kód.

    Generování tajného kódu OAuth z pracovního prostoru

  5. 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říklad https://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 URL https://accounts.azuredatabricks.netkonzoly úč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í:

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ěnnou cluster_id prostředí ve vašem profilu na adresu URL pro jednotlivé pracovní prostory, například https://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říklad https://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í:

VS Code

Pro rozšíření Databricks pro Visual Studio Code postupujte takto:

  1. Nastavte hodnoty v .databrickscfg souboru pro operace na úrovni pracovního prostoru Azure Databricks, jak je uvedeno v části Profil tohoto článku.
  2. V podokně Konfigurace rozšíření Databricks pro Visual Studio Code klikněte na Konfigurovat Databricks.
  3. V paletě příkazů zadejte pro hostitele Databricks adresu URL pro jednotlivé pracovní prostory, například https://adb-1234567890123456.7.azuredatabricks.neta stiskněte Enter.
  4. 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:

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:

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:

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.

  1. Jako správce účtu se přihlaste ke konzole účtu.

  2. Klikněte na šipku dolů vedle svého uživatelského jména v pravém horním rohu.

  3. Zkopírujte ID účtu.

  4. 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
    
  5. 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. Obor all-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ěď.

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

  1. 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
    
  2. 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. Obor all-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ěď.

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