Параметры проверки подлинности для драйвера JDBC Databricks
В этой статье описывается настройка параметров проверки подлинности Azure Databricks для драйвера JDBC Databricks.
Чтобы настроить подключение Azure Databricks для драйвера JDBC Databricks, необходимо объединить параметры вычислительных ресурсов, все параметры возможностей драйвера и следующие параметры проверки подлинности в URL-адрес подключения JDBC или программную коллекцию свойств подключения JDBC.
URL-адреса подключения JDBC используют следующий формат:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
- Сведения о получении значений и
<server-hostname>
<http-path>
см. в разделе "Параметры вычислений" для драйвера JDBC Databricks. - Замените
<setting>=<value>
по мере необходимости для каждого свойства подключения, как указано в следующих разделах. - Вы также можете добавить специальные или расширенные параметры возможностей драйвера.
Программные коллекции свойств подключения JDBC можно использовать в коде Java, например в следующем примере:
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);
}
}
-
DATABRICKS_SERVER_HOSTNAME
Задайте значения иDATABRICKS_HTTP_PATH
значения среды для целевого вычислительного ресурса Azure Databricks на серверном узле и значения пути HTTP соответственно. Чтобы получить эти значения, ознакомьтесь с параметрами вычислений для драйвера JDBC Databricks. Чтобы задать переменные среды, ознакомьтесь с документацией операционной системы. - Замените
<setting>
и<value>
по мере необходимости для каждого свойства подключения, как указано в следующих разделах. - Вы также можете добавлять специальные или расширенные параметры возможностей драйвера, как правило, как дополнительные
<setting>
и<value>
пары. - В этом примере замените
<query>
строку запроса SQLSELECT
.
Независимо от того, используется ли URL-адрес подключения или коллекция свойств подключения, зависит от требований целевого приложения, инструмента, клиента, пакета SDK или API. Примеры URL-адресов подключения JDBC и программных коллекций свойств подключения JDBC приведены в этой статье для каждого поддерживаемого типа проверки подлинности Azure Databricks.
Драйвер JDBC Databricks поддерживает следующие типы проверки подлинности Azure Databricks:
- Токен идентификатора Microsoft Entra
- Токены OAuth 2.0
- Проверка подлинности пользователей и компьютеров OAuth (U2M)
- Проверка подлинности на компьютере (M2M) OAuth
Токен идентификатора Microsoft Entra
Драйверы ODBC и JDBC версии 2.6.15 и выше поддерживают маркеры идентификатора Microsoft Entra для пользователя Azure Databricks или субъекта-службы Microsoft Entra ID.
Чтобы создать маркер доступа идентификатора Microsoft Entra, сделайте следующее:
- Для пользователя Azure Databricks можно использовать Azure CLI. См. получение токенов Microsoft Entra ID для пользователей с помощью Azure CLI.
- Сведения о служебном принципале Microsoft Entra ID см. в статье Получение токена доступа Microsoft Entra ID с помощью Azure CLI. Сведения о создании управляемого субъекта-службы идентификатора Microsoft Entra см. в разделе "Управление субъектами-службами".
Маркеры доступа к идентификатору Microsoft Entra имеют время существования по умолчанию около 1 часа. Токен доступа можно программно обновить в существующей сессии без разрыва соединения, выполнив код из раздела Обновление токена доступа Microsoft Entra ID. Инструкции по обновлению маркера см. в разделе Configuring Authentication > Using OAuth 2.0
" Руководство по драйверу Databricks JDBC".
Чтобы пройти проверку подлинности с помощью маркера идентификатора Microsoft Entra, задайте следующую конфигурацию.
Для URL-адреса подключения JDBC со встроенными общими свойствами конфигурации и свойствами конфиденциальных учетных данных:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>
Для кода Java с общими свойствами конфигурации и конфиденциальными свойствами учетных данных, заданными за пределами URL-адреса подключения 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);
// ...
- Полный пример кода Java, который можно адаптировать предыдущий фрагмент кода для собственных потребностей, см. в примере кода в начале этой статьи.
- В приведенном выше URL-адресе или коде Java замените
<microsoft-entra-id-token>
маркер идентификатора Microsoft Entra ID. - Сведения о получении значений и
<server-hostname>
<http-path>
см. в разделе "Параметры вычислений" для драйвера JDBC Databricks.
Дополнительные сведения см. в разделе в руководстве Token Pass-through
по драйверу Databricks JDBC.
Токены OAuth 2.0
JDBC driver 2.6.36 и более поздних версий поддерживает маркер OAuth 2.0 для субъекта-службы Идентификатора Microsoft Entra. Это также называется сквозной проверкой подлинности маркера OAuth 2.0.
- Чтобы создать токен OAuth 2.0 для сквозной аутентификации с передачей токена для субъекта-службы Microsoft Entra ID, см. , как вручную создавать и использовать токены доступа для аутентификации субъекта-службы с использованием OAuth. Запишите значение OAuth
access_token
субъекта-службы. - Сведения о создании управляемого субъекта-службы идентификатора Microsoft Entra см. в разделе "Управление субъектами-службами".
Внимание
Драйвер JDBC версии 2.6.36 и выше поддерживает использование секретов OAuth Azure Databricks для создания токенов OAuth 2.0. Секреты идентификатора Microsoft Entra не поддерживаются.
Маркеры OAuth 2.0 имеют время существования по умолчанию 1 час. Чтобы создать новый токен OAuth 2.0, повторите этот процесс.
Чтобы пройти проверку подлинности с помощью сквозной проверки подлинности маркера OAuth 2.0, задайте следующую конфигурацию.
Для URL-адреса подключения JDBC со встроенными общими свойствами конфигурации и свойствами конфиденциальных учетных данных:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
Для кода Java с общими свойствами конфигурации и конфиденциальными свойствами учетных данных, заданными за пределами URL-адреса подключения 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);
// ...
- Полный пример кода Java, который можно адаптировать предыдущий фрагмент кода для собственных потребностей, см. в примере кода в начале этой статьи.
- В приведенном выше URL-адресе или коде Java замените
<oauth-token>
маркером OAuth Azure Databricks. (Маркеры идентификатора Microsoft Entra не поддерживаются для сквозной проверки подлинности маркера OAuth 2.0.) - Сведения о получении значений и
<server-hostname>
<http-path>
см. в разделе "Параметры вычислений" для драйвера JDBC Databricks.
Дополнительные сведения см. в разделе в руководстве Token Pass-through
по драйверу Databricks JDBC.
Проверка подлинности пользователей и компьютеров OAuth (U2M)
JDBC driver 2.6.36 и более поздних версий поддерживает проверку подлинности пользователя OAuth на компьютере (U2M) для пользователя Azure Databricks. Это также называется проверкой подлинности на основе браузера OAuth 2.0.
Проверка подлинности на основе браузера OAuth U2M или OAuth 2.0 не имеет предварительных требований. Маркеры OAuth 2.0 имеют время существования по умолчанию 1 час. Аутентификация на основе браузера OAuth U2M или OAuth 2.0 должна автоматически обновлять истекшие токены OAuth 2.0 для вас.
Примечание.
Проверка подлинности на основе браузера OAuth U2M или OAuth 2.0 работает только с приложениями, которые выполняются локально. Он не работает с серверными или облачными приложениями.
Чтобы пройти проверку подлинности с помощью проверки подлинности на основе браузера OAuth (U2M) или OAuth 2.0 на основе браузера, задайте следующую конфигурацию.
Для URL-адреса подключения JDBC со встроенными общими свойствами конфигурации и свойствами конфиденциальных учетных данных:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
Для кода Java с общими свойствами конфигурации и конфиденциальными свойствами учетных данных, заданными за пределами URL-адреса подключения 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);
// ...
- Полный пример кода Java, который можно адаптировать предыдущий фрагмент кода для собственных потребностей, см. в примере кода в начале этой статьи.
- В приведенном выше URL-адресе или коде Java замените
<passphrase>
парольную фразу по своему усмотрению. Драйвер использует этот ключ для шифрования токенов обновления. - Сведения о получении значений и
<server-hostname>
<http-path>
см. в разделе "Параметры вычислений" для драйвера JDBC Databricks.
Дополнительные сведения см. в разделе в руководстве Using Browser Based Authentication
по драйверу Databricks JDBC.
Проверка подлинности на компьютере (M2M) OAuth
JDBC driver 2.6.36 и более поздних версий поддерживает проверку подлинности OAuth на компьютере (M2M) для субъекта-службы Идентификатора Microsoft Entra. Это также называется аутентификация OAuth 2.0 по учетным данным клиента.
Примечание.
JDBC 2.6.40.1071 устраняет проблему в более ранних версиях, которые подключаются с помощью M2M для рабочих областей приватного канала.
Чтобы настроить проверку подлинности учетных данных клиента OAuth M2M или OAuth 2.0, сделайте следующее:
Создайте управляемый субъект-службу идентификатора Microsoft Entra, а затем назначьте его учетным записям Azure Databricks и рабочим областям. Для этого см. раздел "Управление субъектами-службами".
Внимание
Драйвер JDBC 2.6.36 и выше поддерживает секреты OAuth Azure Databricks для проверки подлинности учетных данных клиента OAuth M2M или OAuth 2.0. Секреты идентификатора Microsoft Entra не поддерживаются.
Создайте секрет OAuth Azure Databricks для субъекта-службы. Для этого см. вручную сгенерировать и использовать токены доступа для аутентификации служебного принципала OAuth.
Предоставьте субъекту-службе доступ к кластеру или хранилищу. См . сведения о разрешениях вычислений или управлении хранилищем SQL.
Чтобы пройти проверку подлинности с помощью проверки подлинности с помощью проверки подлинности учетных данных клиента OAuth 2.0, задайте следующую конфигурацию.
Для URL-адреса подключения JDBC со встроенными общими свойствами конфигурации и свойствами конфиденциальных учетных данных:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
Для кода Java с общими свойствами конфигурации и конфиденциальными свойствами учетных данных, заданными за пределами URL-адреса подключения 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);
// ...
- Полный пример кода Java, который можно адаптировать предыдущий фрагмент кода для собственных потребностей, см. в примере кода в начале этой статьи.
- В приведенном выше URL-адресе или коде Java замените следующие заполнители:
- Замените
<service-principal-application-id>
значение идентификатора приложения (клиента) субъекта-службы. - Замените
<service-principal-oauth-secret>
секрет azure Databricks OAuth субъекта-службы. (Секреты идентификатора Microsoft Entra не поддерживаются для проверки подлинности клиента OAuth M2M или OAuth 2.0.0.) - Сведения о получении значений и
<server-hostname>
<http-path>
см. в разделе "Параметры вычислений" для драйвера JDBC Databricks.
- Замените
Дополнительные сведения см. в разделе в руководстве Using M2M Based Authentication
по драйверу Databricks JDBC.