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>]
- Para obtener los valores de
<server-hostname>
y<http-path>
, vea Configuración de proceso del controlador JDBC de Databricks. - Reemplace
<setting>=<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 valores de funcionalidad de controlador especiales o avanzados.
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
yDATABRICKS_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 SQLSELECT
.
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 Microsoft Entra ID
- tokens de OAuth 2.0
- Autenticación de usuario a máquina (U2M) de OAuth
- autenticación de máquina a máquina (M2M) de OAuth
Token de Microsoft Entra ID
Los controladores ODBC y JDBC 2.6.15 y versiones posteriores admiten tokens de Microsoft Entra ID 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:
- Para un usuario de Azure Databricks, puede usar la CLI de Azure. Consulte Obtención de tokens de Microsoft Entra ID para usuarios mediante la CLI de Azure.
- Para obtener una entidad de servicio de Microsoft Entra ID, consulte Obtener un token de acceso de Microsoft Entra ID con la CLI de Azure. Para crear una entidad de servicio administrada de Microsoft Entra ID, consulte Administrar entidades de servicio.
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.
Nota:
JDBC 2.6.40.1071 resuelve el problema en versiones anteriores que se conectaban con M2M para áreas de trabajo de Private Link no se admitía.
Para configurar la autenticación de credenciales de cliente de OAuth M2M o OAuth 2.0, haga lo siguiente:
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.
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.
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.
- Reemplace
Para más información, vea la sección Using M2M Based Authentication
de la guía del controlador JDBC de Databricks.