Menggunakan sertifikat untuk mengakses Azure Key Vault dengan aman dengan Batch

Peringatan

Sertifikat akun batch sebagaimana dirinci dalam artikel ini tidak digunakan lagi. Untuk mengakses Azure Key Vault dengan aman, cukup gunakan Identitas terkelola Kumpulan dengan izin akses yang sesuai yang dikonfigurasi untuk identitas terkelola yang ditetapkan pengguna untuk mengakses Key Vault Anda. Jika Anda perlu menyediakan sertifikat pada simpul Batch, gunakan ekstensi VM Azure Key Vault yang tersedia bersama dengan kumpulan Identitas Terkelola untuk menginstal dan mengelola sertifikat pada kumpulan Batch Anda. Untuk informasi selengkapnya tentang menyebarkan sertifikat dari Azure Key Vault dengan Identitas Terkelola pada kumpulan Batch, lihat Mengaktifkan rotasi sertifikat otomatis di kumpulan Batch.

CloudServiceConfiguration kumpulan tidak menyediakan kemampuan untuk menentukan Identitas Terkelola atau ekstensi VM Azure Key Vault, dan kumpulan ini tidak digunakan lagi. Anda harus bermigrasi ke VirtualMachineConfiguration kumpulan yang menyediakan alternatif yang disebutkan di atas.

Dalam artikel ini, Anda akan mempelajari cara menyiapkan simpul Batch dengan sertifikat untuk mengakses kredensial yang disimpan dengan aman di Azure Key Vault.

Untuk mengautentikasi ke Vault Kunci Azure dari simpul Batch, Anda perlu:

  • Kredensial Microsoft Entra
  • Sertifikat
  • akun batch
  • Kumpulan Batch dengan setidaknya satu simpul

Mendapatkan sertifikat

Jika Anda belum memiliki sertifikat, gunakan cmdlet PowerShell New-SelfSignedCertificate untuk membuat sertifikat baru yang ditandatangani sendiri.

Membuat perwakilan layanan

Akses ke Vault Kunci diberikan kepada pengguna atau kepala layanan. Untuk mengakses Key Vault secara terprogram, gunakan prinsip layanan dengan sertifikat yang Anda buat di langkah sebelumnya. Perwakilan layanan harus berada di penyewa Microsoft Entra yang sama dengan Key Vault.

$now = [System.DateTime]::Parse("2020-02-10")
# Set this to the expiration date of the certificate
$expirationDate = [System.DateTime]::Parse("2021-02-10")
# Point the script at the cer file you created $cerCertificateFilePath = 'c:\temp\batchcertificate.cer'
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import($cerCertificateFilePath)
# Load the certificate into memory
$credValue = [System.Convert]::ToBase64String($cer.GetRawCertData())
# Create a new AAD application that uses this certificate
$newADApplication = New-AzureRmADApplication -DisplayName "Batch Key Vault Access" -HomePage "https://batch.mydomain.com" -IdentifierUris "https://batch.mydomain.com" -certValue $credValue -StartDate $now -EndDate $expirationDate
# Create new AAD service principal that uses this application
$newAzureAdPrincipal = New-AzureRmADServicePrincipal -ApplicationId $newADApplication.ApplicationId

URL untuk aplikasi tidak penting, karena kami hanya menggunakannya untuk akses Vault Kunci.

Memberikan hak atas Vault Kunci

Perwakilan layanan yang dibuat pada langkah sebelumnya memerlukan izin untuk mengambil rahasia dari Key Vault. Izin dapat diberikan baik melalui portal Azure atau dengan perintah PowerShell di bawah ini.

Set-AzureRmKeyVaultAccessPolicy -VaultName 'BatchVault' -ServicePrincipalName '"https://batch.mydomain.com' -PermissionsToSecrets 'Get'

Menetapkan sertifikat ke akun Batch

Buat kumpulan Batch, lalu buka tab sertifikat di kumpulan dan tetapkan sertifikat yang Anda buat. Sertifikat sekarang ada di semua simpul Batch.

Selanjutnya, tetapkan sertifikat ke akun Batch. Menetapkan sertifikat ke akun memungkinkan Batch menetapkannya ke kumpulan dan kemudian ke simpul. Cara termudah untuk melakukan ini adalah pergi ke akun Batch Anda di portal, menavigasi ke Sertifikat, dan pilih Tambahkan. Unggah .pfx file yang Anda buat sebelumnya dan berikan kata sandi. Setelah selesai, sertifikat ditambahkan ke daftar dan Anda dapat memverifikasi sidik jari.

Sekarang ketika Anda membuat kumpulan Batch, Anda dapat menavigasi ke Sertifikat di dalam kolam renang dan menetapkan sertifikat yang Anda buat ke kumpulan itu. Saat Anda melakukannya, pastikan Anda memilih LocalMachine untuk lokasi toko. Sertifikat dimuat pada semua simpul Batch di kumpulan.

Menginstal Azure PowerShell

Jika Anda berencana mengakses Vault Kunci menggunakan skrip PowerShell pada simpul Anda, maka Anda memerlukan perpustakaan Azure PowerShell yang terinstal. Jika simpul Anda menginstal Windows Management Framework (WMF) 5, Anda dapat menggunakan perintah modul instalasi untuk mengunduhnya. Jika Anda menggunakan simpul yang tidak memiliki WMF 5, cara termudah untuk menginstalnya adalah dengan membundel file Azure PowerShell .msi dengan file Batch Anda, lalu panggil penginstal sebagai bagian pertama dari skrip startup Batch Anda. Lihat contoh untuk detailnya:

$psModuleCheck=Get-Module -ListAvailable -Name Azure -Refresh
if($psModuleCheck.count -eq 0) {
    $psInstallerPath = Join-Path $downloadPath "azure-powershell.3.4.0.msi" Start-Process msiexec.exe -ArgumentList /i, $psInstallerPath, /quiet -wait
}

Akses Key Vault

Sekarang Anda siap untuk mengakses Vault Kunci dalam skrip yang berjalan pada simpul Batch Anda. Untuk mengakses Key Vault dari skrip, yang Anda butuhkan adalah skrip Anda untuk mengautentikasi terhadap ID Microsoft Entra menggunakan sertifikat. Untuk melakukannya di PowerShell, gunakan contoh perintah berikut. Tentukan GUID yang sesuai untuk Thumbprint,ID Aplikasi (ID perwakilan layanan Anda), dan ID Penyewa (penyewa tempat perwakilan layanan Anda ada).

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

Setelah diautentikasi, akses KeyVault seperti biasa.

$adminPassword=Get-AzureKeyVaultSecret -VaultName BatchVault -Name batchAdminPass

Ini adalah kredensial untuk digunakan dalam skrip Anda.

Langkah berikutnya