Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 USEoprá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.
Přihlaste se pomocí rozhraní příkazového řádku:
databricks auth login --host https://<workspace-url> --profile my-envAzure Databricks doporučuje používat ověřování uživatele vůči stroji (U2M) pomocí OAuth.
Vygenerování přístupového tokenu:
CLI
databricks auth token --profile my-envPython
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.
Vytvořte service principal a získejte ID klienta a tajemství. Viz principály služeb.
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.
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_idVyměň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"]Použijte
audience_tokenjako 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 USEoprá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.comje 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í: