OIDC(OpenID Connect)라고도 하는 Databricks OAuth 토큰 페더레이션을 사용하면 Databricks 외부에서 실행되는 자동화된 워크로드가 Databricks 비밀 없이 Databricks에 안전하게 액세스할 수 있습니다. OAuth 토큰 페더레이션을 사용하여 Azure Databricks에 대한 액세스 인증을 참조하세요.
GitLab CI/CD에 대한 워크로드 ID 페더레이션을 사용하도록 설정하려면 다음을 수행합니다.
워크로드 ID 페더레이션을 사용하도록 설정한 후 Databricks SDK 및 Databricks CLI는 자동으로 GitLab CI/CD에서 워크로드 ID 토큰을 가져와 Databricks OAuth 토큰으로 교환합니다.
페더레이션 정책 만들기
먼저 워크로드 ID 페더레이션 정책을 만듭니다. 자세한 내용은 서비스 주체 페더레이션 정책 구성을 참조하세요. GitLab CI/CD의 경우 다음 값을 설정합니다.
-
그룹: GitLab 그룹의 이름입니다. 예를 들어 프로젝트 URL이
https://gitlab.com/databricks-inc/data-platform면 그룹은 .입니다databricks-inc. -
프로젝트: 허용할 단일 GitLab 프로젝트의 이름입니다(예:
data-platform.). -
Ref 형식: 토큰의 (주체) 클레임에
sub표시되는 Git 참조의 종류입니다. 분기, 태그 또는 병합 요청일 수 있습니다. - 발급자 URL: OIDC 토큰을 발급하는 GitLab 인스턴스 URL입니다.
- 제목: 작업 컨텍스트에서 가져온 값의 연결입니다.
-
관객: OIDC 토큰의 예상
aud값입니다. 작업id_tokens:블록에서 구성합니다. Databricks는 Azure Databricks 계정 ID로 설정할 것을 추천합니다. -
주체 클레임: (선택 사항) OIDC 토큰의 워크로드 ID(
sub) 값을 포함하는 JWT 클레임입니다. GitLab의 경우 파이프라인을 트리거한 프로젝트, 분기, 태그 또는 병합 요청을 인코딩하는 필드를 그대로sub둡니다.
예를 들어 다음 Databricks CLI 명령은 Databricks 서비스 주체 숫자 ID에 5581763342009999대한 페더레이션 정책을 만듭니다.
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://gitlab.com/example-group",
"audiences": [
"a2222dd9-33f6-455z-8888-999fbbd77900"
],
"subject": "project_path:my-group/my-project:..."
}
}'
GitLab YAML 파일 구성
다음으로, GitLab 구성 파일을 수정합니다. Azure Databricks 계정 ID로 변경 <databricks-account-id> 합니다.
다음 작업 영역 환경 변수를 설정하는 것 외에도 토큰을 Azure Databricks 환경 변수에 DATABRICKS_OIDC_TOKEN 저장합니다. 또는 사용자 지정 환경 변수를 사용하고 설정합니다 DATABRICKS_OIDC_TOKEN_ENV.
-
DATABRICKS_AUTH_TYPE:env-oidc -
DATABRICKS_HOST: Databricks 작업 영역 URL -
DATABRICKS_CLIENT_ID: 서비스 주체(애플리케이션) ID
spec:
inputs:
# Specify your Databricks account ID, workspace hostname, and service principal OAuth client ID.
databricks-account-id:
databricks-host:
databricks-client-id:
# See https://docs.gitlab.com/ci/inputs/#define-input-parameters-with-specinputs for more on pipeline input variables.
---
stages:
- my_script_using_wif
variables:
DATABRICKS_AUTH_TYPE: env-oidc
DATABRICKS_HOST: $[[ inputs.databricks-host ]]
DATABRICKS_CLIENT_ID: $[[ inputs.databricks-client-id ]]
my_script_using_wif:
id_tokens:
DATABRICKS_OIDC_TOKEN:
aud: $[[ inputs.databricks-account-id ]]
stage: my_script_using_wif
image: ubuntu:latest
before_script:
- apt-get update -y
- apt-get install -y curl unzip
- curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
script:
- databricks current-user me