중요합니다
이 기능은 다음 지역의 공개 미리 보기에 있습니다. westuswestus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiasoutheastasiauksouth
이 페이지에서는 Lakebase 데이터베이스 인스턴스에 인증하는 방법을 설명합니다. 인증하는 방법에는 두 가지가 있습니다.
- Azure Databricks ID를 사용하여 OAuth 토큰을 가져오고 인증합니다.
- 비밀번호와 함께 기본 Postgres 역할을 사용합니다.
Azure Databricks ID를 사용하여 인증
Azure Databricks ID로 인증하는 경우 OAuth 토큰을 생성하고 Postgres에 연결할 때 암호로 사용해야 합니다.
시작하기 전 고려 사항
OAuth 토큰은 1시간 후에 만료되지만 만료는 로그인 시만 적용됩니다. 토큰이 만료되더라도 열린 연결은 활성 상태로 유지됩니다. 그러나 토큰이 만료된 경우 인증이 필요한 PostgreSQL 명령은 실패합니다.
Postgres 인증에 사용되는 OAuth 토큰은 작업 영역 범위이며 데이터베이스 인스턴스를 소유하는 동일한 작업 영역에 속해야 합니다. 작업 영역 간 토큰 인증은 지원되지 않습니다. 인증에 대한 자세한 내용은 Databricks CLI에 대한 인증을 참조하세요.
토큰 기반 인증에는 일반 텍스트 암호가 필요하므로 SSL 연결만 허용됩니다. 토큰 기반 인증을 사용하여 Postgres에 액세스하는 데 사용하는 클라이언트 라이브러리가 SSL 연결을 설정하도록 구성되어 있는지 확인합니다.
사용자-컴퓨터 흐름에서 OAuth 토큰 가져오기
데이터베이스 소유자, 관리자 또는 Azure Databricks ID에 데이터베이스 인스턴스에 해당하는 Postgres 역할이 있는 경우 UI, Databricks CLI 또는 Databricks SDK 중 하나에서 OAuth 토큰을 가져올 수 있습니다. Databricks CLI를 사용하여 토큰의 범위를 적절하게 제한할 수 있습니다.
다른 Azure Databricks ID 사용자의 경우 OAuth 토큰을 가져오는 작업 영역 수준 권한 부여 지침은 OAuth를 사용하여 Azure Databricks에 대한 사용자 액세스 권한 부여 를 참조하세요.
사용자 인터페이스 (UI)
데이터베이스 인스턴스 상태가사용 가능할 때 Azure Databricks UI를 사용하여 OAuth 토큰을 가져옵니다.
- 작업 영역 사이드바에서 컴퓨팅 을 클릭하고 Lakebase 프로비전 탭 을 클릭합니다.
- OAuth 토큰을 가져올 데이터베이스 인스턴스의 이름을 찾아 클릭합니다.
- 연결 세부 정보 탭을 클릭합니다.
- OAuth 토큰 가져오기를 클릭합니다. 플래그는 토큰이 만들어진 시기를 나타냅니다.
- OAuthToken 복사를 클릭하여 토큰을 클립보드에 복사합니다.
CLI
데이터베이스 인스턴스의 상태가 사용 가능일 때, Databricks CLI v0.256.0 이상을 사용하여 OAuth 토큰을 얻습니다.
- 다음 명령을 사용하여 토큰을 가져옵니다.
databricks database generate-database-credential \ --request-id $(uuidgen) \ --json '{ "instance_names": ["db-instance-name"] }' - 이렇게 하면 다음 형식으로 응답이 생성됩니다. 응답에서
token을 복사합니다.{ "expiration_time": "2025-08-24T14:15:22Z", "token": "<string>" }
Databricks CLI를 사용하여 OAuth 토큰을 가져오는 방법에 대한 자세한 내용은 OAuth U2M(사용자-컴퓨터) 인증을 참조하세요.
Python SDK
Python용 Databricks SDK를 사용하여 OAuth 토큰을 생성할 수 있습니다. Azure Databricks SDK 바인딩은 Python 버전 v0.56.0용 Databricks SDK에서 사용할 수 있습니다.
이전 버전의 SDK를 사용하여 실행하는 경우 먼저 이러한 명령을 실행합니다.
%pip install --upgrade databricks-sdk
%restart_python
Python용 Databricks SDK는 데이터베이스 인스턴스에 대한 보안 OAuth 토큰 cred을 생성합니다. 필요한 경우 자격 증명을 입력합니다.
from databricks.sdk import WorkspaceClient
import uuid
w = WorkspaceClient()
instance_name = "<YOUR INSTANCE>"
cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
Java SDK
Java용 Databricks SDK를 사용하여 OAuth 토큰을 생성할 수 있습니다. 데이터베이스 SDK 바인딩은 Java 버전 v0.53.0 이상용 Databricks SDK에서 사용할 수 있습니다. 이전 버전의 SDK로 실행하는 경우 가져온 SDK를 새로 고쳐야 할 수 있습니다. 자세한 내용은 여기를 참조하세요.
%scala
import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID
val w = new WorkspaceClient()
val instanceName = "<YOUR INSTANCE>"
// Generate database credential
val cred = w.database().generateDatabaseCredential(
new GenerateDatabaseCredentialRequest()
.setRequestId(UUID.randomUUID().toString())
.setInstanceNames(Collections.singletonList(instanceName))
)
// Print out credential details
System.out.println("Credential: " + cred.getToken())
머신-컴퓨터 흐름에서 OAuth 토큰 가져오기
데이터베이스 인스턴스에 대한 안전하고 자동화된(머신 간) 액세스를 사용하도록 설정하려면 Azure Databricks 서비스 주체를 사용하여 OAuth 토큰을 가져와야 합니다. 이 프로세스에는 서비스 주체 구성, 자격 증명 생성 및 인증을 위한 OAuth 토큰 생성이 포함됩니다.
무기한 유지되는 자격 증명을 사용하여 서비스 주체를 구성합니다. 자세한 내용은 OAuth를 사용하여 Azure Databricks에 대한 서비스 주체 액세스 권한 부여를 참조하세요.
새 OAuth 토큰을 서비스 주체로 지정합니다.
CLI
데이터베이스 인스턴스의 상태가 사용 가능일 때, Databricks CLI v0.256.0 이상을 사용하여 OAuth 토큰을 얻습니다.
다음 명령을 사용하여 토큰을 가져옵니다.
databricks database generate-database-credential \ --request-id $(uuidgen) \ --json '{ "instance_names": ["db-instance-name"] }'이렇게 하면 다음 형식으로 응답이 생성됩니다. 응답에서
token을 복사합니다.{ "expiration_time": "2025-08-24T14:15:22Z", "token": "<string>" }
Python SDK
Python용 Databricks SDK를 사용하여 OAuth 토큰을 생성할 수 있습니다. Azure Databricks SDK 바인딩은 Python 버전 v0.56.0용 Databricks SDK에서 사용할 수 있습니다.
이전 버전의 SDK를 사용하여 실행하는 경우 먼저 이러한 명령을 실행합니다.
%pip install --upgrade databricks-sdk %restart_pythonPython용 Databricks SDK는 데이터베이스 인스턴스에 대한 보안 OAuth 토큰
cred을 생성합니다. 필요한 경우 데이터베이스 인스턴스 이름을 입력합니다.from databricks.sdk import WorkspaceClient import uuid w = WorkspaceClient( host = "https://<YOUR WORKSPACE URL>/", client_id = "<YOUR SERVICE PRINCIPAL ID>", client_secret = "REDACTED" ) instance_name = "<YOUR INSTANCE>" cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])Java SDK
Java용 Databricks SDK를 사용하여 OAuth 토큰을 생성할 수 있습니다. 데이터베이스 SDK 바인딩은 Java 버전 v0.53.0 이상용 Databricks SDK에서 사용할 수 있습니다. 이전 버전의 SDK를 사용하여 실행하는 경우 최신 SDK로 업데이트해야 할 수 있습니다. 자세한 내용은 여기를 참조하세요.
%scala import com.databricks.sdk.WorkspaceClient import com.databricks.sdk.core.DatabricksConfig import com.databricks.sdk.service.database.GetDatabaseInstanceRequest import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest import com.databricks.sdk.service.database.DatabaseInstance import com.databricks.sdk.service.database.DatabaseCredential import java.util.Collections import java.util.UUID val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication val w = new WorkspaceClient(config) val instanceName = "<YOUR INSTANCE>" // Generate database credential val cred = w.database().generateDatabaseCredential( new GenerateDatabaseCredentialRequest() .setRequestId(UUID.randomUUID().toString()) .setInstanceNames(Collections.singletonList(instanceName)) ) // Print out credential details System.out.println("Credential: " + cred.getToken())
비고
매시간 만료되기 전에 OAuth 토큰을 회전합니다.
- 각 사용 시 OAuth 토큰의 만료 시간을 확인하고 필요한 경우 새로 고칩니다.
- 또는 백그라운드 스레드를 설정하여 현재 OAuth 토큰을 주기적으로 새로 고칩니다.
토큰 ID 문제 해결
토큰의 ID가 보안 레이블과 일치하지 않으면 다음과 같은 오류 메시지가 표시될 수 있습니다.
A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.
다음 명령을 실행하여 반환되는 Azure Databricks ID를 확인합니다.
CLI
databricks current-user me
Python SDK
w.current_user.me().user_name
Java SDK
w.currentUser.me().getUserName()
예상 ID가 반환되지 않으면 작업 영역 클라이언트를 초기화할 때 올바른 자격 증명이 사용되었는지 확인합니다.
Microsoft Entra ID로 인증
Azure Databricks의 경우 Microsoft Entra ID ID 및 토큰을 사용하여 Azure Databricks API에 인증할 수도 있습니다. 이러한 API를 사용하여 Postgres에 인증할 토큰을 가져옵니다.
Azure Databricks에서 Microsoft Entra ID 관리 ID를 관리하는 방법은 사용자, 서비스 주체 및 그룹 관리를 참조하세요. Microsoft Entra ID의 사용자, 그룹 및 서비스 주체는 Azure Databricks에서 만들 수 있습니다. 이러한 ID가 Azure Databricks에 추가되면 Postgres 관리 역할에 설명된 대로 데이터베이스 인스턴스에 추가할 수 있습니다.
Microsoft Entra ID 토큰을 검색하려면 다음을 참조하세요.
Azure Databricks 그룹으로 인증
그룹 및 그룹 멤버 자격은 Azure Databricks에서 Postgres로 동기화되지 않으며 Unity 카탈로그 권한도 아닙니다. 그러나 Azure Databricks 그룹이 Postgres에 추가된 후 그룹의 모든 Azure Databricks 사용자는 사용자의 암호를 사용하여 그룹으로 로그인할 수 있습니다. 이렇게 하면 Postgres의 그룹 수준에서 사용 권한을 관리할 수 있습니다. Azure Databricks 그룹 ID의 직접 또는 간접 멤버(사용자 또는 서비스 주체)는 Postgres에 인증하고 Azure Databricks 그룹 Postgres 역할로 로그인할 수 있습니다.
사용자 또는 서비스 주체 토큰을 사용하여 그룹 ID로 인증하는 경우 그룹 멤버 자격은 인증 시에만 유효성이 검사됩니다. 인증 후 멤버가 그룹에서 제거된 경우 그룹 멤버 토큰과의 열린 연결은 계속 열려 있습니다. 제거된 그룹 구성원의 새 연결 요청은 인증 중에 거부됩니다.
export PGPASSWORD='<OAuth token of a group member>'
export GROUPROLENAME=<pg-case-sensitive-group-role-name>
psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUPROLENAME
그룹 기반 Postgres 로그인에는 데이터베이스 인스턴스의 Azure Databricks 작업 영역에 할당된 그룹만 지원됩니다. 작업 영역에 그룹을 할당하는 방법을 알아보려면 작업 영역에 그룹 할당을 참조하세요.
Postgres 역할 및 암호를 사용하여 인증
1시간 후에 자격 증명 회전을 지원하지 않는 클라이언트가 있는 경우 암호를 사용하여 네이티브 Postgres 역할을 만들 수 있습니다.
작업 영역 사이드바에서 컴퓨팅을 클릭합니다.
데이터베이스 인스턴스 탭을 클릭합니다.
업데이트하려는 데이터베이스 인스턴스를 선택합니다.
오른쪽 위에서 편집 을 클릭합니다.
Postgres 네이티브 역할 로그인을 사용하도록 설정합니다.
저장을 클릭합니다.
Postgres에 로그인하거나 SQL 편집기를 사용하여 암호를 사용하여 역할을 만듭니다.
CREATE ROLE new_role LOGIN PASSWORD 'your strong password';새 역할에 추가 Postgres 권한을 부여합니다. PostgreSQL을 사용하여 Postgres 역할에 대한 권한 부여를 참조하세요.
다음 단계
자격 증명(OAuth 토큰 또는 암호)을 가져온 후 데이터베이스 인스턴스에 연결할 수 있습니다.