Připojení k aplikaci API Databricks pomocí ověřování tokenů

Můžete volat aplikaci Databricks, která zveřejňuje rozhraní HTTP API (například aplikaci FastAPI nebo Gradio) pomocí ověřování nosným tokenem OAuth 2.0. Tato metoda funguje z místního vývojového prostředí, externích aplikací a dalších aplikací Azure Databricks.

Poznámka:

Tato metoda se vztahuje pouze na aplikace, které zpřístupňují rozhraní API nebo koncové body (přístupné pomocí /api/ tras). U aplikací, které poskytují pouze uživatelské rozhraní nebo zpracování na pozadí, se nemůžete připojit pomocí ověřování tokenu.

Požadavky

Pokud se chcete připojit k aplikaci Databricks pomocí ověřování tokenů, musíte splnit následující požadavky:

  • Aplikace musí zpřístupnit alespoň jeden koncový bod rozhraní API přístupný pomocí /api/ tras.
  • Musíte mít CAN USE oprávnění k aplikaci. Viz Konfigurace oprávnění pro aplikaci Databricks.
  • Musíte být schopni vygenerovat přístupový token Azure Databricks pomocí některé z podporovaných metod ověřování.

Metody ověřování

Poznámka:

Aplikaci Databricks nemůžete volat přímo pomocí tokenu Azure Entra ID. Federace tokenů vyžaduje krok výměny tokenů na straně klienta, který Azure Databricks neprovádí na straně serveru. Pokud chcete použít Azure Entra ID tokeny pro ověřování, musíte je napřed vyměnit za tokeny OAuth. Viz Ověření pomocí tokenu zprostředkovatele identity.

Zvolte metodu ověřování, která odpovídá vašemu scénáři připojení:

Místní vývoj

Pokud se chcete připojit z místního vývojového prostředí, použijte databricks CLI nebo sady SDK s přihlašovacími údaji uživatele.

  1. Přihlaste se pomocí rozhraní příkazového řádku:

    databricks auth login --host https://<workspace-url> --profile my-env
    

    Azure Databricks doporučuje používat ověřování uživatele vůči stroji (U2M) pomocí OAuth.

  2. Vygenerování přístupového tokenu:

    CLI

    databricks auth token --profile my-env
    

    Python

    from databricks.sdk.core import Config
    config = Config(profile="my-env")
    token = config.oauth_token().access_token
    

Externí aplikace

Pro programový přístup z externích aplikací použijte ověřování služby principal s přihlašovacími údaji M2M (machine-to-machine). Viz Autorizace přístupu servisního objektu k Azure Databricks pomocí OAuth.

  1. Vytvořte service principal a získejte ID klienta a tajemství. Viz principály služeb.

  2. Generování přístupového tokenu pomocí sady Databricks SDK:

    from databricks.sdk import WorkspaceClient
    import requests
    
    # Option 1: Explicit credentials
    wc = WorkspaceClient(
        host="https://<workspace-url>",
        client_id="<service-principal-client-id>",
        client_secret="<service-principal-client-secret>"
    )
    
    # Option 2: Environment variables
    # Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET
    wc = WorkspaceClient()
    
    # Generate Bearer token
    headers = wc.config.authenticate()
    

Z jiných aplikací Databricks

Když se připojíte z jedné aplikace Databricks k jiné, aplikace provádí ověřování automaticky pomocí přiřazeného služebního principálu.

from databricks.sdk import WorkspaceClient
import requests

# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()

Z poznámkového bloku Azure Databricks

Pokud chcete volat rozhraní API aplikace z poznámkového bloku Azure Databricks, musíte vyměnit interní token poznámkového bloku za token OAuth pro určené publikum a pak tento token použít k dotazování aplikace.

  1. Získejte ID klienta OAuth aplikace. Načtěte ID pomocí sady Azure Databricks SDK:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    app_client_id = w.apps.get("<app-name>").oauth2_app_client_id
    
  2. Vyměňte token notebooku za přístupový token s oborem platnosti pro cílovou skupinu.

    import requests
    
    url = "https://<workspace-url>/oidc/v1/token"
    notebook_token = (
        dbutils.notebook.entry_point.getDbutils()
        .notebook().getContext().apiToken().get()
    )
    
    data = {
        "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange",
        "subject_token": notebook_token,
        "subject_token_type": "urn:databricks:params:oauth:token-type:personal-access-token",
        "requested_token_type": "urn:ietf:params:oauth:token-type:access_token",
        "scope": "all-apis",
        "audience": app_client_id,
    }
    
    response = requests.post(url=url, data=data)
    audience_token = response.json()["access_token"]
    
  3. Použijte audience_token jako nosný token k volání vaší aplikace. Příklady najdete v tématu Odesílání požadavků do aplikace.

Poznámka:

Exchanged token je vymezen na konkrétní aplikaci, takže ho nemůžete použít k volání jiných rozhraní API Azure Databricks. Parametr scope v požadavku na výměnu tokenů se musí shodovat nebo musí být nadmnožinou oborů nakonfigurovaných pro aplikaci v autorizaci uživatele.

Zadání oborů OAuth pro autorizaci uživatelů

Pokud vaše aplikace používá autorizaci uživatele, musí přístupový token obsahovat obory, které jsou nadmnožinou oborů nakonfigurovaných pro aplikaci. Pokud token nemá požadované obory, požadavky můžou selhat s chybami 401 nebo 403.

Token vygenerovaný pomocí rozhraní příkazového řádku Databricks ve výchozím nastavení zahrnuje all-apis obor, který splňuje požadavky na autorizaci uživatele pro libovolnou aplikaci:

databricks auth token --profile my-env

Pokud chcete místo toho all-apis požádat o konkrétní oprávnění, můžete ručně požádat o přístupový token s výslovnými oprávněními pomocí vlastního procesu OAuth. Například následující požadavek explicitně požádá o přístupový token s obory sql, file.files a dashboards.genie.

curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"

Úplné pokyny najdete v tématu Ruční generování přístupových tokenů OAuth U2M.

Odeslání požadavků do aplikace

Při volání koncových bodů rozhraní API vaší aplikace zahrňte do autorizační hlavičky nosný token a nahraďte <your-endpoint> skutečnou cestou rozhraní API vaší aplikace:

CURL

curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
     -H "Authorization: Bearer <YOUR_TOKEN>"

Python s požadavky

import requests

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers={"Authorization": f"Bearer {token}"}
)

Python se sadou SDK

from databricks.sdk import WorkspaceClient
import requests

wc = WorkspaceClient()
headers = wc.config.authenticate()

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers=headers
)

Bezpečnostní aspekty

Při připojování k aplikacím z místního prostředí postupujte podle těchto osvědčených postupů zabezpečení:

  • Nikdy ve zdrojovém kódu nezakódujte přístupové tokeny. Použijte proměnné prostředí nebo zabezpečené úložiště přihlašovacích údajů.
  • Pravidelně obnovujte tokeny, aby byla minimalizována rizika zabezpečení v případě jejich kompromitace.
  • Vyhněte se protokolování přístupových tokenů nebo citlivých dat v protokolech aplikace.

Řešení problémů

Pokud při připojování k aplikaci z místního počítače narazíte na problémy, vyzkoušejte tato řešení.

Selhání autentizace (chyby 401)

Zkontrolujte:

  • Váš token je platný (spustit databricks auth token --profile my-env)
  • Váš profil je správně nakonfigurovaný pomocí databricks auth login
  • Platnost tokenu nevypršela.
  • Váš token zahrnuje požadované obory OAuth. Obory vašeho tokenu musí být nadmnožinou oborů nakonfigurovaných pro aplikaci v autorizaci uživatele.

Přístup zamítnut (chyba 403)

Zkontrolujte:

  • Máte CAN USE oprávnění k aplikaci
  • Váš token zahrnuje požadované obory OAuth. Nedostatečné rozsahy oprávnění můžou způsobit chyby 403 i s platnými oprávněními.

Aplikace nebyla nalezena (chyby 404)

Zkontrolujte:

  • ID a adresa URL pracovního prostoru jsou správné.
  • Aplikace se nasadí a spustí.
  • Cesta ke koncovému bodu existuje v aplikaci.

Problémy se síťovým připojením

Zkontrolujte:

  • Vaše síť umožňuje odchozí připojení HTTPS.
  • Doména *.databricksapps.com je přístupná z vaší sítě.

Kromě toho zkontrolujte, jestli vaše organizace používá proxy server, který vyžaduje konfiguraci.

Dodatečné zdroje

Další informace najdete v následujících zdrojích informací: