Csatlakozás API Databricks-alkalmazáshoz jogkivonat-hitelesítéssel

Meghívhat egy Databricks-alkalmazást, amely egy HTTP API-t (például FastAPI- vagy Gradio-alkalmazást) tesz elérhetővé OAuth 2.0 Bearer token-hitelesítéssel. Ez a módszer a helyi fejlesztési környezetből, külső alkalmazásokból és más Azure Databricks alkalmazásokból működik.

Megjegyzés:

Ez a módszer csak olyan alkalmazásokra vonatkozik, amelyek API-kat vagy végpontokat tesznek elérhetővé (amelyekhez útvonalakat használva /api/ lehet hozzáférni). Az olyan alkalmazások esetében, amelyek csak felhasználói felületet vagy háttérfeldolgozást biztosítanak, jogkivonat-hitelesítéssel nem lehet csatlakozni.

Requirements

A Databricks-alkalmazáshoz jogkivonat-hitelesítéssel való csatlakozáshoz meg kell felelnie az alábbi követelményeknek:

  • Az alkalmazásnak legalább egy, útvonalakon /api/ elérhető API-végpontot kell elérhetővé tennie.
  • Rendelkeznie kell az alkalmazásban CAN USE engedéllyel. Lásd: Databricks-alkalmazások engedélyeinek konfigurálása.
  • A támogatott hitelesítési módszerek egyikével létre kell hoznia egy Azure Databricks hozzáférési jogkivonatot.

Hitelesítési módszerek

Megjegyzés:

A Databricks-alkalmazásokat nem hívhatja meg közvetlenül Azure Entra ID jogkivonat használatával. A jogkivonat-összevonáshoz ügyféloldali jogkivonatcsere lépésre van szükség, amely Azure Databricks nem hajtja végre a kiszolgálóoldali műveleteket. Ha Azure Entra ID jogkivonatokat szeretne használni a hitelesítéshez, először OAuth-jogkivonatokra kell cserélnie őket. Lásd Hitelesítés identitásszolgáltató tokennel.

Válassza ki a kapcsolati forgatókönyvnek megfelelő hitelesítési módszert:

Helyi fejlesztés

A helyi fejlesztési környezetből való csatlakozáshoz használd a Databricks CLI-t vagy az SDK-kat a felhasználói hitelesítő adataiddal.

  1. Jelentkezzen be a parancssori felülettel:

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

    Azure Databricks javasolja a OAuth felhasználó–gép (U2M) hitelesítés használatát.

  2. Hozzáférési jogkivonat létrehozása:

    parancssori felület

    databricks auth token --profile my-env
    

    Python

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

Külső alkalmazások

A külső alkalmazásokból való programozott hozzáféréshez használjon egyszerű szolgáltatáshitelesítést gépről gépre (M2M) hitelesítő adatokkal. Lásd: Hogyan engedélyezzük a szolgáltatásnév hozzáférését az Azure Databricks szolgáltatáshoz az OAuth használatával.

  1. Hozzon létre egy szolgáltatási azonosítót, és szerezze be az ügyfél-azonosítót és a kliens titkot. Lásd Szolgáltatásfelelősök.

  2. Hozzáférési jogkivonat létrehozása a Databricks SDK használatával:

    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()
    

Más Databricks-alkalmazásokból

Amikor egy Databricks-alkalmazásból csatlakozik egy másikhoz, az alkalmazás automatikusan kezeli a hitelesítést a hozzárendelt szolgáltatásnév használatával.

from databricks.sdk import WorkspaceClient
import requests

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

Azure Databricks jegyzetfüzetből

Ha egy alkalmazás API-t egy Azure Databricks-jegyzetfüzetből szeretne meghívni, a jegyzetfüzet belső jogkivonatát egy célközönség-hatókörű OAuth-jogkivonatra kell cserélnie, majd ezzel a jogkivonattal kell lekérdeznie az alkalmazást.

  1. Kérje le az alkalmazás OAuth-ügyfélazonosítóját. Az azonosító lekérése a Azure Databricks SDK használatával:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    app_client_id = w.apps.get("<app-name>").oauth2_app_client_id
    
  2. Jegyzetfüzet tokenjét cserélje le egy célközönség hatókörű hozzáférési jogkivonatra:

    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. Az alkalmazás meghívásához használja a audience_token Hordozó tokent. Példák: Kérések küldése az alkalmazásnak.

Megjegyzés:

A kicserélt jogkivonat hatóköre az adott alkalmazásra vonatkozik, így nem hívhat meg más Azure Databricks API-kat. A scope paraméternek a jogkivonat cserekérelmében meg kell egyeznie az alkalmazáshoz a felhasználói engedélyezésben konfigurált hatókörökkel, vagy tartalmaznia kell azokat.

OAuth-hatókörök megadása a felhasználói engedélyezéshez

Ha az alkalmazás felhasználói engedélyezést használ, a hozzáférési jogkivonatnak olyan hatóköröket kell tartalmaznia, amelyek az alkalmazáshoz konfigurált hatókörök szuperhalmazai. Ha a jogkivonat nem rendelkezik a szükséges hatókörökkel, a kérelmek 401 vagy 403 hibával meghiúsulhatnak.

A Databricks CLI használatával létrehozott jogkivonat alapértelmezés szerint tartalmazza a all-apis hatókört, amely megfelel bármely alkalmazás felhasználói jogosultságainak.

databricks auth token --profile my-env

Ahelyett all-apis, hogy konkrét hatóköröket szeretne lekérni, manuálisan kérheti le a hozzáférési jogkivonatot explicit hatókörökkel egy egyéni OAuth-folyamat használatával. A következő kérés például explicit módon kér hozzáférési jogkivonatot a sql, filesés genie hatókörökkel:

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+files+genie"

A teljes útmutatásért lásd: OAuth U2M-hozzáférési jogkivonatok manuális létrehozása.

Kérések küldése az alkalmazásnak

Amikor meghívja az alkalmazás API-végpontjait, vegye fel a Bearer tokent az Authorization fejlécbe, és cserélje le <your-endpoint> az alkalmazás tényleges API-elérési útjára:

CURL

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

Python kérésekkel

import requests

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

Python SDK-val

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
)

Biztonsági szempontok

Amikor helyi környezetéből csatlakozik az alkalmazásokhoz, kövesse az alábbi ajánlott biztonsági eljárásokat:

  • Soha ne kódoljon hozzáférési jogkivonatokat a forráskódban. Használjon környezeti változókat vagy biztonságos hitelesítőadat-tárolókat.
  • A jogkivonatok rendszeres frissítése a biztonsági kockázatok minimalizálása érdekében, ha azok sérülnek.
  • Kerülje a hozzáférési jogkivonatok vagy bizalmas adatok naplózását az alkalmazásnaplókban.

Hibaelhárítás

Ha problémákba ütközik, amikor helyi gépről csatlakozik az alkalmazáshoz, próbálkozzon ezekkel a megoldásokkal.

Hitelesítési hibák (401 hiba)

Ellenőrizze a következőket:

  • Az ön tokenje érvényes (futtatás databricks auth token --profile my-env)
  • A profil a databricks auth login megfelelően van konfigurálva.
  • A token nem járt le
  • A token tartalmazza a szükséges OAuth-hatóköröket. A token hatóköreinek a felhasználói engedélyezés során az alkalmazáshoz konfigurált hatókörök szuperhalmazának kell lenniük.

Engedély megtagadva (403 hiba)

Ellenőrizze a következőket:

  • Rendelkezik CAN USE engedéllyel az alkalmazáshoz
  • A token tartalmazza a szükséges OAuth-hatóköröket. A nem megfelelő jogosultsági szintek 403 hibát okozhatnak még érvényes engedélyekkel is.

Az alkalmazás nem található (404 hiba)

Ellenőrizze a következőket:

  • Az azonosító és a munkaterület URL-címe helyes
  • Az alkalmazás üzembe helyezése és futtatása
  • A végpont elérési útja létezik az alkalmazásban

Hálózati kapcsolati problémák

Ellenőrizze a következőket:

  • A hálózat engedélyezi a kimenő HTTPS-kapcsolatokat
  • A *.databricksapps.com tartomány elérhető a hálózatról

Emellett ellenőrizze, hogy a szervezet konfigurációt igénylő proxyt használ-e.

További erőforrások

További információt a következő források tartalmaznak: