Condividi tramite


Connettersi a un'app Databricks per le API usando l'autenticazione basata su token

È possibile chiamare un'app Databricks che espone un'API HTTP (ad esempio, un'app FastAPI o Gradio) utilizzando l'autenticazione tramite token Bearer OAuth 2.0. Questo metodo funziona dall'ambiente di sviluppo locale, dalle applicazioni esterne e da altre app di Azure Databricks.

Annotazioni

Questo metodo si applica solo alle app che espongono API o endpoint (accessibili tramite /api/ route). Per le app che forniscono solo un'interfaccia utente o un'elaborazione in background, non è possibile connettersi usando l'autenticazione basata su token.

Requisiti

Per connettersi a un'app Databricks usando l'autenticazione basata su token, è necessario soddisfare i requisiti seguenti:

  • L'app deve esporre almeno un endpoint API accessibile tramite /api/ route.
  • È necessario disporre CAN USE dell'autorizzazione per l'applicazione. Vedere Configurare le autorizzazioni per un'app Databricks.
  • È necessario essere in grado di generare un token di accesso di Azure Databricks usando uno dei metodi di autenticazione supportati.

Metodi di autenticazione

Annotazioni

Non è possibile chiamare un'app Databricks direttamente usando un token ID Entra di Azure. La federazione dei token richiede un passaggio di scambio di token sul lato client, che Azure Databricks non esegue il lato server. Per usare i token ID entra di Azure per l'autenticazione, è prima necessario scambiarli per i token OAuth. Consulta l'autenticazione con un token del fornitore di identità.

Scegliere il metodo di autenticazione corrispondente allo scenario di connessione:

Sviluppo locale

Per la connessione dall'ambiente di sviluppo locale, usare l'interfaccia della riga di comando di Azure Databricks o gli SDK con le credenziali utente.

  1. Accedi con il CLI:

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

    Azure Databricks consiglia di usare l'autenticazione da utente a computer (U2M) OAuth.

  2. Generare un token di accesso:

    CLI

    databricks auth token --profile my-env
    

    Pitone

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

Applicazioni esterne

Per l'accesso programmatico da applicazioni esterne, usare l'autenticazione dei principali di servizio con credenziali inter-macchina (M2M). Vedere Autorizzare l'accesso dell'entità servizio ad Azure Databricks con OAuth.

  1. Creare un principale del servizio e ottenere l'ID client e la chiave segreta. Vedi Principali del servizio.

  2. Generare un token di accesso usando Azure 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()
    

Da altre app di Databricks

Quando ci si connette da un'app Databricks a un'altra, l'app gestisce automaticamente l'autenticazione usando l'entità servizio assegnata.

from databricks.sdk import WorkspaceClient
import requests

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

Specificare gli ambiti OAuth per l'autorizzazione utente

Quando si usa l'interfaccia della riga di comando di Azure Databricks o gli SDK con l'autenticazione unificata, come illustrato nella sezione precedente, gli strumenti richiedono automaticamente l'ambito di base all-apis . Tuttavia, se l'app usa l'autorizzazione utente, è necessario richiedere manualmente un token di accesso con ambiti aggiuntivi usando un flusso OAuth personalizzato.

Assicurarsi che il token di accesso includa gli ambiti configurati in Modifica>autorizzazione utente. Se il token non ha gli ambiti necessari, le richieste possono avere esito negativo con errori 401 o 403.

Ad esempio, la richiesta seguente richiede esplicitamente un token di accesso con gli ambiti sql, file.files e 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"

Per istruzioni complete, vedere Generare manualmente token di accesso U2M OAuth.

Inviare richieste all'app

Quando chiami gli endpoint API della tua app, includi il token Bearer nell'intestazione Autorizzazione e sostituisci <your-endpoint> con il percorso API effettivo della tua app.

CURL

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

Python con richieste

import requests

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

Python con 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
)

Considerazioni sulla sicurezza

Quando ci si connette alle app dall'ambiente locale, seguire queste procedure consigliate per la sicurezza:

  • Non incorporare mai i token di accesso nel codice sorgente. Usare variabili di ambiente o archivi di credenziali sicure.
  • Aggiornare regolarmente i token per ridurre al minimo i rischi di sicurezza in caso di compromissione.
  • Evitare di registrare i token di accesso o i dati sensibili nei log dell'applicazione.

Risoluzione dei problemi

Se si verificano problemi durante la connessione all'app da un computer locale, provare queste soluzioni.

Errori di autenticazione (errori 401)

Verificare quanto segue:

  • Il token è valido (eseguire databricks auth token --profile my-env)
  • Il profilo è configurato correttamente con databricks auth login
  • Il token non è scaduto
  • Il token include gli ambiti OAuth necessari. Gli strumenti CLI e SDK forniscono solo ambiti di base come all-apis, che potrebbero non essere sufficienti per l'autorizzazione dell'utente.

Autorizzazione negata (errori 403)

Verificare quanto segue:

  • Hai CAN USE il permesso per l'app
  • Il token include gli ambiti OAuth necessari. Gli ambiti di autorizzazione insufficienti possono causare errori 403 anche con permessi validi.

App non trovata (errori 404)

Verificare quanto segue:

  • L'ID e l'URL dell'area di lavoro sono corretti
  • L'applicazione è stata distribuita ed è in esecuzione
  • Il percorso dell'endpoint è presente nell'app

Problemi relativi alla connettività di rete

Verificare quanto segue:

  • La rete consente connessioni HTTPS in uscita
  • Il *.databricksapps.com dominio è accessibile dalla rete

Controllare inoltre se l'organizzazione usa un proxy che richiede la configurazione.

Risorse aggiuntive

Per altre informazioni, vedere le risorse seguenti: