Mengautentikasi dengan Azure DevOps di Databricks
Pelajari cara mengonfigurasi alur Azure DevOps Anda untuk menyediakan autentikasi untuk perintah Databricks CLI dan panggilan API di otomatisasi Anda.
Autentikasi Azure DevOps
Mengelola autentikasi (pihak pertama dan pihak ketiga) di Azure DevOps dilakukan dengan koneksi layanan. Di portal Azure DevOps, Anda dapat mengakses koneksi layanan di halaman proyek apa pun di bawah Pengaturan proyek.
Untuk mengautentikasi Databricks CLI, gunakan jenis koneksi layanan Azure Resource Manager . Untuk jenis ini, pilih salah satu metode autentikasi berikut:
- Federasi identitas beban kerja Microsoft Entra
- Menggunakan protokol OpenID Connect (OIDC) untuk memperoleh token atas nama perwakilan layanan.
- Mengharuskan Anda mengonfigurasi masalah yang dihasilkan Azure DevOps dan pengidentifikasi subjek dengan perwakilan layanan yang ingin Anda gunakan.
- Mekanisme autentikasi yang berlaku: Azure CLI.
- Perwakilan layanan Microsoft Entra
- Menggunakan ID klien dan rahasia klien MS Entra untuk menghasilkan token OAuth berumur pendek.
- Mengharuskan Anda untuk menghasilkan rahasia untuk perwakilan layanan yang ingin Anda gunakan untuk koneksi layanan.
- Mekanisme autentikasi yang berlaku: Azure CLI, rahasia klien Microsoft Entra.
- Identitas terkelola ID Microsoft Entra
- Menggunakan identitas yang ditetapkan ke sumber daya (seperti komputasi) tempat CLI dijalankan. Dalam konteks Azure DevOps, ini hanya relevan jika Anda menggunakan pelari yang dihost sendiri. Lihat Membuat koneksi layanan Azure Resource Manager ke VM yang menggunakan identitas terkelola.
- Mekanisme autentikasi yang berlaku: Azure CLI, identitas terkelola Microsoft Entra (sebelumnya disebut "MSI").
Setelah Anda memilih mekanisme autentikasi yang paling sesuai dengan kebutuhan proyek Anda, Anda harus mengonfigurasinya dalam definisi alur Azure DevOps Anda (pipeline.yml
) untuk bekerja dengan Azure Databricks CLI.
Mengonfigurasi alur Azure DevOps Anda untuk menggunakan Azure CLI untuk autentikasi
Secara default, Azure Databricks CLI akan menggunakan Azure CLI sebagai mekanisme untuk mengautentikasi dengan Azure Databricks.
Perhatikan bahwa menggunakan Azure CLI untuk autentikasi memerlukan semua panggilan ke Azure Databricks CLI harus dilakukan dalam AzureCLI@2 task
, yang berarti bahwa tidak ada cara untuk berbagi sesi terautentikasi dalam tugas berikutnya. Setiap tugas mengautentikasi secara independen, yang memperkenalkan latensi saat dijalankan.
Konfigurasi contoh Azure Pipelines berikut menggunakan Azure CLI untuk mengautentikasi dan menjalankan perintah 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
Saat mengonfigurasi alur Azure DevOps Anda untuk menggunakan Azure CLI untuk menjalankan perintah Azure Databricks CLI, lakukan hal berikut:
- Gunakan
azureSubscription
untuk mengonfigurasi koneksi layanan yang ingin Anda gunakan. - Konfigurasikan
useGlobalConfig
untuk menggunakan defaultAZURE_CONFIG_FILE
karenadatabricks bundle
perintah menggunakan pemfilteran variabel lingkungan untuk subproses. Jika ini tidak diatur, subproses ini tidak akan dapat menemukan detail sesi yang diautentikasi. - Jika belum diekspor (seperti pada langkah sebelumnya atau dalam konfigurasi bundel), ekspor
DATABRICKS_HOST
variabel lingkungan.
Mengonfigurasi alur Azure DevOps Anda untuk menggunakan rahasia klien Microsoft Entra untuk autentikasi
Jika Anda tidak ingin menggunakan Azure CLI untuk autentikasi karena menambahkan terlalu banyak latensi, atau karena Anda perlu menggunakan Azure CLI dalam jenis tugas yang berbeda, gunakan rahasia klien Microsoft Entra. Detail autentikasi harus diambil dari koneksi layanan, jadi Anda harus menggunakan AzureCLI@2
tugas dalam deklarasi alur Anda.
AzureCLI@2
Gunakan tugas untuk mengambil ID klien dan rahasia klien dari koneksi layanan Anda, lalu ekspor sebagai variabel lingkungan. Tugas berikutnya dapat menggunakannya secara langsung. Misalnya, lihat Menggunakan perwakilan layanan Microsoft Entra untuk mengelola folder Databricks Git.
Konfigurasi contoh Azure Pipelines berikut menggunakan rahasia klien Microsoft Entra untuk mengautentikasi dan menjalankan perintah 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
Saat mengonfigurasi alur Azure DevOps Anda untuk menggunakan rahasia klien Microsoft Entra untuk menjalankan perintah Azure Databricks CLI, lakukan hal berikut:
- Konfigurasikan
addSpnToEnvironment
untuk mengekspor variabel lingkungan yang relevan ke skrip sebaris. - Skrip sebaris mengekspor variabel lingkungan cakupan tugas sebagai variabel lingkungan yang tercakup dalam pekerjaan dengan nama yang diambil oleh Azure Databricks CLI secara otomatis.
- Jika belum diekspor (seperti pada langkah sebelumnya atau dalam konfigurasi bundel), ekspor
DATABRICKS_HOST
variabel lingkungan. - Jika Anda menandai
ARM_CLIENT_SECRET
variabel lingkungan denganissecret=true
, Anda harus secara eksplisit menambahkannya ke setiap langkah berikutnya yang membutuhkannya.- Jika Anda tidak melakukan ini,
ARM_CLIENT_SECRET
variabel lingkungan akan dapat diakses oleh setiap langkah berikutnya. - Variabel
ARM_CLIENT_SECRET
lingkungan ditutupi dalam output terlepas dari pengaturannya.
- Jika Anda tidak melakukan ini,
Mengonfigurasi alur Azure DevOps Anda untuk menggunakan identitas terkelola Microsoft Entra untuk autentikasi
Karena autentikasi identitas terkelola Azure bergantung pada komputer virtual atau konfigurasi kontainer untuk menjamin Azure Databricks CLI dijalankan di bawah identitas yang tepat, konfigurasi alur Azure DevOps Anda tidak mengharuskan Anda menentukan AzureCLI@2
tugas.
Konfigurasi contoh Azure Pipelines berikut menggunakan identitas terkelola Microsoft Entra untuk mengautentikasi dan menjalankan perintah 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
Saat mengonfigurasi alur Azure DevOps Anda untuk menggunakan identitas terkelola Microsoft Entra untuk menjalankan perintah Azure Databricks CLI, lakukan hal berikut:
- Identitas terkelola Microsoft Entra harus diberi peran "Kontributor" di ruang kerja Databricks yang akan diaksesnya.
- Nilai
DATABRICKS_AZURE_RESOURCE_ID
variabel lingkungan ditemukan di bawah Properti untuk instans Azure Databricks di portal Azure. - Nilai
ARM_CLIENT_ID
variabel lingkungan adalah ID klien dari identitas terkelola.
Catatan
DATABRICKS_HOST
Jika variabel lingkungan tidak ditentukan dalam konfigurasi ini, nilai akan disimpulkan dari DATABRICKS_AZURE_RESOURCE_ID
.
Menginstal Azure Databricks CLI dari alur Azure Pipelines
Setelah mengonfigurasi mekanisme autentikasi pilihan, Anda harus menginstal Azure Databricks CLI pada host atau agen yang akan menjalankan perintah Azure Databricks CLI.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
Tip
- Jika Anda tidak ingin menginstal versi terbaru Azure Databricks CLI secara otomatis, ganti
main
di URL penginstal dengan versi tertentu (misalnya,v0.224.0
).
Praktik terbaik
Databricks menyarankan Anda menggunakan federasi identitas beban kerja Microsoft Entra sebagai metode autentikasi pilihan. Ini tidak bergantung pada rahasia dan lebih aman daripada metode autentikasi lainnya. Ini bekerja secara otomatis dengan
AzureCLI@2
tugas tanpa konfigurasi manual.Untuk detail selengkapnya, lihat Membuat koneksi layanan Azure Resource Manager yang menggunakan federasi identitas beban kerja.