Databricks JDBC 드라이버에 대한 인증 설정
이 문서에서는 Databricks JDBC 드라이버에 대한 Azure Databricks 인증 설정을 구성하는 방법을 설명합니다.
Databricks JDBC 드라이버에 대한 Azure Databricks 연결을 구성하려면 컴퓨팅 리소스 설정, 드라이버 기능 설정 및 다음 인증 설정을 JDBC 연결 URL이나 JDBC 연결 속성의 프로그래밍 방식 컬렉션으로 결합해야 합니다.
JDBC 연결 URL은 다음 형식을 사용합니다.
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
및 을 위한 설정을 보려면 및 Databricks JDBC 드라이버의 컴퓨팅 설정을 참조하세요. - 필요에 따라
<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);
}
}
- 대상 Azure Databricks 컴퓨팅 리소스의 서버 호스트 이름 및 HTTP 경로values각각
DATABRICKS_SERVER_HOSTNAME
및DATABRICKS_HTTP_PATH
환경 valuesSet. 이러한Databricks JDBC 드라이버대한 컴퓨팅 설정을 참조하세요. set 환경 변수에 대해, 운영 체제 설명서를 참조하세요. - 필요에 따라
<setting>
및<value>
을(를) 다음 섹션에 나열된 각 연결 속성에 대해 바꾸세요. - 특수 또는 고급 드라이버 기능 설정을 추가
<setting>
및<value>
쌍의 형태로 추가할 수도 있습니다. - 이 예제에서는
<query>
을(를) SQLSELECT
쿼리 스트링으로 바꿉니다.
연결 URL을 사용할지 아니면 연결 속성 컬렉션을 사용할지는 대상 앱, 도구, 클라이언트, SDK 또는 API의 요구 사항에 따라 달라집니다. JDBC 연결 URL 및 JDBC 연결 속성의 프로그래밍 방식 컬렉션에 대한 예제는 지원되는 각 Azure Databricks 인증 유형에 대해 이 문서에서 제공됩니다.
Databricks JDBC 드라이버는 다음과 같은 Azure Databricks 인증 유형을 지원합니다.
Microsoft Entra ID 토큰
ODBC 및 JDBC 드라이버 2.6.15 이상은 Azure Databricks 사용자 또는 Microsoft Entra ID 서비스 주체에 대한 Microsoft Entra ID 토큰을 지원합니다.
Microsoft Entra ID 액세스 토큰을 만들려면 다음을 수행합니다:
- Azure Databricks 사용자의 경우 Azure CLI를 사용할 수 있습니다. Azure CLI를 사용하여 사용자에 대한 Microsoft Entra ID 토큰
을 참조하세요. - Microsoft Entra ID 서비스 주체를 위해 Azure CLI를 사용하여 Microsoft Entra ID 액세스 토큰
을 참조하세요. Microsoft Entra ID 관리 서비스 주체를 만들려면 서비스 주체 관리를 참조하세요.
Microsoft Entra ID 액세스 토큰의 기본 수명은 약 1시간입니다.
Refresh 코드를 실행하여 연결을 중단하지 않고 프로그래밍 방식으로 기존 세션의 Microsoft Entra ID 액세스 토큰를 새로 고칠 수 있습니다.
refresh 토큰 방법에 대한 지침은 Databricks JDBC 드라이버 가이드의 Configuring Authentication > Using OAuth 2.0
섹션을 참조하십시오.
Microsoft Entra ID 토큰을 사용하여 인증하려면 set 구성을 따르세요.
내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>
일반 구성 속성과 중요한 자격 증명 속성이 있는 Java 코드의 경우 JDBC 연결 URL 외부에 set.
// ...
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 토큰으로 바꾸세요. 및 대한 Databricks JDBC 드라이버대한 컴퓨팅 설정을 참조하세요.
자세한 내용은 Token Pass-through
의 섹션을 참조하세요.
OAUTH 2.0 토큰
JDBC 드라이버 2.6.36 이상에서는 Microsoft Entra ID 서비스 주체에 대한 OAuth 2.0 토큰을 지원합니다. 이는 OAuth 2.0 토큰 통과 인증이라고도 합니다.
- Microsoft Entra ID 서비스 주체에 대한 토큰 통과 인증을 위한 OAuth 2.0 토큰을 만들려면 수동으로 generate OAuth M2M 인증액세스 토큰을 사용합니다. 서비스 주체의 OAuth
access_token
값을 기록해 둡니다. - Microsoft Entra ID 관리 서비스 주체를 만들려면 서비스 주체 관리를 참조하세요.
Important
JDBC 드라이버 2.6.36 이상에서는 Azure Databricks OAuth 비밀을 사용하여 OAuth 2.0 토큰을 생성하는 작업을 지원합니다. Microsoft Entra ID 비밀은 지원되지 않습니다.
OAuth 2.0 토큰의 기본 수명은 1시간입니다. 새 OAuth 2.0 토큰을 generate 이 프로세스를 반복합니다.
OAuth 2.0 토큰 패스스루 인증을 사용하여 인증하려면 set 다음 설정을 구성하십시오.
내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
JDBC 연결 URL 외부에서 일반 구성 속성과 민감한 자격 증명 속성이 포함된 Java 코드의 경우 set.
// ...
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>
을(를) Azure Databricks OAuth 토큰으로 바꾸세요. (Microsoft Entra ID 토큰은 OAuth 2.0 토큰 통과 인증에 대해 지원되지 않습니다.) -
get
values을
<server-hostname>
및<http-path>
의 컴퓨팅 설정에 대해 Databricks JDBC 드라이버를 참조하세요.
자세한 내용은 Token Pass-through
의 섹션을 참조하세요.
OAuth 사용자 대 컴퓨터(U2M) 인증
JDBC 드라이버 2.6.36 이상은 Azure Databricks 사용자에 대한 OAuth 사용자-컴퓨터(U2M) 인증을 지원합니다. 이는 OAuth 2.0 브라우저 기반 인증이라고도 합니다.
OAuth U2M 또는 OAuth 2.0 브라우저 기반 인증에는 필수 구성 요소가 없습니다. OAuth 2.0 토큰의 기본 수명은 1시간입니다. OAuth U2M 또는 OAuth 2.0 브라우저 기반 인증은 자동으로 만료된 OAuth 2.0 토큰을 refresh 합니다.
참고 항목
OAuth U2M 또는 OAuth 2.0 브라우저 기반 인증은 로컬에서 실행되는 응용 프로그램에서만 작동합니다. 서버 기반 또는 클라우드 기반 응용 프로그램에서는 작동하지 않습니다.
OAuth 사용자-컴퓨터 또는 OAuth 2.0 브라우저 기반 인증을 사용하여 인증하려면 다음과 같이 설정하십시오: set.
내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
일반 구성 속성과 중요한 자격 증명 속성 set이 있는 Java 코드의 경우, 두 속성 모두 JDBC 연결 URL 외부에 존재합니다.
// ...
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>
을(를) 원하는 암호로 바꾸세요. 드라이버는 refresh 토큰 암호화를 위해 이 키를 사용합니다. -
get
values 및
<server-hostname>
와<http-path>
대한 Databricks JDBC 드라이버의 컴퓨팅 설정을 참조하세요.
자세한 내용은 Using Browser Based Authentication
의 섹션을 참조하세요.
OAuth M2M(machine-to-machine) 인증
JDBC 드라이버 2.6.36 이상은 Microsoft Entra ID 서비스 주체에 대한 OAuth 사용자-컴퓨터(M2M)) 인증을 지원합니다. 이를 OAuth 2.0 클라이언트 credentials 인증이라고도 합니다.
참고 항목
JDBC 2.6.40.1071은 프라이빗 링크 작업 영역에 M2M을 사용하여 연결하는 것이 지원되지 않는 이전 버전의 문제를 해결합니다.
OAuth M2M 또는 OAuth 2.0 클라이언트 credentials 인증을 구성하려면 다음을 수행합니다.
Microsoft Entra ID 관리 서비스 주체를 만든 다음 Azure Databricks 계정 및 작업 영역에 할당합니다. 이 작업을 수행하려면 서비스 주체 관리를 참조하세요.
Important
JDBC 드라이버 2.6.36 이상에서는 OAuth M2M 또는 OAuth 2.0 클라이언트 credentials 인증에 대한 Azure Databricks OAuth 비밀을 지원합니다. Microsoft Entra ID 비밀은 지원되지 않습니다.
서비스 주체에 대한 Azure Databricks OAuth 비밀을 만듭니다. 이 작업을 수행하려면 를 수동으로 generate 참조하고 OAuth M2M 인증에 대한 액세스 토큰을 사용하세요.
서비스 주체에게 클러스터 또는 웨어하우스에 대한 액세스 권한을 부여합니다. 컴퓨팅 사용 권한 또는 SQL 웨어하우스 관리를 참조하세요.
OAuth M2M(컴퓨터 대 컴퓨터) 또는 OAuth 2.0 클라이언트 credentials 인증을 사용하여 인증하려면 다음 구성을 set 설정하십시오.
내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
일반 구성 속성과 중요한 자격 증명 속성이 있는 Java 코드의 경우 JDBC 연결 URL 외부에 set.
// ...
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>
을(를) 서비스 주체의 응용 프로그램 (클라이언트) ID 값으로 바꿉니다. -
<service-principal-oauth-secret>
을(를) 서비스 주체의 Azure Databricks OAuth 비밀로 바꿉니다. (Microsoft Entra ID 비밀은 OAuth M2M 또는 OAuth 2.0 클라이언트 credentials 인증에 지원되지 않습니다.) 및 에 대한 을 하려면 Databricks JDBC 드라이버의 컴퓨팅 설정을 참조하십시오.
-