다음을 통해 공유


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);
  }
}
  • DATABRICKS_SERVER_HOSTNAMEDATABRICKS_HTTP_PATH 환경 값을 대상 Azure Databricks 컴퓨팅 리소스의 서버 호스트 이름HTTP 경로 값으로 설정합니다. 이러한 값을 얻으려면 Databricks JDBC 드라이버대한 Compute 설정을 참조하세요. 환경 변수를 설정하려면 운영 체제 설명서를 참조하세요.
  • 필요에 따라 <setting><value>을(를) 다음 섹션에 나열된 각 연결 속성에 대해 바꾸세요.
  • 특수 또는 고급 드라이버 기능 설정을 추가 <setting><value> 쌍의 형태로 추가할 수도 있습니다.
  • 이 예제에서는 <query>을(를) SQL SELECT 쿼리 스트링으로 바꿉니다.

연결 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시간입니다. Microsoft Entra ID 액세스 토큰새로 고침 코드를 실행하여 연결을 중단하지 않고 기존 세션에 대해 액세스 토큰을 프로그래밍 방식으로 새로 고칠 수 있습니다. 토큰을 새로 고치는 방법에 대한 지침은 Configuring Authentication > Using OAuth 2.0 섹션을 참조하세요.

Microsoft Entra ID 토큰을 사용하여 인증하려면 다음 구성을 설정합니다.

내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>

JDBC 연결 URL 외부에서 설정된 일반 구성 속성 및 중요한 자격 증명 속성이 있는 Java 코드의 경우:

// ...
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 토큰을 만들려면 OAuth 서비스 주체 인증 대한 액세스 토큰 수동 생성 및 사용참조하세요. 서비스 주체의 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 토큰을 생성하려면 이 프로세스를 반복합니다.

OAuth 2.0 토큰 통과 인증을 사용하여 인증하려면 다음 구성을 설정합니다.

내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>

JDBC 연결 URL 외부에서 설정된 일반 구성 속성 및 중요한 자격 증명 속성이 있는 Java 코드의 경우:

// ...
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 토큰 통과 인증에 대해 지원되지 않습니다.)
  • 값을 얻으려면 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 토큰을 자동으로 새로 고쳐야 합니다.

참고 항목

OAuth U2M 또는 OAuth 2.0 브라우저 기반 인증은 로컬에서 실행되는 응용 프로그램에서만 작동합니다. 서버 기반 또는 클라우드 기반 응용 프로그램에서는 작동하지 않습니다.

OAuth U2M(사용자-컴퓨터) 또는 OAuth 2.0 브라우저 기반 인증을 사용하여 인증하려면 다음 구성을 설정합니다.

내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 JDBC 연결 URL의 경우:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0

JDBC 연결 URL 외부에서 설정된 일반 구성 속성 및 중요한 자격 증명 속성이 있는 Java 코드의 경우:

// ...
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>을(를) 원하는 암호로 바꾸세요. 드라이버는 이 키를 사용하여 토큰 암호화를 새로 고칩니다.
  • 값을 얻으려면 Databricks JDBC 드라이버대한 컴퓨팅 설정을 참조하세요.

자세한 내용은 Using Browser Based Authentication 섹션을 참조하세요.

OAuth M2M(machine-to-machine) 인증

JDBC 드라이버 2.6.36 이상은 Microsoft Entra ID 서비스 주체에 대한 OAuth 사용자-컴퓨터(M2M)) 인증을 지원합니다. 이를 OAuth 2.0 클라이언트 자격 증명 인증이라고도 합니다.

참고 항목

JDBC 2.6.40.1071은 프라이빗 링크 작업 영역에 M2M을 사용하여 연결하는 것이 지원되지 않는 이전 버전의 문제를 해결합니다.

OAuth M2M 또는 OAuth 2.0 클라이언트 자격 증명 인증을 구성하려면 다음을 수행합니다.

  1. Microsoft Entra ID 관리 서비스 주체를 만든 다음 Azure Databricks 계정 및 작업 영역에 할당합니다. 이 작업을 수행하려면 서비스 주체 관리를 참조하세요.

    Important

    JDBC 드라이버 2.6.36 이상에서는 OAuth M2M 또는 OAuth 2.0 클라이언트 자격 증명 인증에 대한 Azure Databricks OAuth 비밀을 지원합니다. Microsoft Entra ID 비밀은 지원되지 않습니다.

  2. 서비스 주체에 대한 Azure Databricks OAuth 비밀을 만듭니다. 이렇게 하려면 OAuth 서비스 주체 인증 대한 액세스 토큰을 수동으로 생성하고 사용하는참조하세요.

  3. 서비스 주체에게 클러스터 또는 웨어하우스에 대한 액세스 권한을 부여합니다. 컴퓨팅 사용 권한 또는 SQL 웨어하우스 관리를 참조하세요.

OAuth M2M(컴퓨터 대 컴퓨터) 또는 OAuth 2.0 클라이언트 자격 증명 인증을 사용하여 인증하려면 다음 구성을 설정합니다.

내장된 일반 구성 속성과 중요한 자격 증명 속성이 있는 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>

JDBC 연결 URL 외부에서 설정된 일반 구성 속성 및 중요한 자격 증명 속성이 있는 Java 코드의 경우:

// ...
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 클라이언트 자격 증명 인증에 대해 지원되지 않습니다.)
    • 값을 얻으려면 Databricks JDBC 드라이버대한 컴퓨팅 설정을 참조하세요.

자세한 내용은 Using M2M Based Authentication 섹션을 참조하세요.