Поделиться через


Параметры проверки подлинности для драйвера 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>]
  • Сведения о получении значений и <http-path><server-hostname> см. в разделе "Параметры вычислений" для драйвера 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> строку запроса SQL SELECT .

Независимо от того, используется ли URL-адрес подключения или коллекция свойств подключения, зависит от требований целевого приложения, инструмента, клиента, пакета SDK или API. Примеры URL-адресов подключения JDBC и программных коллекций свойств подключения JDBC приведены в этой статье для каждого поддерживаемого типа проверки подлинности Azure Databricks.

Драйвер JDBC Databricks поддерживает следующие типы проверки подлинности Azure Databricks:

Личный маркер доступа Azure Databricks

Чтобы создать личный маркер доступа Azure Databricks, сделайте следующее:

  1. В рабочей области Azure Databricks щелкните имя пользователя Azure Databricks в верхней строке и выберите "Параметры " в раскрывающемся списке.
  2. Щелкните "Разработчик".
  3. Рядом с маркерами доступа нажмите кнопку "Управление".
  4. Щелкните Generate new token (Создание нового маркера).
  5. (Необязательно) Введите комментарий, который поможет определить этот маркер в будущем и изменить время существования маркера по умолчанию в течение 90 дней. Чтобы создать маркер без времени существования (не рекомендуется), оставьте поле время существования (дни) пустым (пустым).
  6. Щелкните Создать.
  7. Скопируйте отображаемый маркер в безопасное расположение и нажмите кнопку "Готово".

Примечание.

Не забудьте сохранить скопированный маркер в безопасном расположении. Не делитесь скопированным маркером с другими пользователями. Если вы потеряете скопированный маркер, вы не сможете повторно создать тот же маркер. Вместо этого необходимо повторить эту процедуру, чтобы создать новый маркер. Если вы потеряете скопированный маркер или считаете, что маркер скомпрометирован, Databricks настоятельно рекомендует немедленно удалить этот маркер из рабочей области, щелкнув значок корзины (отозвать) рядом с маркером на странице маркеров доступа.

Если вы не можете создавать или использовать маркеры в рабочей области, это может быть связано с тем, что администратор рабочей области отключил маркеры или не предоставил вам разрешение на создание или использование маркеров. Ознакомьтесь с администратором рабочей области или следующими разделами:

Чтобы пройти проверку подлинности с помощью личного маркера доступа Azure Databricks, задайте следующую конфигурацию.

Для URL-адреса подключения JDBC со встроенными общими свойствами конфигурации и свойствами конфиденциальных учетных данных:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-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", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Полный пример кода Java, который можно адаптировать предыдущий фрагмент кода для собственных потребностей, см. в примере кода в начале этой статьи.
  • В приведенном выше URL-адресе или коде Java замените <personal-access-token> маркер личного доступа Databricks для пользователя рабочей области.
  • Сведения о получении значений и <http-path><server-hostname> см. в разделе "Параметры вычислений" для драйвера JDBC Databricks.

Токен идентификатора Microsoft Entra

Драйверы ODBC и JDBC версии 2.6.15 и выше поддерживают маркеры идентификатора Microsoft Entra для пользователя Azure Databricks или субъекта-службы Microsoft Entra ID.

Чтобы создать маркер доступа идентификатора Microsoft Entra, сделайте следующее:

Маркеры доступа к идентификатору Microsoft Entra имеют время существования по умолчанию около 1 часа. Маркер доступа можно обновить программным способом для существующего сеанса без нарушения подключения, выполнив код в обновлении маркера доступа идентификатора Microsoft Entra. Инструкции по обновлению маркера см. в разделе 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.
  • Сведения о получении значений и <http-path><server-hostname> см. в разделе "Параметры вычислений" для драйвера 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 M2M". Запишите значение 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.)
  • Сведения о получении значений и <http-path><server-hostname> см. в разделе "Параметры вычислений" для драйвера 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> парольную фразу по своему усмотрению. Драйвер использует этот ключ для шифрования маркеров обновления.
  • Сведения о получении значений и <http-path><server-hostname> см. в разделе "Параметры вычислений" для драйвера 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, сделайте следующее:

  1. Создайте управляемый субъект-службу идентификатора Microsoft Entra, а затем назначьте его учетным записям Azure Databricks и рабочим областям. Для этого см. раздел "Управление субъектами-службами".

    Внимание

    Драйвер JDBC 2.6.36 и выше поддерживает секреты OAuth Azure Databricks для проверки подлинности учетных данных клиента OAuth M2M или OAuth 2.0. Секреты идентификатора Microsoft Entra не поддерживаются.

  2. Создайте секрет OAuth Azure Databricks для субъекта-службы. Для этого см. инструкции по созданию и использованию маркеров доступа вручную для проверки подлинности OAuth M2M.

  3. Предоставьте субъекту-службе доступ к кластеру или хранилищу. См . сведения о разрешениях вычислений или управлении хранилищем 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.)
    • Сведения о получении значений и <http-path><server-hostname> см. в разделе "Параметры вычислений" для драйвера JDBC Databricks.

Дополнительные сведения см. в разделе в руководстве Using M2M Based Authenticationпо драйверу Databricks JDBC.