Databricks에서 Azure DevOps로 인증
자동화에서 Databricks CLI 명령 및 API 호출에 대한 인증을 제공하도록 Azure DevOps 파이프라인을 구성하는 방법을 알아봅니다.
Azure DevOps 인증
Azure DevOps에서 인증(자사 및 타사) 관리는 서비스 연결로 수행됩니다. Azure DevOps 포털에서 프로젝트 설정 아래의 프로젝트 페이지에서 서비스 연결에 액세스할 수 있습니다.
Databricks CLI를 인증하려면 Azure Resource Manager 서비스 연결 유형을 사용합니다. 이 형식의 경우 다음 인증 방법 중 하나를 선택합니다.
- Microsoft Entra 워크로드 ID 페더레이션
- OIDC(OpenID Connect) 프로토콜을 사용하여 서비스 주체를 대신하여 토큰을 획득합니다.
- 사용하려는 서비스 주체를 사용하여 Azure DevOps에서 생성된 문제 및 주체 식별자를 구성해야 합니다.
- 적용 가능한 인증 메커니즘: Azure CLI.
- Microsoft Entra 서비스 주체.
- 클라이언트 ID 및 MS Entra 클라이언트 비밀을 사용하여 수명이 짧은 OAuth 토큰을 생성합니다.
- 서비스 연결에 사용하려는 서비스 주체에 대한 비밀을 생성해야 합니다.
- 적용 가능한 인증 메커니즘: Azure CLI, Microsoft Entra 클라이언트 비밀.
- Microsoft Entra ID 관리 ID
- CLI가 실행되는 리소스(예: 컴퓨팅)에 할당된 ID를 사용합니다. Azure DevOps의 컨텍스트에서 이는 자체 호스팅 실행기를 사용하는 경우에만 관련이 있습니다. 관리 ID를 사용하는 VM에 대한 Azure Resource Manager 서비스 연결 만들기를 참조 하세요.
- 적용 가능한 인증 메커니즘: Azure CLI, Microsoft Entra 관리 ID(이전의 "MSI").
프로젝트의 요구 사항에 가장 적합한 인증 메커니즘을 선택한 후에는 Azure Databricks CLI를 사용하도록 Azure DevOps 파이프라인 정의(pipeline.yml
)에서 구성해야 합니다.
인증에 Azure CLI를 사용하도록 Azure DevOps 파이프라인 구성
기본적으로 Azure Databricks CLI는 Azure Databricks를 사용하여 인증하는 메커니즘으로 Azure CLI를 사용합니다.
인증에 Azure CLI를 사용하려면 Azure Databricks CLI에 대한 모든 호출이 수행되어야 AzureCLI@2 task
합니다. 즉, 후속 작업에서 인증된 세션을 공유할 방법이 없습니다. 각 태스크는 독립적으로 인증되므로 실행 시 대기 시간이 발생합니다.
다음 Azure Pipelines 예제 구성에서는 Azure CLI를 사용하여 Azure Databricks CLI bundle deploy
명령을 인증하고 실행합니다.
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
Azure CLI를 사용하여 Azure Databricks CLI 명령을 실행하도록 Azure DevOps 파이프라인을 구성하는 경우 다음을 수행합니다.
- 사용하려는 서비스 연결을 구성하는 데 사용합니다
azureSubscription
. - 명령이 하위 프로세스에
databricks bundle
환경 변수 필터링을 사용하기 때문에 기본값AZURE_CONFIG_FILE
을 사용하도록 구성useGlobalConfig
합니다. 설정되지 않은 경우 이러한 하위 프로세스는 인증된 세션의 세부 정보를 찾을 수 없습니다. - 이전 단계 또는 번들 구성과 같이 아직 내보내지 않은 경우 환경 변수를
DATABRICKS_HOST
내보냅니다.
인증에 Microsoft Entra 클라이언트 비밀을 사용하도록 Azure DevOps 파이프라인 구성
너무 많은 대기 시간을 추가하거나 다른 작업 유형에서 Azure CLI를 사용해야 하기 때문에 인증에 Azure CLI를 사용하지 않으려면 Microsoft Entra 클라이언트 암호를 사용합니다. 인증 세부 정보는 서비스 연결에서 검색해야 하므로 파이프라인 선언에서 작업을 사용해야 AzureCLI@2
합니다.
이 AzureCLI@2
작업을 사용하여 서비스 연결에서 클라이언트 ID 및 클라이언트 비밀을 검색한 다음, 환경 변수로 내보냅니다. 후속 작업은 직접 사용할 수 있습니다. 예를 들어 Microsoft Entra 서비스 주체를 사용하여 Databricks Git 폴더를 관리하는 방법을 참조하세요.
다음 Azure Pipelines 예제 구성은 Microsoft Entra 클라이언트 비밀을 사용하여 Azure Databricks CLI bundle deploy
명령을 인증하고 실행합니다.
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
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...
databricks bundle deploy
Microsoft Entra 클라이언트 비밀을 사용하여 Azure Databricks CLI 명령을 실행하도록 Azure DevOps 파이프라인을 구성하는 경우 다음을 수행합니다.
- 관련 환경 변수를 인라인 스크립트로 내보내도록 구성
addSpnToEnvironment
합니다. - 인라인 스크립트는 작업 범위 환경 변수를 Azure Databricks CLI가 자동으로 선택하는 이름으로 작업 범위 환경 변수로 내보냅니다.
- 이전 단계 또는 번들 구성과 같이 아직 내보내지 않은 경우 환경 변수를
DATABRICKS_HOST
내보냅니다. - 환경 변수를 표시할 경우 환경 변수
issecret=true
를ARM_CLIENT_SECRET
필요로 하는 각 후속 단계에 명시적으로 추가해야 합니다.- 이렇게 하지 않으면 환경 변수는
ARM_CLIENT_SECRET
모든 후속 단계에서 액세스할 수 있습니다. - 환경 변수는
ARM_CLIENT_SECRET
설정에 관계없이 출력에서 마스킹됩니다.
- 이렇게 하지 않으면 환경 변수는
인증에 Microsoft Entra 관리 ID를 사용하도록 Azure DevOps 파이프라인 구성
Azure 관리 ID 인증은 Azure Databricks CLI가 올바른 ID로 실행되도록 보장하기 위해 가상 머신 또는 컨테이너 구성에 따라 달라지므로 Azure DevOps 파이프라인 구성에서 작업을 지정할 AzureCLI@2
필요가 없습니다.
다음 Azure Pipelines 예제 구성은 Microsoft Entra 관리 ID를 사용하여 Azure Databricks CLI bundle deploy
명령을 인증하고 실행합니다.
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb...
databricks current-user me --log-level trace
Microsoft Entra 관리 ID를 사용하여 Azure Databricks CLI 명령을 실행하도록 Azure DevOps 파이프라인을 구성하는 경우 다음을 수행합니다.
- Microsoft Entra 관리 ID에는 액세스할 Databricks 작업 영역에서 "기여자" 역할이 할당되어야 합니다.
- 환경 변수의
DATABRICKS_AZURE_RESOURCE_ID
값은 Azure Portal의 Azure Databricks 인스턴스에 대한 속성 아래에 있습니다. - 환경 변수의
ARM_CLIENT_ID
값은 관리 ID의 클라이언트 ID입니다.
참고 항목
이 구성에서 DATABRICKS_HOST
환경 변수를 지정하지 않으면 값이 .에서 DATABRICKS_AZURE_RESOURCE_ID
유추됩니다.
Azure Pipelines 파이프라인에서 Azure Databricks CLI 설치
기본 인증 메커니즘을 구성한 후에는 Azure Databricks CLI 명령을 실행할 호스트 또는 에이전트에 Azure Databricks CLI를 설치해야 합니다.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
팁
- 최신 버전의 Azure Databricks CLI를 자동으로 설치하지 않으려면 설치 관리자 URL을 특정 버전(예
v0.224.0
: )으로 바꿉main
니다.
모범 사례
Databricks는 선택한 인증 방법으로 Microsoft Entra 워크로드 ID 페더레이션을 사용하는 것이 좋습니다. 비밀에 의존하지 않으며 다른 인증 방법보다 더 안전합니다. 수동 구성 없이 작업에서
AzureCLI@2
자동으로 작동합니다.자세한 내용은 워크로드 ID 페더레이션을 사용하는 Azure Resource Manager 서비스 연결 만들기를 참조하세요.