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 uzyskać wartości dla
<server-hostname>
i<http-path>
, zobacz Ustawienia obliczeń dla sterownika JDBC usługi 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);
}
}
- Ustaw wartości środowiska
DATABRICKS_SERVER_HOSTNAME
iDATABRICKS_HTTP_PATH
do wartości zasobu obliczeniowego Azure Databricks, odpowiednio na wartość nazwy hosta serwera oraz wartość ścieżki HTTP . Aby uzyskać te wartości, zobacz Ustawienia obliczeń dla sterownika JDBC Databricks. Aby ustawić zmienne środowiskowe, 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 Uzyskiwanie tokenów Microsoft Entra ID dla użytkowników za pomocą Azure CLI.
- Aby uzyskać głównego użytkownika usługi Microsoft Entra ID, zobacz Uzyskiwanie tokenu dostępu Microsoft Entra ID za pomocą 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 Odśwież token dostępu microsoft Entra ID. Aby uzyskać instrukcje dotyczące odświeżania tokenu, zobacz sekcję Configuring Authentication > Using OAuth 2.0
w przewodniku sterowników Databricks JDBC.
Aby uwierzytelnić się przy użyciu tokenu identyfikatora Entra firmy Microsoft, ustaw 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=<microsoft-entra-id-token>
W przypadku kodu Java z ogólnymi właściwościami konfiguracji i poufnymi właściwościami poświadczeń ustawionymi 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 uzyskać wartości 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 przepustowego dla głównego obiektu usługi Microsoft Entra ID, zobacz Ręcznie generuj i używaj tokenów dostępu dla uwierzytelniania głównego obiektu usługi OAuth. 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 wygenerować nowy token OAuth 2.0, powtórz ten proces.
Aby uwierzytelnić się przy użyciu uwierzytelniania przekazywanego tokenu OAuth 2.0, ustaw 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ń ustawionymi 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 uzyskać wartości 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, takie jak OAuth U2M lub OAuth 2.0, powinno automatycznie odświeżać wygasłe tokeny OAuth 2.0.
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 na komputerze (U2M) lub uwierzytelniania opartego na przeglądarce OAuth 2.0, ustaw 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ń ustawionymi 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 odświeżania. - Aby uzyskać wartości 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ż znane jako uwierzytelnianie za pomocą poświadczeń klienta OAuth 2.0 .
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 poświadczeń klienta OAuth M2M lub OAuth 2.0, 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 tajne dane OAuth usługi Azure Databricks do uwierzytelniania przy użyciu OAuth M2M lub poświadczeń klienta OAuth 2.0. 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ęczne generowanie tokenów dostępu i używanie ich do uwierzytelniania głównej tożsamości usługi OAuth.
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 maszynowego do maszyny OAuth (M2M) lub uwierzytelniania poświadczeń klienta OAuth 2.0, ustaw 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=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ń ustawionymi 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. (Wpisy tajne identyfikatora entra firmy Microsoft nie są obsługiwane w przypadku uwierzytelniania OAuth M2M lub OAuth 2.0 poświadczeń klienta). - Aby uzyskać wartości 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.