Compartir vía


Configuración de autenticación del controlador JDBC de Databricks

En este artículo se describe cómo configurar las opciones de autenticación de Azure Databricks para el controlador JDBC de Databricks.

Para configurar una conexión de Azure Databricks para el controlador JDBC de Databricks, debe combinar la configuración de recursos de proceso, cualquier configuración de funcionalidad del controlador y las siguientes opciones de autenticación, en una dirección URL de conexión JDBC o una colección programática de propiedades de conexión JDBC.

Las direcciones URL de conexión JDBC usan el siguiente formato:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

Las colecciones mediante programación de propiedades de conexión JDBC se pueden usar en código Java, como en el ejemplo siguiente:

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class Main {
  public static void main(String[] args) throws Exception {
    Class.forName("com.databricks.client.jdbc.Driver");
    String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
    Properties p = new java.util.Properties();
    p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
    p.put("<setting1>", "<value1");
    p.put("<setting2>", "<value2");
    p.put("<settingN>", "<valueN");
    try (Connection conn = DriverManager.getConnection(url, p)) {
      Statement stmt = conn.createStatement();
      try (ResultSet rs = stmt.executeQuery("<query>")) {
        ResultSetMetaData md = rs.getMetaData();
        String[] columns = new String[md.getColumnCount()];
        for (int i = 0; i < columns.length; i++) {
          columns[i] = md.getColumnName(i + 1);
        }
        while (rs.next()) {
          System.out.print("Row " + rs.getRow() + "=[");
          for (int i = 0; i < columns.length; i++) {
            if (i != 0) {
              System.out.print(", ");
            }
            System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
          }
          System.out.println(")]");
        }
      }
    }
    System.exit(0);
  }
}
  • Establezca los valores de entorno DATABRICKS_SERVER_HOSTNAME y DATABRICKS_HTTP_PATH en los valores de nombre del host del servidor y ruta de acceso HTTP del recurso de proceso de Azure Databricks de destino, respectivamente. Para obtener estos valores, consulte Configuración de proceso del controlador JDBC de Databricks. Para establecer las variables de entorno, consulte la documentación del sistema operativo.
  • Reemplace <setting> y <value> según sea necesario para cada una de las propiedades de conexión, como se muestra en las secciones siguientes.
  • También puede agregar configuraciones de funcionalidad de controlador especiales o avanzadas, normalmente como pares <setting> y <value> adicionales.
  • En este ejemplo, reemplace <query> por una cadena de consulta de SQL SELECT.

El uso de una dirección URL de conexión o una colección de propiedades de conexión dependerá de los requisitos de la aplicación, la herramienta, el cliente, el SDK o la API de destino. En este artículo se proporcionan ejemplos de direcciones URL de conexión JDBC y colecciones mediante programación de propiedades de conexión JDBC para cada tipo de autenticación de Azure Databricks compatible.

El controlador JDBC de Databricks admite los siguientes tipos de autenticación de Azure Databricks:

Token de acceso personal de Azure Databricks

Para crear un token de acceso personal de Azure Databricks, haga lo siguiente:

  1. En el área de trabajo de Azure Databricks, haga clic en el nombre de usuario de Azure Databricks en la barra superior y, a continuación, seleccione Configuración en la lista desplegable.
  2. Haga clic en Desarrollador.
  3. Junto a Tokens de acceso, haga clic en Administrar.
  4. Haga clic en Generate new token (Generar nuevo token).
  5. (Opcional) Escriba un comentario que le ayude a identificar este token en el futuro y cambie la duración predeterminada del token de 90 días. Para crear un token sin duración (no recomendado), deje el cuadro Duración (días) vacío (en blanco).
  6. Haga clic en Generar.
  7. Copie el token mostrado en una ubicación segura y, a continuación, haga clic en Listo.

Nota:

Asegúrese de guardar el token copiado en una ubicación segura. No comparta el token copiado con otros usuarios. Si pierde el token copiado, no podrá volver a generar ese mismo token. Debe repetir el procedimiento para crear un nuevo token. Si pierde el token copiado o cree que el token se ha visto comprometido, Databricks recomienda eliminar inmediatamente ese token del área de trabajo haciendo clic en el icono de papelera (Revocar) situado junto al token en la página Tokens de acceso.

Si no puede crear o usar tokens en el área de trabajo, puede deberse a que el administrador del área de trabajo tiene tokens deshabilitados o no le ha concedido permiso para crear o usar tokens. Consulte el administrador del área de trabajo o lo siguiente:

Para autenticarse mediante un token de acceso personal de Azure Databricks, establezca las siguientes configuraciones.

Para una dirección URL de conexión JDBC con propiedades de configuración generales incrustadas y propiedades de credenciales confidenciales:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

Para código Java con propiedades de configuración generales y propiedades de credenciales confidenciales establecidas fuera de la dirección URL de conexión JDBC:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Para obtener un ejemplo de código Java completo que le permita adaptar el fragmento de código anterior a sus propias necesidades, consulte el ejemplo de código al principio de este artículo.
  • En la dirección URL anterior o el código Java, reemplace <personal-access-token> por el token de acceso personal de Databricks para el usuario del área de trabajo.
  • Para obtener los valores de <server-hostname> y <http-path>, vea Configuración de proceso del controlador JDBC de Databricks.

Token de Microsoft Entra ID (anteriormente Azure Active Directory)

Los controladores ODBC y JDBC 2.6.15 y versiones posteriores admiten tokens de Microsoft Entra ID (anteriormente Azure Active Directory) para un usuario de Azure Databricks o una entidad de servicio de Microsoft Entra ID.

Para crear un token de acceso de Microsoft Entra ID, haga lo siguiente:

Los tokens de acceso de Microsoft Entra ID tienen una duración predeterminada de aproximadamente 1 hora. Un token de acceso se puede actualizar mediante programación para una sesión existente sin que se interrumpa la conexión ejecutando el código descrito en Actualizar un token de acceso de Microsoft Entra ID. Para obtener instrucciones sobre cómo actualizar el token, vea la sección Configuring Authentication > Using OAuth 2.0 en la guía del controlador JDBC de Databricks.

Para autenticarse mediante un token de Microsoft Entra ID, establezca las siguientes configuraciones.

Para una dirección URL de conexión JDBC con propiedades de configuración generales incrustadas y propiedades de credenciales confidenciales:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>

Para código Java con propiedades de configuración generales y propiedades de credenciales confidenciales establecidas fuera de la dirección URL de conexión JDBC:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<microsoft-entra-id-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Para obtener un ejemplo de código Java completo que le permita adaptar el fragmento de código anterior a sus propias necesidades, consulte el ejemplo de código al principio de este artículo.
  • En la dirección URL anterior o el código Java, reemplace <microsoft-entra-id-token> por el token de Microsoft Entra ID.
  • Para obtener los valores de <server-hostname> y <http-path>, vea Configuración de proceso del controlador JDBC de Databricks.

Para más información, vea la sección Token Pass-through de la guía del controlador JDBC de Databricks.

tokens de OAuth 2.0 de

El controlador JDBC 2.6.36 y versiones posteriores admite un token de OAuth 2.0 para una entidad de servicio de Microsoft Entra ID. Esto también se conoce como autenticación de paso a través de tokens de OAuth 2.0.

  • Para crear un token de OAuth 2.0 para la autenticación transferida de tokens para una entidad de servicio de Microsoft Entra ID, consulte Generación manual y uso de tokens de acceso para la autenticación M2M de OAuth. Anote el valor de OAuth access_token de la entidad de servicio.

  • Para crear una entidad de servicio administrada de Microsoft Entra ID, consulte Administrar entidades de servicio.

    Importante

    El controlador JDBC 2.6.36 y versiones posteriores admiten el uso de secretos de OAuth de Azure Databricks para crear tokens de OAuth 2.0. No se admiten secretos de Microsoft Entra ID.

Los tokens de OAuth 2.0 tienen una duración predeterminada de 1 hora. Para generar un nuevo token de OAuth 2.0, repita este proceso.

Para autenticarse mediante la autenticación de paso a través de tokens de OAuth 2.0, establezca las siguientes configuraciones.

Para una dirección URL de conexión JDBC con propiedades de configuración generales incrustadas y propiedades de credenciales confidenciales:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>

Para código Java con propiedades de configuración generales y propiedades de credenciales confidenciales establecidas fuera de la dirección URL de conexión JDBC:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<oauth-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Para obtener un ejemplo de código Java completo que le permita adaptar el fragmento de código anterior a sus propias necesidades, consulte el ejemplo de código al principio de este artículo.
  • En la dirección URL anterior o el código Java, reemplace <oauth-token> por el token de OAuth de Azure Databricks. (Los tokens de Microsoft Entra ID no se admiten para la autenticación de paso a través del token de OAuth 2.0).
  • Para obtener los valores de <server-hostname> y <http-path>, vea Configuración de proceso del controlador JDBC de Databricks.

Para más información, vea la sección Token Pass-through de la guía del controlador JDBC de Databricks.

Autenticación de usuario a máquina (U2M) de OAuth

El controlador JDBC 2.6.36 y versiones posteriores admite la autenticación de usuario a máquina (U2M) de OAuth para un usuario de Azure Databricks. Esto también se conoce como autenticación basada en el explorador de OAuth 2.0.

La autenticación basada en el explorador de OAuth 2.0 o de usuario a máquina de OAuth no tiene requisitos previos. Los tokens de OAuth 2.0 tienen una duración predeterminada de 1 hora. La autenticación basada en el explorador de OAuth 2.0 o de usuario a máquina de OAuth debe actualizar automáticamente los tokens de OAuth 2.0 expirados.

Nota:

La autenticación basada en el explorador de OAuth 2.0 o de usuario a máquina de OAuth solo funciona con aplicaciones que se ejecutan localmente. No funciona con aplicaciones basadas en servidor o en la nube.

Para autenticarse mediante la autenticación basada en el explorador de OAuth 2.0 o de usuario a máquina (U2M) de OAuth, establezca las siguientes configuraciones.

Para una dirección URL de conexión JDBC con propiedades de configuración generales incrustadas y propiedades de credenciales confidenciales:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0

Para código Java con propiedades de configuración generales y propiedades de credenciales confidenciales establecidas fuera de la dirección URL de conexión JDBC:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "2")
p.put("TokenCachePassPhrase", "<passphrase>");
p.put("EnableTokenCache", "0");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Para obtener un ejemplo de código Java completo que le permita adaptar el fragmento de código anterior a sus propias necesidades, consulte el ejemplo de código al principio de este artículo.
  • En la dirección URL anterior o el código Java, reemplace <passphrase> por una frase de contraseña de su elección. El controlador usa esta clave para el cifrado de tokens de actualización.
  • Para obtener los valores de <server-hostname> y <http-path>, vea Configuración de proceso del controlador JDBC de Databricks.

Para más información, vea la sección Using Browser Based Authentication de la guía del controlador JDBC de Databricks.

Autenticación de máquina a máquina (M2M) de OAuth

El controlador JDBC 2.6.36 y versiones posteriores admite la autenticación de máquina a máquina (M2M) de OAuth para una entidad de servicio de Microsoft Entra ID. Esto también se conoce como autenticación de credenciales de cliente de OAuth 2.0.

Para configurar la autenticación de credenciales de cliente de OAuth M2M o OAuth 2.0, haga lo siguiente:

  1. Cree una entidad de servicio administrada de Microsoft Entra ID y asígnela a las cuentas y áreas de trabajo de Azure Databricks. Para ello, vea Administración de entidades de servicio.

    Importante

    El controlador JDBC 2.6.36 y versiones posteriores admite secretos de OAuth de Azure Databricks para la autenticación de credenciales de cliente de OAuth M2M u OAuth 2.0. No se admiten secretos de Microsoft Entra ID.

  2. Cree un secreto de OAuth de Azure Databricks para la entidad de servicio. Para ello, consulte Generación manual y uso de tokens de acceso para la autenticación M2M de OAuth.

  3. Proporcione a la entidad de servicio acceso al clúster o al almacenamiento. Vea permisos de proceso o Administración de un almacén de SQL.

Para autenticarse mediante la autenticación de credenciales de cliente de OAuth 2.0 o de máquina a máquina (M2M) de OAuth, establezca las siguientes configuraciones.

Para una dirección URL de conexión JDBC con propiedades de configuración generales incrustadas y propiedades de credenciales confidenciales:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>

Para código Java con propiedades de configuración generales y propiedades de credenciales confidenciales establecidas fuera de la dirección URL de conexión JDBC:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "1");
p.put("OAuth2ClientId", "<service-principal-application-id>");
p.put("OAuth2Secret", "<service-principal-oauth-secret>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Para obtener un ejemplo de código Java completo que le permita adaptar el fragmento de código anterior a sus propias necesidades, consulte el ejemplo de código al principio de este artículo.
  • En la dirección URL anterior o el código Java, reemplace los siguientes marcadores de posición:
    • Reemplace <service-principal-application-id> por el valor de identificador de aplicación (cliente) de la entidad de servicio.
    • Reemplace <service-principal-oauth-secret> por el secreto de OAuth de la entidad de servicio de Azure Databricks. (Los secretos de Microsoft Entra ID no se admiten para la autenticación de credenciales de cliente de OAuth M2M o OAuth 2.0).
    • Para obtener los valores de <server-hostname> y <http-path>, vea Configuración de proceso del controlador JDBC de Databricks.

Para más información, vea la sección Using M2M Based Authentication de la guía del controlador JDBC de Databricks.