Mengautentikasi dengan Azure DevOps di Azure Databricks

Halaman ini menjelaskan cara mengonfigurasi alur Azure DevOps Anda untuk mengautentikasi Databricks CLI dan melakukan panggilan API ke Azure Databricks.

Sebelum Anda mulai

Selesaikan langkah-langkah ini sebelum Anda mengonfigurasi autentikasi Azure DevOps:

  1. Buat perwakilan layanan di Azure dan tambahkan ke ruang kerja Azure Databricks Anda dengan izin yang sesuai. Tanpa langkah ini, autentikasi gagal meskipun alur Anda dikonfigurasi dengan benar.

    Untuk perwakilan layanan terkelola ID Microsoft Entra, buat aplikasi ID Microsoft Entra di Azure, lalu tambahkan ke ruang kerja Anda. Lihat Perwakilan layanan dan Mengelola perwakilan layanan.

  2. Tambahkan langkah ke alur Anda untuk menginstal Databricks CLI pada agen:

    - script: |
        curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
      displayName: 'Install Databricks CLI'
    

    Petunjuk / Saran

    Untuk menyematkan penginstalan CLI ke versi tertentu alih-alih menggunakan yang terbaru, ganti main dengan tag versi (misalnya, v0.224.0).

Pilih metode autentikasi

Azure DevOps mengelola autentikasi melalui koneksi layanan. Akses di portal Azure DevOps di bawah Pengaturan proyek>Koneksi layanan.

Pilih Koneksi layanan di bawah Pengaturan proyek di Azure DevOps

Untuk mengautentikasi Databricks CLI, gunakan jenis koneksi layanan Azure Resource Manager dengan salah satu metode berikut:

Metode Deskripsi Paling cocok untuk
Federasi identitas beban kerja (disarankan) Menggunakan OpenID Connect (OIDC) untuk memperoleh token. Memerlukan konfigurasi penerbit dan pengidentifikasi subjek yang dihasilkan oleh Azure DevOps dengan prinsipal layanan Anda. Autentikasi aman dan bebas rahasia
Perwakilan layanan dengan rahasia klien Menggunakan ID klien dan rahasia untuk menghasilkan token OAuth berumur pendek. Memerlukan pembuatan rahasia untuk perwakilan layanan. Skenario yang memerlukan kredensial bersama di seluruh tugas
Identitas yang dikelola Menggunakan identitas yang ditetapkan ke VM atau kontainer yang menjalankan alur. Hanya berlaku untuk pelari yang dihost sendiri. Lihat dokumentasi Azure. Pelari yang dihost sendiri dengan identitas yang ditetapkan

Nota

Gunakan federasi identitas beban kerja jika memungkinkan. Ini tidak bergantung pada rahasia, jadi lebih aman daripada metode lain. Ini secara otomatis bekerja dengan tugas AzureCLI@2 tanpa konfigurasi manual. Lihat Membuat koneksi layanan yang menggunakan federasi identitas beban kerja.

Mengonfigurasi autentikasi Azure CLI

Databricks CLI menggunakan Azure CLI untuk autentikasi secara default. Semua perintah Databricks CLI harus berjalan di dalam AzureCLI@2 tugas, yang berarti setiap tugas mengautentikasi secara independen. Ini memperkenalkan beberapa latensi tetapi memerlukan konfigurasi minimal.

- 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

Perbarui nilai-nilai ini:

  • azureSubscription: Nama koneksi layanan Azure Resource Manager Anda.
  • useGlobalConfig:Diperlukan. Memastikan subproses yang dihasilkan oleh databricks bundle perintah dapat mengakses sesi yang diautentikasi.
  • DATABRICKS_HOST: Atur ini jika belum ditentukan dalam konfigurasi bundel Anda atau langkah sebelumnya.

Mengonfigurasi autentikasi rahasia klien

Gunakan rahasia klien saat Anda perlu berbagi kredensial di beberapa tugas atau saat autentikasi Azure CLI menambahkan terlalu banyak latensi.

Pendekatan ini mengambil detail autentikasi dari koneksi layanan dalam satu tugas, lalu mengekspornya sebagai variabel lingkungan yang tercakup dalam pekerjaan untuk tugas berikutnya.

- 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

Nota:

  • Kunci addSpnToEnvironment mengekspos servicePrincipalId, servicePrincipalKey, dan tenantId ke skrip sebaris.
  • Perintah ##vso ini mengubah variabel cakupan tugas menjadi variabel cakupan pekerjaan yang dikenali CLI Databricks secara otomatis.
  • Secara bawaan, ARM_CLIENT_SECRET terakses untuk semua langkah selanjutnya. Untuk membatasi akses, tambahkan issecret=true ke definisi variabel, lalu teruskan secara eksplisit ke setiap langkah yang membutuhkannya. Rahasia ditutupi dalam log terlepas dari pengaturan ini.

Untuk contoh lengkapnya, lihat Mengotorisasi perwakilan layanan Microsoft Entra untuk mengakses folder Git.

Mengonfigurasi autentikasi identitas terkelola

Autentikasi identitas terkelola bergantung pada VM atau konfigurasi kontainer daripada tugas alur. Metode ini tidak memerlukan tugas 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

Perbarui nilai-nilai ini:

  • DATABRICKS_AZURE_RESOURCE_ID: Temukan nilai ini di bawah Properti untuk ruang kerja Anda di portal Microsoft Azure.
  • ARM_CLIENT_ID: ID klien identitas terkelola.
  • DATABRICKS_HOST: Opsional. Jika tidak diatur, nilai disimpulkan dari DATABRICKS_AZURE_RESOURCE_ID.

Identitas terkelola harus memiliki peran Kontributor di ruang kerja Azure Databricks.

Lihat juga