Ustawienia uwierzytelniania sterownika JDBC usługi Databricks
W tym artykule opisano sposób konfigurowania ustawień uwierzytelniania usługi Azure Databricks dla sterownika JDBC usługi Databricks.
Aby skonfigurować połączenie usługi Azure Databricks dla sterownika JDBC usługi Databricks, należy połączyć ustawienia zasobów obliczeniowych, wszystkie ustawienia możliwości sterownika i następujące ustawienia uwierzytelniania, w adres URL połączenia JDBC lub programową kolekcję właściwości połączenia JDBC.
Adresy URL połączeń JDBC używają następującego formatu:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
- Aby getvalues dla
<server-hostname>
i<http-path>
, zobacz ustawienia obliczeń dla sterownika JDBC Databricks. - Zastąp element
<setting>=<value>
zgodnie z potrzebami dla każdej właściwości połączenia, jak pokazano w poniższych sekcjach. - Możesz również dodać specjalne lub zaawansowane ustawienia możliwości sterownika.
Kolekcje programowe właściwości połączenia JDBC mogą być używane w kodzie Języka Java, na przykład w poniższym przykładzie:
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);
}
}
-
Set
DATABRICKS_SERVER_HOSTNAME
iDATABRICKS_HTTP_PATH
środowisko values na docelowy zasób obliczeniowy Azure Databricks, czyli odpowiednio na Server Hostname i ścieżkę HTTPvalues. Aby get tych values, zobacz Ustawienia obliczeń dla sterownika JDBC usługi Databricks. Aby zobaczyć zmienne środowiskowe set, zapoznaj się z dokumentacją systemu operacyjnego. - Zastąp
<setting>
wartości i<value>
zgodnie z potrzebami dla każdej właściwości połączenia, jak pokazano w poniższych sekcjach. - Można również dodać specjalne lub zaawansowane ustawienia możliwości sterownika, zazwyczaj jako dodatkowe
<setting>
i<value>
pary. - W tym przykładzie zastąp ciągiem
<query>
zapytania SQLSELECT
.
Niezależnie od tego, czy używasz adresu URL połączenia, czy kolekcji właściwości połączenia, zależy od wymagań aplikacji docelowej, narzędzia, klienta, zestawu SDK lub interfejsu API. Przykłady adresów URL połączeń JDBC i kolekcji programowych właściwości połączenia JDBC znajdują się w tym artykule dla każdego obsługiwanego typu uwierzytelniania usługi Azure Databricks.
Sterownik JDBC usługi Databricks obsługuje następujące typy uwierzytelniania usługi Azure Databricks:
- Token identyfikatora entra firmy Microsoft
- Tokeny protokołu OAuth 2.0
- Uwierzytelnianie typu użytkownik-komputer (U2M) OAuth
- Uwierzytelnianie OAuth między maszynami (M2M)
Token identyfikatora entra firmy Microsoft
Sterowniki ODBC i JDBC 2.6.15 i nowsze obsługują tokeny identyfikatorów Entra firmy Microsoft dla użytkownika usługi Azure Databricks lub jednostki usługi Microsoft Entra ID.
Aby utworzyć token dostępu microsoft Entra ID, wykonaj następujące czynności:
- W przypadku użytkownika usługi Azure Databricks możesz użyć interfejsu wiersza polecenia platformy Azure. Zobacz Get tokeny identyfikatorów entra firmy Microsoft dla użytkowników przy użyciu interfejsu wiersza polecenia platformy Azure.
- Aby uzyskać główny obiekt usługi Microsoft Entra ID, zobacz Get token dostępu Microsoft Entra ID z Azure CLI. Aby utworzyć jednostkę usługi zarządzanej identyfikatora entra firmy Microsoft, zobacz Zarządzanie jednostkami usługi.
Tokeny dostępu identyfikatora Entra firmy Microsoft mają domyślny okres istnienia około 1 godziny. Token dostępu można odświeżyć programowo dla istniejącej sesji bez przerywania połączenia, uruchamiając kod w Refresh token dostępu Microsoft Entra ID. Aby uzyskać instrukcje dotyczące sposobu refresh tokenu, zobacz sekcję Configuring Authentication > Using OAuth 2.0
w przewodniku sterowników JDBC usługi databricks.
Aby uwierzytelnić się przy użyciu tokenu identyfikatora Entra firmy Microsoft, skonfiguruj następujące ustawienia: set.
W przypadku adresu URL połączenia JDBC z osadzonymi właściwościami konfiguracji ogólnej i poufnymi właściwościami poświadczeń:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>
W przypadku kodu Java z ogólnymi właściwościami konfiguracji i poufnymi właściwościami poświadczeń set poza adresem URL połączenia 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);
// ...
- Pełny przykład kodu Java, który można dostosować poprzedni fragment kodu do własnych potrzeb, zobacz przykładowy kod na początku tego artykułu.
- W poprzednim adresie URL lub kodzie Java zastąp
<microsoft-entra-id-token>
ciąg tokenem Microsoft Entra ID. - Aby getvalues dla
<server-hostname>
i<http-path>
, zobacz ustawienia obliczeń dla sterownika JDBC usługi Databricks.
Aby uzyskać więcej informacji, zobacz sekcję Token Pass-through
w przewodniku sterowników JDBC usługi Databricks.
Tokeny protokołu OAuth 2.0
Sterownik JDBC 2.6.36 lub nowszy obsługuje token OAuth 2.0 dla jednostki usługi Microsoft Entra ID. Jest to również nazywane uwierzytelnianiem przekazywanym tokenu OAuth 2.0.
- Aby utworzyć token OAuth 2.0 na potrzeby uwierzytelniania przekaźnika tokenu dla jednostki usługi Microsoft Entra ID, zobacz Ręcznie generate i użyj tokenów dostępu do uwierzytelniania OAuth M2M. Zanotuj wartość OAuth
access_token
jednostki usługi. - Aby utworzyć jednostkę usługi zarządzanej identyfikatora entra firmy Microsoft, zobacz Zarządzanie jednostkami usługi.
Ważne
Sterownik JDBC 2.6.36 lub nowszy obsługuje używanie wpisów tajnych protokołu OAuth usługi Azure Databricks do tworzenia tokenów OAuth 2.0. Wpisy tajne identyfikatora Entra firmy Microsoft nie są obsługiwane.
Tokeny OAuth 2.0 mają domyślny okres istnienia 1 godziny. Aby generate nowy token OAuth 2.0, powtórz ten proces.
Aby uwierzytelnić się przy użyciu uwierzytelniania przekazywanego tokenu OAuth 2.0, set następującą konfigurację.
W przypadku adresu URL połączenia JDBC z osadzonymi właściwościami konfiguracji ogólnej i poufnymi właściwościami poświadczeń:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
W przypadku kodu Java z ogólnymi właściwościami konfiguracji i poufnymi właściwościami poświadczeń set poza adresem URL połączenia 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);
// ...
- Pełny przykład kodu Java, który można dostosować poprzedni fragment kodu do własnych potrzeb, zobacz przykładowy kod na początku tego artykułu.
- W poprzednim adresie URL lub kodzie Java zastąp element
<oauth-token>
tokenem OAuth usługi Azure Databricks. (Tokeny identyfikatora Entra firmy Microsoft nie są obsługiwane w przypadku uwierzytelniania przekazywanego tokenu OAuth 2.0). - Aby getvalues dla
<server-hostname>
i<http-path>
, zobacz Ustawienia obliczeń dla sterownika JDBC usługi Databricks.
Aby uzyskać więcej informacji, zobacz sekcję Token Pass-through
w przewodniku sterowników JDBC usługi Databricks.
Uwierzytelnianie typu użytkownik-komputer (U2M) OAuth
Sterownik JDBC w wersji 2.6.36 lub nowszej obsługuje uwierzytelnianie użytkownika-komputer OAuth (U2M) dla użytkownika usługi Azure Databricks. Jest to również nazywane uwierzytelnianiem opartym na przeglądarce OAuth 2.0.
Uwierzytelnianie oparte na przeglądarce OAuth U2M lub OAuth 2.0 nie ma wymagań wstępnych. Tokeny OAuth 2.0 mają domyślny okres istnienia 1 godziny. Uwierzytelnianie oparte na przeglądarce OAuth U2M lub OAuth 2.0 powinno refresh wygasłe tokeny OAuth 2.0 automatycznie.
Uwaga
Uwierzytelnianie oparte na przeglądarce OAuth U2M lub OAuth 2.0 działa tylko z aplikacjami, które działają lokalnie. Nie działa z aplikacjami opartymi na serwerze ani w chmurze.
Aby uwierzytelnić się przy użyciu uwierzytelniania OAuth typu użytkownik-komputer (U2M) lub uwierzytelniania opartego na przeglądarce OAuth 2.0, set następującą konfigurację.
W przypadku adresu URL połączenia JDBC z osadzonymi właściwościami konfiguracji ogólnej i poufnymi właściwościami poświadczeń:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
W przypadku kodu Java z ogólnymi właściwościami konfiguracji i poufnymi właściwościami poświadczeń set poza adresem URL połączenia 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);
// ...
- Pełny przykład kodu Java, który można dostosować poprzedni fragment kodu do własnych potrzeb, zobacz przykładowy kod na początku tego artykułu.
- W poprzednim adresie URL lub kodzie Java zastąp
<passphrase>
wybranym hasłem. Sterownik używa tego klucza do szyfrowania tokenu refresh. - Aby getvalues dla
<server-hostname>
i<http-path>
, zobacz Ustawienia obliczeń dla sterownika JDBC usługi Databricks.
Aby uzyskać więcej informacji, zobacz sekcję Using Browser Based Authentication
w przewodniku sterowników JDBC usługi Databricks.
Uwierzytelnianie maszyny do maszyny OAuth (M2M)
Sterownik JDBC 2.6.36 lub nowszy obsługuje uwierzytelnianie maszyny do maszyny OAuth (M2M) dla jednostki usługi Microsoft Entra ID. Jest to również nazywane uwierzytelnianiem klienta OAuth 2.0 credentials.
Uwaga
JDBC 2.6.40.1071 rozwiązuje problem w starszych wersjach, które łączą się przy użyciu M2M dla obszarów roboczych łącza prywatnego nie były obsługiwane.
Aby skonfigurować uwierzytelnianie klienta OAuth M2M lub OAuth 2.0 credentials, wykonaj następujące czynności:
Utwórz jednostkę usługi zarządzanej microsoft Entra ID, a następnie przypisz ją do kont i obszarów roboczych usługi Azure Databricks. Aby to zrobić, zobacz Zarządzanie jednostkami usługi.
Ważne
Sterownik JDBC 2.6.36 lub nowszy obsługuje sekrety OAuth usługi Azure Databricks dla uwierzytelniania OAuth M2M lub klienta OAuth 2.0 credentials. Wpisy tajne identyfikatora Entra firmy Microsoft nie są obsługiwane.
Utwórz wpis tajny OAuth usługi Azure Databricks dla jednostki usługi. Aby to zrobić, zobacz Ręcznie generate i użyj tokenów dostępu do uwierzytelniania OAuth M2M.
Nadaj jednostce usługi dostęp do klastra lub magazynu. Zobacz Uprawnienia obliczeniowe lub Zarządzanie usługą SQL Warehouse.
Aby uwierzytelnić się przy użyciu uwierzytelniania maszyn-maszyna OAuth (M2M) lub uwierzytelniania klienta OAuth 2.0 credentials, użyj set następującej konfiguracji.
W przypadku adresu URL połączenia JDBC z osadzonymi właściwościami konfiguracji ogólnej i poufnymi właściwościami poświadczeń:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
W przypadku kodu Java z ogólnymi właściwościami konfiguracji i poufnymi właściwościami poświadczeń set poza adresem URL połączenia 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);
// ...
- Pełny przykład kodu Java, który można dostosować poprzedni fragment kodu do własnych potrzeb, zobacz przykładowy kod na początku tego artykułu.
- W poprzednim adresie URL lub kodzie Java zastąp następujące symbole zastępcze:
- Zastąp wartość
<service-principal-application-id>
identyfikatorem aplikacji (klienta) jednostki usługi. - Zastąp element
<service-principal-oauth-secret>
wpisem tajnym OAuth jednostki usługi Azure Databricks. (Tajne dane Microsoft Entra ID nie są obsługiwane dla OAuth M2M lub uwierzytelniania OAuth 2.0 klienta credentials). - Aby getvalues dla
<server-hostname>
i<http-path>
, zobacz Ustawienia obliczeń dla sterownika JDBC usługi Databricks.
- Zastąp wartość
Aby uzyskać więcej informacji, zobacz sekcję Using M2M Based Authentication
w przewodniku sterowników JDBC usługi Databricks.