Tugas Azure Key Vault

Azure DevOps | Azure DevOps Server 2020 | Azure DevOps Server 2019

Gambaran Umum

Gunakan tugas ini untuk mengunduh rahasia seperti kunci autentikasi, kunci akun penyimpanan, kunci enkripsi data, . File PFX, dan kata sandi dari instans Azure Key Vault. Tugas dapat digunakan untuk mengambil nilai terbaru dari semua atau subset rahasia dari vault, dan mengaturnya sebagai variabel yang dapat digunakan dalam tugas alur berikutnya. Tugas ini berbasis Node, dan bekerja dengan agen di Linux, macOS, dan Windows.

Prasyarat

Tugas ini memiliki Prasyarat berikut:

Anda dapat membuat brankas kunci:

Tambahkan rahasia ke brankas kunci:

  • Dengan menggunakan cmdlet PowerShell Set-AzureKeyVaultSecret. Jika rahasia tidak ada, cmdlet ini akan membuatnya. Jika rahasia sudah ada, cmdlet ini membuat versi baru dari rahasia tersebut.

  • Dengan menggunakan Azure CLI. Untuk menambahkan rahasia ke brankas kunci, misalnya rahasia bernama SQLPassword dengan nilai Pa$$w 0rd, ketik:

    az keyvault secret set --vault-name 'ContosoKeyVault' --name 'SQLPassword' --value 'Pa$$w0rd'
    

Saat Anda ingin mengakses rahasia:

  • Pastikan koneksi layanan Azure memiliki setidaknya izin Dapatkan dan Daftar di vault. Anda dapat mengatur izin ini di portal Azure:

    • Buka bilah Pengaturan untuk vault, pilih Kebijakan akses, lalu Tambahkan baru.
    • Di bilah Tambahkan kebijakan akses , pilih Pilih utama dan pilih perwakilan layanan untuk akun klien Anda.
    • Di bilah Tambahkan kebijakan akses , pilih Izin rahasia dan pastikan bahwa Dapatkan dan Daftar dicentang (dicentang).
    • Pilih OK untuk menyimpan perubahan.

Catatan

Jika Anda menggunakan agen yang dihosting Microsoft, Anda harus menambahkan rentang IP agen yang dihosting Microsoft ke firewall Anda. Dapatkan daftar mingguan rentang IP dari file JSON mingguan, yang diterbitkan setiap hari Rabu. Rentang IP baru mulai berlaku pada hari Senin berikutnya. Untuk informasi selengkapnya, lihat agen yang dihosting Microsoft. Untuk menemukan rentang IP yang diperlukan untuk organisasi Azure DevOps Anda, pelajari cara mengidentifikasi kemungkinan rentang IP untuk agen yang dihosting Microsoft.

Cuplikan YAML

# Azure Key Vault
# Download Azure Key Vault secrets
- task: AzureKeyVault@2
  inputs:
    connectedServiceName: # Azure subscription
    keyVaultName: # Name of existing key vault
    secretsFilter: '*' # Downloads all secrets for the key vault
    runAsPreJob: true # Runs before the job starts

Argumen

Parameter Deskripsi
connectedServiceName
Langganan Azure
(Diperlukan) Pilih koneksi layanan untuk langganan Azure yang berisi instans Azure Key Vault, atau buat koneksi baru. Pelajari lebih lanjut
keyVaultName
Key Vault
(Diperlukan) Pilih nama Key Vault Azure tempat rahasia akan diunduh.
secretsFilter
Filter rahasia
(Diperlukan) Daftar nama rahasia yang dipisahkan koma yang akan diunduh atau * untuk mengunduh semua rahasia dari brankas kunci yang dipilih.
Nilai default: *
runAsPreJob
Membuat rahasia tersedia untuk seluruh pekerjaan
(Diperlukan) Jalankan tugas sebelum eksekusi pekerjaan dimulai. Mengekspos rahasia ke semua tugas dalam pekerjaan, bukan hanya tugas yang mengikuti yang satu ini.
Nilai default: false
Parameter Deskripsi
connectedServiceName
Langganan Azure
(Diperlukan) Pilih koneksi layanan untuk langganan Azure yang berisi instans Azure Key Vault, atau buat koneksi baru. Pelajari lebih lanjut
keyVaultName
Key Vault
(Diperlukan) Pilih nama Key Vault Azure tempat rahasia akan diunduh.
secretsFilter
Filter rahasia
(Diperlukan) Daftar nama rahasia yang dipisahkan koma yang akan diunduh atau * untuk mengunduh semua rahasia dari brankas kunci yang dipilih.
Nilai default: *

Catatan

Nilai diambil sebagai string. Misalnya, jika ada rahasia bernama connectionString, variabel connectionString tugas dibuat dengan nilai terbaru dari rahasia masing-masing yang diambil dari brankas kunci Azure. Variabel ini kemudian tersedia dalam tugas berikutnya.

Jika nilai yang diambil dari vault adalah sertifikat (misalnya, file PFX), variabel tugas akan berisi konten PFX dalam format string. Anda dapat menggunakan kode PowerShell berikut untuk mengambil file PFX dari variabel tugas:

$kvSecretBytes = [System.Convert]::FromBase64String($(PfxSecret))
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

Jika file sertifikat akan disimpan secara lokal di komputer, ada baiknya untuk mengenkripsinya dengan kata sandi:

 #Get the file created
$password = 'your password'
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\MyCert.pfx"
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)

Untuk informasi selengkapnya, lihat Mulai menggunakan sertifikat Azure Key Vault.

Sumber terbuka

Tugas ini sumber terbuka di GitHub. Umpan balik dan kontribusi dipersilakan.

FAQ

Saya mendapatkan forbidden kesalahan pada alur pada titik mendapatkan kredensial dari Azure Key Vault

Ini terjadi jika izin yang diperlukan hilang di brankas kunci Azure. Untuk mengatasi masalah ini, tambahkan kebijakan akses dengan izin yang benar.

Apakah saya memerlukan agen?

Anda memerlukan setidaknya satu agen untuk menjalankan build atau rilis Anda.

Aku mengalami masalah. Bagaimana cara memecahkan masalahnya?

Lihat Memecahkan Masalah Build dan Rilis.

Saya tidak dapat memilih kumpulan agen default dan saya tidak dapat mengantre build atau rilis saya. Bagaimana cara memperbaikinya?

Lihat Kumpulan agen.

Tugas push NuGet saya gagal dengan kesalahan berikut: "Kesalahan: tidak bisa mendapatkan sertifikat penerbit lokal". Bagaimana aku bisa memperbaiki ini?

Ini dapat diperbaiki dengan menambahkan sertifikat akar tepercaya. Anda dapat menambahkan NODE_EXTRA_CA_CERTS=file variabel lingkungan ke agen build, atau Anda dapat menambahkan NODE.EXTRA.CA.CERTS=file variabel tugas di alur Anda. Lihat dokumentasiNode.js untuk detail selengkapnya tentang variabel ini. Lihat Mengatur variabel dalam alur untuk instruksi tentang mengatur variabel di alur Anda.

Saya tidak dapat terhubung dengan Key Vault dari Azure DevOps

Ini terjadi ketika firewall Key Vault tidak dikonfigurasi dengan benar. Pastikan bahwa kumpulan agen dan Layanan Azure DevOps itu sendiri dapat mengakses brankas kunci. Untuk melakukan ini, pastikan bahwa Rentang IP Azure DevOps untuk wilayah Organisasi Anda diizinkan, serta rentang IP agen untuk agen yang dihosting Microsoft diizinkan jika menggunakan agen MS Hosted.