Condividi tramite


Usare i certificati per accedere in modo sicuro ad Azure Key Vault con Batch

Avviso

I certificati dell'account Batch, come descritto in questo articolo, sono deprecati. Per accedere in modo sicuro ad Azure Key Vault, è sufficiente usare Identità gestite del pool con le autorizzazioni di accesso appropriate configurate per l'identità gestita assegnata dall'utente per accedere all'insieme di credenziali delle chiavi. Se è necessario effettuare il provisioning dei certificati nei nodi di Batch, usare l'estensione della macchina virtuale Azure Key Vault disponibile insieme all'identità gestita del pool per installare e gestire i certificati nel pool di Batch. Per altre informazioni sulla distribuzione di certificati da Azure Key Vault con identità gestita nei pool di Batch, vedere Abilitare la rotazione automatica dei certificati in un pool di Batch.

Questo articolo illustra come configurare i nodi di Batch con certificati per accedere in modo sicuro alle credenziali archiviate in Azure Key Vault.

Per eseguire l'autenticazione a Azure Key Vault da un nodo di Batch sono necessari:

  • Credenziali di Microsoft Entra
  • Un certificato
  • Un account Batch
  • Un pool di Batch con almeno un nodo

Ottenere un certificato

Se non si ha già un certificato, usare il cmdlet di PowerShell New-SelfSignedCertificate per creare un nuovo certificato autofirmato.

Creare un'entità servizio

L'accesso a Key Vault può essere concesso a un utente o a un'entità servizio. Per accedere a Key Vault a livello di codice, usare un'entità servizio con il certificato creato in precedenza. L'entità servizio deve trovarsi nello stesso tenant di Microsoft Entra in cui si trova 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

Gli URL dell'applicazione non sono importanti perché vengono usati solo per l'accesso a Key Vault.

Concedere i diritti per Key Vault

Per recuperare i segreti da Key Vault, l'entità servizio creata in precedenza deve essere autorizzata. L'autorizzazione può essere concessa tramite il portale di Azure o con il comando di PowerShell riportato di seguito.

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

Assegnare un certificato a un account Batch

Creare un pool di Batch, quindi passare alla scheda del certificato nel pool e assegnare il certificato creato. Il certificato si troverà in tutti i nodi di Batch.

Assegnare quindi il certificato all'account Batch. L'assegnazione del certificato all'account consente a Batch di assegnarlo ai pool e quindi ai nodi. Il modo più semplice per farlo è accedere al proprio account Batch sul portale, selezionare Certificati e quindi Aggiungi. Caricare il file .pfx generato in precedenza e specificare la password. Al termine, il certificato viene aggiunto all'elenco ed è possibile verificare l'identificazione personale.

A questo punto, quando si crea un pool di Batch, è possibile accedere a Certificati nel pool e assegnare il certificato creato al pool. Quando si esegue questa operazione, assicurarsi di selezionare LocalMachine come percorso di archiviazione. Il certificato verrà caricato in tutti i nodi di Batch del pool.

Installare Azure PowerShell

Per accedere a Key Vault usando script di PowerShell nei nodi è necessario installare la libreria di Azure PowerShell. Se nei nodi è installato Windows Management Framework (WMF) 5 è possibile usare il comando install-module per scaricarla. Se si usano nodi senza WMF 5, il modo più semplice per installarla è di aggregare il file .msi di Azure PowerShell con i file di Batch, quindi chiamare il programma di installazione nella prima parte dello script di avvio di Batch. Per informazioni dettagliate vedere l'esempio seguente:

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

Accedere all'insieme di credenziali delle chiavi

A questo punto è possibile accedere a Key Vault negli script in esecuzione nei nodi Batch. Per accedere a Key Vault con uno script, è sufficiente autenticare lo script in Microsoft Entra ID usando il certificato. Per farlo con PowerShell, usare i comandi di esempio seguenti. Specificare il GUID appropriato per Identificazione personale, ID app (l'ID dell'entità servizio) e ID tenant (il tenant in cui si trova l'entità servizio).

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

Dopo l'autenticazione, accedere normalmente a Key Vault.

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

Queste sono le credenziali da usare nello script.

Passaggi successivi