이 페이지에서는 Databricks CLI를 인증하고 Azure Databricks에 대한 API 호출을 수행하도록 Azure DevOps 파이프라인을 구성하는 방법을 설명합니다.
시작하기 전 주의 사항:
Azure DevOps 인증을 구성하기 전에 다음 단계를 완료합니다.
Azure에서 서비스 주체를 만들고 적절한 권한으로 Azure Databricks 작업 영역에 추가합니다. 이 단계가 없으면 파이프라인이 올바르게 구성된 경우에도 인증이 실패합니다.
Microsoft Entra ID 관리 서비스 주체의 경우 Azure에서 Microsoft Entra ID 애플리케이션을 만든 다음 작업 영역에 추가합니다. 서비스 주체 및서비스 주체 관리를 참조하세요.
파이프라인에 단계를 추가하여 에이전트에 Databricks CLI를 설치합니다.
- script: | curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh displayName: 'Install Databricks CLI'팁 (조언)
CLI 설치를 최신 버전 대신 특정 버전에 고정하려면
main을(를) 버전 태그(예를 들어,v0.224.0)로 바꿉니다.
인증 방법 선택
Azure DevOps는 서비스 연결을 통해 인증을 관리합니다. 프로젝트 설정>서비스 연결 아래의 Azure DevOps 포털에서 액세스합니다.
Databricks CLI를 인증하려면 다음 방법 중 하나를 사용하여 Azure Resource Manager 서비스 연결 유형을 사용합니다.
| 메서드 | Description | 적합한 대상 |
|---|---|---|
| 워크로드 ID 페더레이션 (권장) | OIDC(OpenID Connect)를 사용하여 토큰을 획득합니다. 서비스 주체와 함께 Azure DevOps에서 생성된 발급자 및 주체 식별자를 구성해야 합니다. | 보안, 비밀 없는 인증 |
| 클라이언트 암호를 사용하는 서비스 주체 | 클라이언트 ID 및 비밀을 사용하여 수명이 짧은 OAuth 토큰을 생성합니다. 서비스 주체에 대한 비밀을 생성해야 합니다. | 작업 간에 공유 자격 증명이 필요한 시나리오 |
| 관리되는 아이덴티티 | 파이프라인을 실행하는 VM 또는 컨테이너에 할당된 ID를 사용합니다. 자체 호스팅 실행기에만 적용됩니다. Azure 설명서를 참조하세요. | 자체 호스팅 실행기(할당된 ID 포함) |
비고
가능한 경우 워크로드 ID 페더레이션을 사용합니다. 비밀에 의존하지 않으므로 다른 방법보다 더 안전합니다. 수동 구성 없이 AzureCLI@2 작업이 자동으로 작동합니다.
워크로드 ID 페더레이션을 사용하는 서비스 연결 만들기를 참조하세요.
Azure CLI 인증 구성
Databricks CLI는 기본적으로 인증에 Azure CLI를 사용합니다. 모든 Databricks CLI 명령은 태스크 내에서 AzureCLI@2 실행되어야 합니다. 즉, 각 태스크가 독립적으로 인증됩니다. 이로 인해 약간의 대기 시간이 발생하지만 최소한의 구성이 필요합니다.
- task: AzureCLI@2
inputs:
azureSubscription: <your-service-connection-name>
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
databricks bundle deploy
다음 값을 업데이트합니다.
-
azureSubscription: Azure Resource Manager 서비스 연결의 이름입니다. -
useGlobalConfig: 필수 사항입니다. 명령에 의해databricks bundle생성된 하위 프로세스가 인증된 세션에 액세스할 수 있는지 확인합니다. -
DATABRICKS_HOST: 번들 구성 또는 이전 단계에서 아직 정의되지 않은 경우 설정합니다.
클라이언트 비밀 인증 구성
여러 작업에서 자격 증명을 공유해야 하거나 Azure CLI 인증으로 너무 많은 대기 시간이 추가되는 경우 클라이언트 암호를 사용합니다.
이 방법은 한 태스크의 서비스 연결에서 인증 세부 정보를 검색한 다음, 후속 작업에 대한 작업 범위 환경 변수로 내보냅니다.
- task: AzureCLI@2
inputs:
azureSubscription: <your-service-connection-name>
addSpnToEnvironment: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"
- script: |
export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
databricks bundle deploy
메모:
- 키
addSpnToEnvironment는servicePrincipalId,servicePrincipalKey, 및tenantId을 인라인 스크립트에 노출합니다. - 이
##vso명령은 작업 범위 변수를 Databricks CLI가 자동으로 인식하는 작업 범위 변수로 승격합니다. - 기본적으로
ARM_CLIENT_SECRET모든 후속 단계에서 액세스할 수 있습니다. 액세스를 제한하려면 변수 정의에 추가issecret=true한 다음 필요한 각 단계에 명시적으로 전달합니다. 비밀은 이 설정에 관계없이 로그에 마스킹됩니다.
전체 예제는 Git 폴더에 액세스할 수 있도록 Microsoft Entra 서비스 주체 권한 부여를 참조하세요.
관리형 ID 인증 구성
관리 ID 인증은 파이프라인 작업이 아닌 VM 또는 컨테이너 구성에 의존합니다. 이 메서드에는 AzureCLI@2 작업이 필요하지 않습니다.
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/workspaces/<workspace-name>
export ARM_CLIENT_ID=<managed-identity-client-id>
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
databricks current-user me
다음 값을 업데이트합니다.
-
DATABRICKS_AZURE_RESOURCE_ID: Azure Portal의 작업 영역에 대한 속성 아래에서 이 값을 찾습니다. -
ARM_CLIENT_ID: 관리 ID의 클라이언트 ID입니다. -
DATABRICKS_HOST: 선택 사항입니다. 설정하지 않으면 값이DATABRICKS_AZURE_RESOURCE_ID에서 유추됩니다.
관리 ID에는 Azure Databricks 작업 영역에서 기여자 역할이 있어야 합니다.