Compartir vía


Conexión a una aplicación de Api Databricks mediante la autenticación de tokens

Puede llamar a una aplicación de Databricks que exponga una API HTTP (por ejemplo, una aplicación FastAPI o Gradio) utilizando la autenticación con un token Bearer de OAuth 2.0. Este método funciona desde el entorno de desarrollo local, las aplicaciones externas y otras aplicaciones de Azure Databricks.

Nota:

Este método solo se aplica a las aplicaciones que exponen las API o los puntos de conexión (accesibles mediante /api/ rutas). En el caso de las aplicaciones que proporcionan solo una interfaz de usuario o un procesamiento en segundo plano, no se puede conectar mediante la autenticación de tokens.

Requisitos

Para conectarse a una aplicación de Databricks mediante la autenticación de tokens, debe cumplir los siguientes requisitos:

  • La aplicación debe exponer al menos un punto de conexión de API accesible mediante /api/ rutas.
  • Debe tener permiso CAN USE en la aplicación. Consulte Configuración de permisos para una aplicación de Databricks.
  • Debe poder generar un token de acceso de Azure Databricks mediante uno de los métodos de autenticación admitidos.

Métodos de autenticación

Nota:

No se puede llamar directamente a una aplicación de Databricks mediante un token de identificador de Azure Entra. La federación de tokens requiere un paso de intercambio de tokens del lado cliente, que Azure Databricks no realiza en el lado servidor. Para usar tokens de identificador de Azure Entra para la autenticación, primero debe intercambiarlos para tokens de OAuth. Consulte Autenticación con un token de proveedor de identidades.

Elija el método de autenticación que coincida con el escenario de conexión:

Desarrollo local

Para conectarse desde el entorno de desarrollo local, use la CLI de Azure Databricks o los SDK con sus credenciales de usuario.

  1. Inicie sesión con la CLI:

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

    Azure Databricks recomienda usar la autenticación de usuario a máquina (U2M) de OAuth.

  2. Generación de un token de acceso:

    Interfaz de línea de comandos (CLI)

    databricks auth token --profile my-env
    

    Pitón

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

Aplicaciones externas

Para el acceso mediante programación desde aplicaciones externas, use la autenticación de entidad de servicio con credenciales de máquina a máquina (M2M). Consulte Autorización del acceso de la entidad de servicio a Azure Databricks con OAuth.

  1. Cree una entidad de servicio y obtenga el identificador de cliente y la clave secreta. Consulte entidades de servicio.

  2. Genere un token de acceso mediante el SDK de Azure Databricks:

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

Desde otras aplicaciones de Databricks

Cuando se conecta desde una aplicación de Databricks a otra, la aplicación controla la autenticación automáticamente mediante su entidad de servicio asignada.

from databricks.sdk import WorkspaceClient
import requests

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

Especificación de ámbitos de OAuth para la autorización de usuario

Cuando se usan la CLI o los SDK de Azure Databricks con autenticación unificada, como se muestra en la sección anterior, las herramientas solicitan automáticamente el ámbito básico all-apis . Sin embargo, si la aplicación usa la autorización de usuario, debe solicitar manualmente un token de acceso con ámbitos adicionales mediante un flujo de OAuth personalizado.

Asegúrese de que el token de acceso incluye los ámbitos configurados en Editar>autorización de usuario. Si el token no tiene los ámbitos necesarios, las solicitudes pueden producir errores 401 o 403.

Por ejemplo, la siguiente solicitud solicita explícitamente un token de acceso con los sql, file.files y dashboards.genie permisos.

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"

Para obtener instrucciones completas, consulte Generación manual de tokens de acceso U2M de OAuth.

Envío de solicitudes a la aplicación

Al llamar a los endpoints de la API de tu aplicación, incluye el Bearer token en el encabezado de autorización y reemplaza <your-endpoint> por el path real de la API de tu aplicación.

CURL

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

Python con solicitudes

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
)

Consideraciones de seguridad

Al conectarse a aplicaciones desde el entorno local, siga estos procedimientos recomendados de seguridad:

  • Nunca codifique de forma rígida los tokens de acceso en el código fuente. Use variables de entorno o almacenes de credenciales seguros.
  • Actualice los tokens periódicamente para minimizar los riesgos de seguridad si están en peligro.
  • Evite registrar tokens de acceso o datos confidenciales en los registros de aplicación.

Solución de problemas

Si tiene problemas al conectarse a la aplicación desde una máquina local, pruebe estas soluciones.

Errores de autenticación (errores 401)

Compruebe lo siguiente:

  • El token es válido (ejecutar databricks auth token --profile my-env)
  • El perfil está configurado correctamente con databricks auth login
  • El token no ha expirado
  • El token incluye los ámbitos de OAuth necesarios. Las herramientas CLI y SDK solo proporcionan ámbitos básicos como all-apis, que podrían no ser suficientes para la autorización de los usuarios.

Permiso denegado (errores 403)

Compruebe lo siguiente:

  • Tienes CAN USE permiso en aplicación
  • El token incluye los ámbitos de OAuth necesarios. Los ámbitos insuficientes pueden provocar errores 403 incluso con permisos válidos.

No se encontró la aplicación (errores 404)

Compruebe lo siguiente:

  • El identificador y la dirección URL del área de trabajo son correctos.
  • La aplicación se implementa y ejecuta
  • La ruta de acceso del punto de conexión existe en la aplicación.

Problemas de conectividad de red

Compruebe lo siguiente:

  • La red permite conexiones HTTPS salientes
  • El *.databricksapps.com dominio es accesible desde la red.

Además, compruebe si la organización usa un proxy que requiere configuración.

Recursos adicionales

Para obtener más información, consulte los siguientes recursos: