Certificaten gebruiken om veilig toegang te krijgen tot Azure Key Vault met Batch

Waarschuwing

Batch-accountcertificaten, zoals beschreven in dit artikel, worden afgeschaft. Als u veilig toegang wilt krijgen tot Azure Key Vault, gebruikt u door pool beheerde identiteiten met de juiste toegangsmachtigingen die zijn geconfigureerd voor de door de gebruiker toegewezen beheerde identiteit voor toegang tot uw Key Vault. Als u certificaten op Batch-knooppunten wilt inrichten, gebruikt u de beschikbare Azure Key Vault-VM-extensie in combinatie met beheerde identiteiten voor het installeren en beheren van certificaten in uw Batch-pool. Zie Automatische certificaatrotatie inschakelen in een Batch-pool voor meer informatie over het implementeren van certificaten uit Azure Key Vault met beheerde identiteit in Batch-pools.

CloudServiceConfiguration pools bieden niet de mogelijkheid om beheerde identiteit of de Azure Key Vault-VM-extensie op te geven en deze pools worden afgeschaft. U moet migreren naar VirtualMachineConfiguration pools die de bovengenoemde alternatieven bieden.

In dit artikel leert u hoe u Batch-knooppunten instelt met certificaten om veilig toegang te krijgen tot referenties die zijn opgeslagen in Azure Key Vault.

Voor verificatie bij Azure Key Vault vanuit een Batch-knooppunt hebt u het volgende nodig:

  • Een Microsoft Entra-referentie
  • Een certificaat
  • Een Batch-account
  • Een Batch-pool met ten minste één knooppunt

Een certificaat verkrijgen

Als u nog geen certificaat hebt, gebruikt u de PowerShell-cmdlet New-SelfSignedCertificate om een nieuw zelfondertekend certificaat te maken.

Een service-principal maken

Toegang tot Key Vault wordt verleend aan een gebruiker of een service-principal. Als u programmatisch toegang wilt krijgen tot Key Vault, gebruikt u een service-principal met het certificaat dat u in de vorige stap hebt gemaakt. De service-principal moet zich in dezelfde Microsoft Entra-tenant bevinden als de 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

De URL's voor de toepassing zijn niet belangrijk, omdat we ze alleen gebruiken voor Key Vault-toegang.

Rechten verlenen aan Key Vault

De service-principal die in de vorige stap is gemaakt, heeft toestemming nodig om de geheimen op te halen uit Key Vault. U kunt een machtiging verlenen via Azure Portal of met de onderstaande PowerShell-opdracht.

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

Een certificaat toewijzen aan een Batch-account

Maak een Batch-pool en ga vervolgens naar het certificaattabblad in de pool en wijs het certificaat toe dat u hebt gemaakt. Het certificaat bevindt zich nu op alle Batch-knooppunten.

Wijs vervolgens het certificaat toe aan het Batch-account. Als u het certificaat aan het account toewijst, kan Batch het toewijzen aan de pools en vervolgens aan de knooppunten. De eenvoudigste manier om dit te doen, is door naar uw Batch-account in de portal te gaan, naar Certificaten te navigeren en Toevoegen te selecteren. Upload het .pfx bestand dat u eerder hebt gegenereerd en geef het wachtwoord op. Zodra het certificaat is voltooid, wordt het toegevoegd aan de lijst en kunt u de vingerafdruk controleren.

Wanneer u nu een Batch-pool maakt, kunt u naar Certificaten in de pool navigeren en het certificaat toewijzen dat u aan die pool hebt gemaakt. Wanneer u dit doet, moet u LocalMachine selecteren voor de winkellocatie. Het certificaat wordt geladen op alle Batch-knooppunten in de pool.

Installeer Azure PowerShell

Als u van plan bent toegang te krijgen tot Key Vault met behulp van PowerShell-scripts op uw knooppunten, moet de Azure PowerShell-bibliotheek zijn geïnstalleerd. Als op uw knooppunten Windows Management Framework (WMF) 5 is geïnstalleerd, kunt u de opdracht install-module gebruiken om deze te downloaden. Als u knooppunten gebruikt die geen WMF 5 hebben, is de eenvoudigste manier om het te installeren door het Azure PowerShell-bestand .msi te bundelen met uw Batch-bestanden en vervolgens het installatieprogramma aan te roepen als het eerste deel van uw Batch-opstartscript. Zie dit voorbeeld voor meer informatie:

$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
}

Key Vault openen

U bent nu klaar voor toegang tot Key Vault in scripts die worden uitgevoerd op uw Batch-knooppunten. Als u toegang wilt krijgen tot Key Vault vanuit een script, hoeft u alleen maar uw script te verifiëren bij Microsoft Entra-id met behulp van het certificaat. Gebruik de volgende voorbeeldopdrachten om dit in PowerShell te doen. Geef de juiste GUID op voor vingerafdruk, app-id (de id van uw service-principal) en tenant-id (de tenant waar uw service-principal bestaat).

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

Nadat u bent geverifieerd, opent u KeyVault zoals u dat normaal zou doen.

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

Dit zijn de referenties die u in uw script kunt gebruiken.

Volgende stappen