Partager via


Utiliser des certificats pour accéder de manière sécurisée à Azure Key Vault avec Batch

Avertissement

Les certificats de compte Batch, comme indiqué dans cet article, sont dépréciés. Pour accéder de manière sécurisée à Azure Key Vault, utilisez simplement les identités managées de pool avec les autorisations d’accès appropriées configurées pour l’identité managée affectée par l’utilisateur afin d’accéder à votre coffre de clés Key Vault. Si vous devez provisionner des certificats sur des nœuds Batch, utilisez l’extension de machine virtuelle Azure Key Vault disponible conjointement avec l’identité managée de pool pour installer et gérer les certificats sur votre pool Batch. Pour plus d’informations sur le déploiement de certificats à partir d’Azure Key Vault avec une identité managée sur des pools Batch, consultez Activer la rotation automatique des certificats dans un pool Batch.

Dans cet article, vous allez apprendre à configurer des nœuds Batch avec des certificats pour accéder de manière sécurisée aux informations d’identification stockées dans Azure Key Vault.

Pour vous authentifier auprès d’Azure Key Vault à partir d’un nœud Batch, vous avez besoin des éléments suivants :

  • Des informations d’identification Microsoft Entra
  • Un certificat
  • Un compte Batch
  • Un pool Batch avec au moins un nœud

Obtenir un certificat

Si vous n’avez pas encore de certificat, utilisez l’applet de commande New-SelfSignedCertificatePowerShell pour créer un nouveau certificat auto-signé.

Créer un principal du service

L’accès à Key Vault est accordé à un utilisateur ou à un principal de service. Pour accéder programmatiquement à Key Vault, utilisez un principal de service avec le certificat créé à l’étape précédente. Le principal de service doit être dans le même locataire Microsoft Entra que 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

Les URL de l’application ne sont pas importantes, car elles ne seront utilisées que pour l’accès à Key Vault.

Accorder des droits à Key Vault

Le principal de service créé à l’étape précédente doit avoir l’autorisation de récupérer les secrets de Key Vault. L’autorisation peut être accordée sur le Portail Azure ou avec la commande PowerShell ci-dessous.

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

Attribuer un certificat à un compte Batch

Créez un pool Batch, accédez à l’onglet des certificats dans le pool, puis attribuez le certificat que vous avez créé. Le certificat est maintenant sur tous les nœuds Batch.

Attribuons à présent le certificat au compte Batch. Batch pourra ainsi l’affecter aux pools, puis aux nœuds. Pour ce faire, la méthode la plus simple consiste à accéder à votre compte Batch dans le portail, à accéder à Certificats, puis à sélectionner Ajouter. Téléchargez le fichier .pfx que vous avez généré et indiquez le mot de passe. Une fois l’opération terminée, le certificat est ajouté à la liste et vous pouvez vérifier l’empreinte.

Désormais, quand vous créez un pool Batch, vous pouvez accéder à Certificats au sein du pool et attribuer à ce dernier le certificat que vous avez créé. Quand vous effectuez cette opération, assurez-vous de sélectionner LocalMachine pour l’emplacement du magasin. Le certificat est chargé sur tous les nœuds Batch dans le pool.

Installation d’Azure PowerShell

Si vous envisagez d’accéder à Key Vault à l’aide de scripts PowerShell sur vos nœuds, il est nécessaire que la bibliothèque Azure PowerShell soit installée. Si la version 5 de WMF (Windows Management Framework) est installée sur vos nœuds, vous pouvez utiliser la commande install-module pour la télécharger. Si vous utilisez des nœuds non dotés de WMF 5, le moyen le plus simple de l’installer consiste à regrouper le fichier .msi Azure PowerShell avec vos fichiers Batch, puis à appeler le programme d’installation au début de votre script de démarrage Batch. Pour plus de détails, consultez cet exemple :

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

Accéder au coffre de clés

Vous pouvez maintenant accéder à Key Vault dans des scripts qui s’exécutent sur vos nœuds Batch. Pour que vous puissiez accéder à Key Vault à partir d’un script, il suffit que ce dernier s’authentifie auprès de l’ID Microsoft Entra à l’aide du certificat. Pour effectuer cette opération dans PowerShell, utilisez les exemples de commandes suivants. Spécifiez le GUID approprié pour l’Empreinte, l’ID de l’application (ID de votre principal de service) et l’ID de locataire (locataire dans lequel se trouve votre principal de service).

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

Une fois authentifié, accédez à Key Vault comme vous le feriez normalement.

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

Ce sont là les informations d’identification à utiliser dans votre script.

Étapes suivantes