Databricks JDBC 드라이버에 대한 인증 설정

Databricks JDBC 드라이버는 사용 사례에 따라 여러 인증 방법을 지원합니다. 이 페이지에서는 각 메서드를 구성하는 방법을 설명하고 필요한 연결 속성을 나열합니다.

Databricks JDBC 드라이버에 대한 인증을 구성하려면 다음 방법 중 하나를 사용합니다.

OAuth 2.0 토큰 통과

JDBC 드라이버는 Auth_AccessToken 속성에서 OAuth 토큰을 수락합니다. Azure Databricks OAuth 토큰을 직접 전달하거나 외부 ID 공급자의 JWT(JSON 웹 토큰)를 전달할 수 있습니다. 외부 IdP 토큰을 전달하는 경우 Azure Databricks는 토큰 페더레이션을 사용하여 Azure Databricks 토큰으로 자동으로 교환합니다.

다음 예제에서는 다음 자리 표시자를 바꿉니다.

  • <oauth-token> Azure Databricks OAuth 2.0 토큰 또는 외부 IdP JWT를 사용합니다.
  • 값을 얻으려면 <server-hostname><http-path>연결 구성을 참조하세요.

필수 속성은 다음과 같습니다.

  • AuthMech11로 설정 (OAuth 2.0 인증)
  • Auth_Flow 0 (토큰 통과 모드)로 설정
  • Auth_AccessToken Azure Databricks OAuth 토큰 또는 외부 IdP JWT로 설정

인증 속성을 참조하세요.

JDBC 연결 URL의 경우:

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

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);
// ...

외부 ID 공급자와 토큰 페더레이션

Okta, Microsoft Entra ID, Keycloak 또는 OIDC 규격 IdP와 같은 외부 ID 공급자의 토큰으로 인증하는 경우 Azure Databricks는 토큰 교환을 자동으로 수행합니다. JDBC 구성은 토큰 통과와 동일합니다. IdP 토큰 Auth_AccessToken 을 전달하고 드라이버는 나머지를 처리합니다.

토큰 페더레이션을 사용하기 전에 다음을 수행해야 합니다.

  1. 외부 IdP를 신뢰하는 Azure Databricks 계정에 페더레이션 정책을 만듭니다. 페더레이션 정책은 발급자 URL, 예상 대상 그룹 값 및 Azure Databricks 사용자에 매핑하는 데 사용되는 JWT 클레임을 지정합니다. OAuth 토큰 페더레이션을 사용하여 Azure Databricks에 대한 액세스 인증을 참조하세요.
  2. 일치하는 Azure Databricks 사용자가 있는지 확인합니다. 사용자의 전자 메일 또는 기타 식별자는 JWT의 subject_claim 값과 일치해야 합니다.
  3. Azure Databricks가 서명 키를 가져와 토큰을 확인할 수 있도록 IdP의 OIDC 검색 엔드포인트에 공개적으로 연결할 수 있는지 확인합니다.

OAuth 사용자와 기계 간(U2M) 인증

OAuth U2M 인증을 사용하면 브라우저를 통해 Azure Databricks에 로그인할 수 있습니다. 드라이버가 브라우저 창을 열고, 인증하고, 드라이버가 OAuth 토큰을 받습니다. 드라이버는 기본 제공 OAuth 클라이언트 ID databricks-sql-jdbc를 사용합니다.

이 인증 유형에는 필수 구성 요소가 없습니다. 토큰의 기본 수명은 1시간이며 만료되면 자동으로 새로 고쳐집니다.

메모

OAuth U2M은 로컬로 실행되는 애플리케이션에서만 작동합니다. 서버 기반 또는 클라우드 기반 애플리케이션에서는 작동하지 않습니다.

다음 예제에서는 다음 자리 표시자를 바꿉니다.

  • <passphrase> 원하는 암호를 사용합니다. 드라이버는 이 키를 사용하여 토큰 암호화를 새로 고칩니다.
  • 값을 얻으려면 <server-hostname><http-path>연결 구성을 참조하세요.

필수 속성은 다음과 같습니다.

  • AuthMech11로 설정 (OAuth 2.0 인증)
  • Auth_Flow을(를) 2(U2M 브라우저 기반 모드)으로 설정
  • TokenCachePassPhrase 캐시된 OAuth U2M 자격 증명을 암호화하는 데 사용되는 암호로 설정합니다. 이렇게 하면 반복되는 브라우저 기반 인증을 방지할 수 있습니다. 토큰 캐싱을 거부하려면 EnableTokenCache을(를) 0으로 설정합니다.

인증 속성을 참조하세요.

JDBC 연결 URL에서:

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

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);
// ...

OAuth M2M(컴퓨터 대 컴퓨터) 인증

JDBC 드라이버는 다음 보안 주체 또는 ID 중 하나를 사용하여 OAuth M2M(컴퓨터 대 컴퓨터) 인증을 지원합니다. OAuth를 사용하여 Azure Databricks에 대한 서비스 주체 액세스 권한 부여를 참조하세요.

Databricks 관리 서비스 주체를 사용하는 M2M

Databricks 관리 서비스 주체를 사용하여 인증을 구성하려면 다음을 수행합니다.

  1. Databricks 관리 서비스 주체를 만들고 Databricks 계정 및 작업 영역에 할당합니다.

  2. 서비스 주체에 대한 Databricks OAuth 비밀을 만듭니다. OAuth M2M 액세스 토큰 수동 생성을 참조하세요.

  3. 클러스터SQL 웨어하우스에 액세스 권한을 부여합니다.

  4. 기존 JDBC 연결 URL 또는 java.util.Properties 개체에 다음 속성을 추가합니다.

    • AuthMech11로 설정 (OAuth 2.0 인증)
    • Auth_Flow1 M2M 클라이언트 자격 증명 모드로 설정
    • OAuth2ClientID 서비스 주체의 애플리케이션(클라이언트) ID 값으로 설정
    • OAuth2Secret 서비스 주체의 Databricks OAuth 비밀로 설정

    인증 속성을 참조하세요.

Azure 관리 서비스 주체를 사용하는 M2M

Azure 관리 서비스 주체를 사용하여 인증을 구성하려면 다음을 수행합니다.

  1. 서비스 주체에 대한 Databricks OAuth 비밀을 만듭니다. OAuth M2M 액세스 토큰 수동 생성을 참조하세요.

  2. 클러스터SQL 웨어하우스에 액세스 권한을 부여합니다.

  3. 기존 JDBC 연결 URL 또는 java.util.Properties 개체에 다음 속성을 추가합니다.

    • AuthMech11로 설정 (OAuth 2.0 인증)
    • Auth_Flow1 M2M 클라이언트 자격 증명 모드로 설정
    • OAuth2ClientID 서비스 주체의 애플리케이션(클라이언트) ID 값으로 설정
    • AzureTenantID Azure Active Directory에 있는 Azure 테넌트 ID 로 설정
    • OAuth2Secret 서비스 주체의 Databricks OAuth 비밀로 설정

    인증 속성을 참조하세요.

Azure 관리 ID를 사용하는 M2M

Azure 관리 ID를 사용하여 인증을 구성하려면 다음을 수행합니다.

  1. Azure 리소스에 대한 관리 ID를 구성합니다.

  2. 클러스터SQL 웨어하우스에 액세스 권한을 부여합니다.

  3. 기존 JDBC 연결 URL 또는 java.util.Properties 개체에 다음 속성을 추가합니다.

    • AuthMech11로 설정 (OAuth 2.0 인증)
    • Auth_Flow 3 로 설정(관리 ID 모드)
    • OAuth2ClientID 관리 ID의 클라이언트 ID 로 설정합니다. 이는 사용자가 할당한 관리 ID를 사용하는 경우에만 필요합니다.
    • Azure_workspace_resource_id Databricks 작업 영역의 Azure 리소스 ID로 설정

    인증 속성을 참조하세요.

Databricks 개인용 액세스 토큰

메모

개인용 액세스 토큰은 테스트 시나리오에 가장 적합합니다. Azure Databricks는 프로덕션 시나리오에 더 안전한 인증 유형을 권장합니다.

Databricks 개인용 액세스 토큰을 만들려면 작업 영역 사용자를 위한 개인용 액세스 토큰 만들기의 단계를 따릅니다.

다음 예제에서는 다음 자리 표시자를 바꿉니다.

  • <personal-access-token> 작업 영역 사용자를 위한 Databricks 개인용 액세스 토큰을 사용하십시오.
  • 값을 얻으려면 <server-hostname><http-path>연결 구성을 참조하세요.

필수 속성은 다음과 같습니다.

  • AuthMech을(를) 3로 설정 (토큰 인증)
  • UID 리터럴 문자열로 설정 token
  • PWD 또는 password을(를) Databricks 개인 액세스 토큰 값으로 설정하세요.

인증 속성을 참조하세요.

JDBC 연결 URL에서:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

Java 코드에서:

// ...
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);
// ...