Dela via


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.

CloudServiceConfiguration pooler ger inte möjlighet att ange antingen hanterad identitet eller azure Key Vault VM-tillägget, och dessa pooler är inaktuella. Du bör migrera till VirtualMachineConfiguration pooler som tillhandahåller ovan nämnda alternativ.

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