Compartir vía


Autenticación en una instancia de base de datos

Importante

Esta característica se encuentra en versión preliminar pública en las siguientes regiones: westus, westus2, eastuseastus2, centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindia, , . southeastasiauksouth

En esta página se describe cómo autenticarse en una instancia de base de datos de Lakebase. Hay dos maneras de autenticarse:

  1. Obtenga un token de OAuth y autentíquese mediante identidades de Azure Databricks.
  2. Utilizar roles nativos de Postgres con contraseñas.

Autenticación con identidades de Azure Databricks

Al autenticarse como identidad de Azure Databricks, debe generar un token de OAuth y usarlo como contraseña al conectarse a Postgres.

Consideraciones antes de comenzar

  • Los tokens de OAuth expiran después de una hora, pero la expiración solo se aplica en el inicio de sesión. Las conexiones abiertas permanecen activas incluso si el token expira. Sin embargo, se produce un error en cualquier comando de PostgreSQL que requiera autenticación si el token ha expirado.

  • Los tokens de OAuth usados para la autenticación de Postgres tienen ámbito de área de trabajo y deben pertenecer al mismo área de trabajo que posee la instancia de base de datos. No se admite la autenticación de tokens entre áreas de trabajo. Para más información sobre la autenticación, consulte Autenticación para la CLI de Databricks.

  • La autenticación basada en tokens requiere una contraseña de texto no cifrado, por lo que solo se permiten las conexiones SSL. Asegúrese de que la biblioteca cliente que use para acceder a Postgres con la autenticación basada en tokens esté configurada para establecer una conexión SSL.

Obtención de un token de OAuth en un flujo de usuario a máquina

Si usted es propietario de una base de datos, administrador o su identidad de Azure Databricks tiene un rol correspondiente de PostgreSQL para la instancia de base de datos, puede obtener un token de OAuth desde la interfaz de usuario, la CLI de Databricks o uno de los SDK de Databricks. Puede restringir el ámbito del token correctamente mediante la CLI de Databricks.

Para otros usuarios de identidad de Azure Databricks, consulte Autorización del acceso de usuario a Azure Databricks con OAuth para obtener tokens de OAuth en el nivel de área de trabajo.

Interfaz de usuario

Cuando el estado de la instancia de base de datos esté disponible, use la interfaz de usuario de Azure Databricks para obtener un token de OAuth:

  1. Haga clic en Calcular en la barra lateral del área de trabajo y luego en la pestaña Provisionado de Lakebase.
  2. Busque y haga clic en el nombre de la instancia de base de datos para la que desea obtener un token de OAuth.
  3. Haga clic en la pestaña Detalles de conexión.
  4. Haga clic en Obtener token de OAuth. Una marca indica cuándo se ha creado el token.
  5. Haga clic en Copiar OAuthToken para copiar el token en el Portapapeles.

Interfaz de línea de comandos (CLI)

Cuando el estado de la instancia de base de datos esté disponible, use la CLI de Databricks v0.256.0 y versiones posteriores para obtener un token de OAuth:

  1. Use el comando siguiente para capturar un token.
     databricks database generate-database-credential \
       --request-id $(uuidgen) \
       --json '{
         "instance_names": ["db-instance-name"]
       }'
    
  2. Esto genera una respuesta en el formato siguiente. Copie el token de la respuesta.
    {
      "expiration_time": "2025-08-24T14:15:22Z",
      "token": "<string>"
    }
    

Para obtener más información sobre el uso de la CLI de Databricks para obtener un token de OAuth, consulte Autenticación de usuario a máquina (U2M) de OAuth.

SDK de Python

Puede generar un token de OAuth mediante el SDK de Databricks para Python. Los enlaces del SDK de Azure Databricks están disponibles en el SDK de Databricks para la versión v0.56.0 de Python.

Si está ejecutando con una versión anterior del SDK, ejecute primero estos comandos.

%pip install --upgrade databricks-sdk
%restart_python

El SDK de Databricks para Python genera un token de OAuth seguro, cred, para la instancia de base de datos. Escriba sus credenciales cuando sea necesario.

from databricks.sdk import WorkspaceClient
import uuid

w = WorkspaceClient()

instance_name = "<YOUR INSTANCE>"

cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])

SDK de Java

Puede generar un token de OAuth mediante el SDK de Databricks para Java. Las vinculaciones del SDK de base de datos están disponibles en el SDK de Databricks para Java versión 0.53.0 o posterior. Si está ejecutando con una versión anterior del SDK, es posible que tenga que actualizar el SDK importado. Para obtener más información, consulte aquí .

%scala

import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID

val w = new WorkspaceClient()

val instanceName = "<YOUR INSTANCE>"

// Generate database credential
val cred = w.database().generateDatabaseCredential(
    new GenerateDatabaseCredentialRequest()
        .setRequestId(UUID.randomUUID().toString())
        .setInstanceNames(Collections.singletonList(instanceName))
)

// Print out credential details
System.out.println("Credential: " + cred.getToken())

Obtención de un token de OAuth en un flujo de máquina a máquina

Para habilitar el acceso seguro y automatizado (máquina a máquina) a la instancia de base de datos, debe obtener un token de OAuth mediante una entidad de servicio de Azure Databricks. Este proceso implica la configuración de la entidad de servicio, la generación de credenciales y la creación de tokens de OAuth para la autenticación.

  1. Configure una entidad de servicio con credenciales de duración indefinida. Para obtener instrucciones, consulte Autorización del acceso de la entidad de servicio a Azure Databricks con OAuth.

  2. Emita nuevos tokens de OAuth como entidad de servicio.

    Interfaz de línea de comandos (CLI)

    Cuando el estado de la instancia de base de datos esté disponible, use la CLI de Databricks v0.256.0 y versiones posteriores para obtener un token de OAuth:

    1. Use el comando siguiente para capturar un token.

        databricks database generate-database-credential \
          --request-id $(uuidgen) \
          --json '{
            "instance_names": ["db-instance-name"]
          }'
      
    2. Esto genera una respuesta en el formato siguiente. Copie el token de la respuesta.

      {
        "expiration_time": "2025-08-24T14:15:22Z",
        "token": "<string>"
      }
      

    SDK de Python

    Puede generar un token de OAuth mediante el SDK de Databricks para Python. Los enlaces del SDK de Azure Databricks están disponibles en el SDK de Databricks para la versión v0.56.0 de Python.

    Si está ejecutando con una versión anterior del SDK, ejecute primero estos comandos.

    %pip install --upgrade databricks-sdk
    %restart_python
    

    El SDK de Databricks para Python genera un token de OAuth seguro, cred, para la instancia de base de datos. Escriba el nombre de la instancia de base de datos cuando sea necesario.

    from databricks.sdk import WorkspaceClient
    import uuid
    
    w = WorkspaceClient(
      host          = "https://<YOUR WORKSPACE URL>/",
      client_id     = "<YOUR SERVICE PRINCIPAL ID>",
      client_secret = "REDACTED"
    )
    
    instance_name = "<YOUR INSTANCE>"
    
    cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
    

    SDK de Java

    Puede generar un token de OAuth mediante el SDK de Databricks para Java. Las vinculaciones del SDK de base de datos están disponibles en el SDK de Databricks para Java versión 0.53.0 o posterior. Si se ejecuta con una versión anterior del SDK, es posible que necesite actualizar a un SDK más reciente. Para obtener más información, consulte aquí .

    %scala
    
    import com.databricks.sdk.WorkspaceClient
    import com.databricks.sdk.core.DatabricksConfig
    import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
    import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
    import com.databricks.sdk.service.database.DatabaseInstance
    import com.databricks.sdk.service.database.DatabaseCredential
    import java.util.Collections
    import java.util.UUID
    
    val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication
    val w = new WorkspaceClient(config)
    
    val instanceName = "<YOUR INSTANCE>"
    
    // Generate database credential
    val cred = w.database().generateDatabaseCredential(
        new GenerateDatabaseCredentialRequest()
            .setRequestId(UUID.randomUUID().toString())
            .setInstanceNames(Collections.singletonList(instanceName))
    )
    
    // Print out credential details
    System.out.println("Credential: " + cred.getToken())
    

Nota:

Rote tokens de OAuth antes de que expiren cada hora:

  • Compruebe la hora de expiración del token de OAuth en cada uso y actualización cuando sea necesario.
  • Como alternativa, configure un subproceso en segundo plano para actualizar el token de OAuth actual periódicamente.

Solución de problemas de identidad del token

Si la identidad del token no coincide con la etiqueta de seguridad, es posible que reciba un mensaje de error similar al siguiente.

A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.

Ejecute el siguiente comando para comprobar qué identidad de Azure Databricks se devuelve:

Interfaz de línea de comandos (CLI)

databricks current-user me

SDK de Python

w.current_user.me().user_name

SDK de Java

w.currentUser.me().getUserName()

Si no se devuelve la identidad esperada, compruebe que se usaron las credenciales correctas al inicializar el cliente del área de trabajo.

Autenticación con el identificador de Entra de Microsoft

Para Azure Databricks, las identidades y tokens de identificación de Microsoft Entra también se pueden usar para autenticarse en las API de Azure Databricks. Use estas APIs para obtener un token para autenticarse con Postgres.

Consulte Administración de usuarios, entidades de servicio y grupos para obtener información sobre cómo administrar identidades administradas de Id. de Microsoft Entra en Azure Databricks. Los usuarios, grupos y entidades de servicio de Microsoft Entra ID se pueden crear en Azure Databricks. Una vez agregadas estas identidades a Azure Databricks, puede agregarlas a la instancia de base de datos, tal como se describe en Administración de roles de Postgres.

Para recuperar tokens de ID de Microsoft Entra, consulte los siguientes pasos:

Autenticación como grupo de Azure Databricks

Los grupos y las pertenencias a grupos no se sincronizan desde Azure Databricks a Postgres y tampoco se sincronizan ni permisos del Catálogo Unity. Sin embargo, después de agregar un grupo de Azure Databricks a Postgres, cualquier usuario de Azure Databricks del grupo puede iniciar sesión como grupo mediante la contraseña del usuario. Esto le permite administrar permisos en el nivel de grupo en Postgres. Cualquier miembro directo o indirecto (usuario o principal de servicio) de la identidad del grupo de Azure Databricks puede autenticar con Postgres e iniciar sesión como rol de grupo de Postgres de Azure Databricks.

Al autenticarse como identidad de grupo mediante un token de usuario o entidad de servicio, la pertenencia a grupos solo se valida en el momento de la autenticación. Cualquier conexión abierta con un token de miembro de grupo permanece abierta si el miembro es eliminado del grupo después de la autenticación. Se rechaza cualquier nueva solicitud de conexión de un miembro del grupo quitado durante la autenticación.

export PGPASSWORD='<OAuth token of a group member>'
export GROUPROLENAME=<pg-case-sensitive-group-role-name>

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUPROLENAME

Solo se admiten los grupos asignados al área de trabajo de Azure Databricks de la instancia de base de datos para el inicio de sesión de Postgres basado en grupos. Para obtener información sobre cómo asignar un grupo a un área de trabajo, consulte Asignación de un grupo a un área de trabajo.

Autenticación con roles y contraseñas de Postgres

Si tiene clientes que no admiten la rotación de credenciales después de una hora, puede crear roles nativos de Postgres con contraseñas:

  1. Haga clic en Calcular en la barra lateral del área de trabajo.

  2. Haga clic en la pestaña Instancias de base de datos .

  3. Seleccione la instancia de base de datos que desea actualizar.

  4. Haga clic en Editar en la esquina superior derecha.

  5. Activa Enable Postgres Native Role Login (Habilitar inicio de sesión de rol nativo de Postgres).

  6. Haz clic en Guardar.

  7. Inicie sesión en Postgres o use el Editor de SQL para crear un rol con una contraseña.

    CREATE ROLE new_role LOGIN PASSWORD 'your strong password';
    
  8. Conceda permisos adicionales de Postgres al nuevo rol. Consulte Concesión de privilegios a roles de Postgres mediante PostgreSQL.

Pasos siguientes

Después de obtener una credencial (token o contraseña de OAuth), puede conectarse a la instancia de base de datos: