Använda certifikat för säker åtkomst till Azure Key Vault med Batch
Varning
Batch-kontocertifikat som beskrivs i den här artikeln är inaktuella. Om du vill få säker åtkomst till Azure Key Vault använder du helt enkelt poolhanterade identiteter med rätt åtkomstbehörigheter som konfigurerats för den användartilldelade hanterade identiteten för att få åtkomst till ditt Key Vault. Om du behöver etablera certifikat på Batch-noder använder du det tillgängliga azure Key Vault VM-tillägget tillsammans med poolhanterad identitet för att installera och hantera certifikat i batchpoolen. Mer information om hur du distribuerar certifikat från Azure Key Vault med hanterad identitet i Batch-pooler finns i Aktivera automatisk certifikatrotation i en Batch-pool.
I den här artikeln får du lära dig hur du konfigurerar Batch-noder med certifikat för säker åtkomst till autentiseringsuppgifter som lagras i Azure Key Vault.
Om du vill autentisera till Azure Key Vault från en Batch-nod behöver du:
- En Microsoft Entra-autentiseringsuppgift
- Ett certifikat
- Ett Batch-konto
- En Batch-pool med minst en nod
Skaffa ett certifikat
Om du inte redan har ett certifikat använder du PowerShell-cmdleten New-SelfSignedCertificate
för att skapa ett nytt självsignerat certifikat.
Skapa ett huvudnamn för tjänsten
Åtkomst till Key Vault beviljas antingen till en användare eller ett huvudnamn för tjänsten. Om du vill komma åt Key Vault programmatiskt använder du ett huvudnamn för tjänsten med det certifikat som du skapade i föregående steg. Tjänstens huvudnamn måste finnas i samma Microsoft Entra-klientorganisation som 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:erna för programmet är inte viktiga eftersom vi bara använder dem för Key Vault-åtkomst.
Bevilja behörigheter till Key Vault
Tjänstens huvudnamn som skapades i föregående steg behöver behörighet att hämta hemligheterna från Key Vault. Behörighet kan beviljas antingen via Azure-portalen eller med PowerShell-kommandot nedan.
Set-AzureRmKeyVaultAccessPolicy -VaultName 'BatchVault' -ServicePrincipalName '"https://batch.mydomain.com' -PermissionsToSecrets 'Get'
Tilldela ett certifikat till ett Batch-konto
Skapa en Batch-pool och gå sedan till certifikatfliken i poolen och tilldela certifikatet som du skapade. Certifikatet finns nu på alla Batch-noder.
Tilldela sedan certifikatet till Batch-kontot. Genom att tilldela certifikatet till kontot kan Batch tilldela det till poolerna och sedan till noderna. Det enklaste sättet att göra detta är att gå till ditt Batch-konto i portalen, gå till Certifikat och välja Lägg till. .pfx
Ladda upp filen som du genererade tidigare och ange lösenordet. När det är klart läggs certifikatet till i listan och du kan verifiera tumavtrycket.
Nu när du skapar en Batch-pool kan du navigera till Certifikat i poolen och tilldela certifikatet som du skapade till poolen. När du gör det kontrollerar du att du väljer LocalMachine för butiksplatsen. Certifikatet läses in på alla Batch-noder i poolen.
Installera Azure PowerShell
Om du planerar att komma åt Key Vault med hjälp av PowerShell-skript på dina noder behöver du Azure PowerShell-biblioteket installerat. Om dina noder har Windows Management Framework (WMF) 5 installerat kan du använda kommandot install-module för att ladda ned det. Om du använder noder som inte har WMF 5 är det enklaste sättet att installera det att paketera Azure PowerShell-filen .msi
med dina Batch-filer och sedan anropa installationsprogrammet som den första delen av batch-startskriptet. Mer information finns i det här exemplet:
$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
}
Komma åt Key Vault
Nu är du redo att komma åt Key Vault i skript som körs på batchnoderna. För att få åtkomst till Key Vault från ett skript behöver du bara för att skriptet ska kunna autentisera mot Microsoft Entra-ID med hjälp av certifikatet. Om du vill göra detta i PowerShell använder du följande exempelkommandon. Ange lämpligt GUID för Tumavtryck, App-ID (ID för tjänstens huvudnamn) och Klientorganisations-ID (klientorganisationen där tjänstens huvudnamn finns).
Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId
När du har autentiserats får du åtkomst till KeyVault som vanligt.
$adminPassword=Get-AzureKeyVaultSecret -VaultName BatchVault -Name batchAdminPass
Det här är de autentiseringsuppgifter som ska användas i skriptet.
Nästa steg
- Läs mer om Azure Key Vault.
- Granska Azure-säkerhetsbaslinjen för Batch.
- Lär dig mer om Batch-funktioner som att konfigurera åtkomst till beräkningsnoder, använda Linux-beräkningsnoder och använda privata slutpunkter.