다음을 통해 공유


Databricks에서 Azure DevOps로 인증

자동화에서 Databricks CLI 명령 및 API 호출에 대한 인증을 제공하도록 Azure DevOps 파이프라인을 구성하는 방법을 알아봅니다.

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=trueARM_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 서비스 연결 만들기를 참조하세요.

참고 항목