OIDC(OpenID Connect)라고도 하는 Databricks OAuth 토큰 페더레이션을 사용하면 Databricks 외부에서 실행되는 자동화된 워크로드가 Databricks 비밀 없이 Databricks에 안전하게 액세스할 수 있습니다. OAuth 토큰 페더레이션을 사용하여 Azure Databricks에 대한 액세스 인증을 참조하세요.
GitHub Actions에 대한 워크로드 ID 페더레이션을 사용하도록 설정하려면 다음을 수행합니다.
워크로드 ID 페더레이션을 사용하도록 설정하면 Databricks SDK 및 Databricks CLI가 자동으로 GitHub에서 워크로드 ID 토큰을 가져와 Databricks OAuth 토큰으로 교환합니다.
페더레이션 정책 만들기
먼저 워크로드 ID 페더레이션 정책을 만듭니다. 자세한 내용은 서비스 주체 페더레이션 정책 구성을 참조하세요. GitHub의 경우 정책에 대해 다음 값을 설정합니다.
-
조직: 귀하의 GitHub 조직 이름입니다. 예를 들어 리포지토리 URL이
https://github.com/databricks-inc/data-platform면 조직은 다음과 같습니다databricks-inc. -
저장소: 허용할 단일 리포지토리의 이름입니다(예:
data-platform.). -
엔터티 형식: 토큰의 (주체) 클레임에
sub표시되는 GitHub 엔터티의 종류입니다. 기본값은 분기입니다. Databricks는 Environment를 사용하는 것을 권장하며, 이는 GitHub Actions YAML 파일에서environment속성을 설정하여 활성화할 수 있습니다. 특정 환경에 배포를 참조하세요. -
발급자 URL:
https://token.actions.githubusercontent.com -
제목: GitHub Actions 작업 컨텍스트의 값을 연결하여 형성된 문자열입니다. 필요한 서식은 저장소의 GitHub
sub클레임에 따라 다릅니다. 다음 메모를 확인하세요. - 관객: Databricks는 이를 Azure Databricks 계정 ID로 설정하는 것이 좋습니다. 생략하면 계정 ID가 기본적으로 사용됩니다.
-
주체 클레임: (선택 사항) OIDC 토큰의 워크로드 ID(
sub) 값을 포함하는 JWT 클레임입니다. GitHub의 경우 워크플로를 트리거한 리포지토리, 분기, 태그, 끌어오기/병합 요청 또는 환경을 인코딩하는 필드를 그대로sub둡니다. 호출 리포지토리가 아닌 재사용 가능한 워크플로로 인증하려면 재사용 가능한 워크플로를 사용하여 인증을 참조하세요.
메모
Azure Databricks는 Subject와 토큰의 sub 클레임을 정확히 일치시키고, GitHub의 sub 형식은 저장소가 생성된 시기에 따라 달라집니다. 2026년 7월 15일 이후 또는 당일에 생성, 이름 변경 또는 이전된 저장소에는 예를 들어 repo:octo-org@123456/octo-repo@456789:environment:prod와 같은 숫자 조직 및 저장소 ID가 포함됩니다. 이전 저장소는 immutable 형식을 선택하지 않는 한 repo:<org>/<repo>:environment:prod를 사용합니다.
저장소의 정확한 sub를 확인하려면 OpenID Connect의 보안 강화에 대해 문서를 참조하세요. 불변 형식은 GitHub Enterprise Server에서는 제공되지 않습니다.
예를 들어, 다음 Databricks CLI 명령은 이름이 my-org인 조직과 Databricks 서비스 주체 숫자 ID가 5581763342009999인 경우에 대한 페더레이션 정책을 생성합니다. 예시 주제는 2026년 7월 15일 이전에 생성된 저장소에 대해 이름만 사용하는 형식을 사용합니다:
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"a2222dd9-33f6-455z-8888-999fbbd77900"
],
"subject": "repo:my-github-org/my-repo:environment:prod"
}
}'
GitHub Actions YAML 파일 구성
다음으로, GitHub Actions YAML 파일을 구성합니다. 다음 환경 변수를 설정합니다.
-
DATABRICKS_AUTH_TYPE:github-oidc -
DATABRICKS_HOST: Databricks 작업 영역 URL -
DATABRICKS_CLIENT_ID: 서비스 주체(애플리케이션) ID
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: workflow_dispatch
permissions:
id-token: write
contents: read
jobs:
my_script_using_wif:
runs-on: ubuntu-latest
environment: prod
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Databricks CLI
uses: databricks/setup-cli@main
- name: Run Databricks CLI commands
run: databricks current-user me
재사용 가능한 워크플로를 사용하여 인증
기본적으로 클레임은 sub 호출 리포지토리를 식별합니다. 호출 리포지토리가 아닌 재사용 가능한 워크플로로 인증하려면 페더레이션 정책으로 설정합니다 subject_claimjob_workflow_ref . 모든 팀은 재사용 가능한 워크플로를 호출할 수 있지만 재사용 가능한 워크플로 자체만 Databricks를 사용하여 인증합니다.
페더레이션 정책 만들기
주체 클레임으로 job_workflow_ref을(를) 사용하여 페더레이션 정책을 작성합니다. 재사용 가능한 워크플로 파일의 참조 원본으로 subject를 설정하십시오.
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"a2222dd9-33f6-455z-8888-999fbbd77900"
],
"subject": "my-github-org/shared-workflows/.github/workflows/deploy.yml@refs/heads/main",
"subject_claim": "job_workflow_ref"
}
}'
GitHub Actions YAML 파일 구성
Azure Databricks와 함께 사용하도록 인증하는 재사용 가능한 워크플로를 만들고, 이를 호출하기 위해 모든 리포지토리에서 호출 워크플로도 만드세요.
다음 예제에서는 다시 사용할 수 있는 워크플로 파일(.github/workflows/deploy.yml 공유 워크플로 리포지토리)을 보여 줍니다.
on:
workflow_call:
jobs:
deploy:
runs-on: ubuntu-latest
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Databricks CLI
uses: databricks/setup-cli@main
- name: Run Databricks CLI commands
run: databricks current-user me
다음 예제에서는 다시 사용할 수 있는 워크플로를 사용하는 모든 리포지토리의 호출 워크플로를 보여줍니다.
on: workflow_dispatch
permissions:
id-token: write
contents: read
jobs:
call-deploy:
uses: my-github-org/shared-workflows/.github/workflows/deploy.yml@main
메모
호출 워크플로에서 permissions: id-token: write를 설정하고, 다시 사용할 수 있는 워크플로에서는 설정하지 마십시오. GitHub 호출 워크플로에서 job_workflow_ref 부여된 경우에만 OIDC 토큰에 id-token: write 클레임을 포함합니다.