Azure Application Gateway v2: come utilizzare i certificati nell’Azure Key Vault

Come già descritto nell’articolo “Azure Networking: le novità di Azure Application Gateway v2” la SKU v2 di Azure Application Gateway (AAG) e del Web Application Firewall (WAF) ha introdotto numerosi benefici. Uno di questi è sicuramente l’integrazione con l’Azure Key Vault per quanto riguarda l’utilizzo dei certificati per terminazioni SSL, associati ai listener HTTPS di tipo pubblico e privato.

In questo articolo andremo a vedere nel dettaglio in cosa consiste la configurazione che prevede l’integrazione del certificato SSL con Azure Key Vault, rispetto al metodo tradizionale con il caricamento del certificato in formato pfx sul listener HTTPS.

Benefici dell’integrazione

Tra i benefici della terminazione SSL utilizzando il certificato presente all’interno di Azure Key Vault possiamo riportare:

  • Sicurezza: il certificato non essendo direttamente caricato all’interno dell’Application Gateway, come nel metodo tradizionale, permette di separare e assegnare in modo più granulare e restrittivo determinati diritti di accesso e gestione.
  • Flessibilità: è possibile inserire e generare manualmente all’interno del Key Vault i certificati oppure utilizzare le rest API esposte per il Key Vault, Powershell e CLI per automatizzare tutto il processo.
  • Gestione: grazie a questa integrazione l’Application Gateway in automatico esegue un polling ad intervalli regolari di 24 ore per verificare la presenza di certificati aggiornati e procederne con il rinnovo.

Funzionamento dell’integrazione

La configurazione per l’integrazione con il Key Vault prevede sostanzialmente tre passaggi che andremo ad elencare.

Figura 1 - Integrazione con Azure Key Vault
Figura 1 – Integrazione con Azure Key Vault

1. Configurazione Azure Key Vault

Se non presente occorrerà creare il Key Vault e inserire o generare all’interno della sezione Certificates il certificato che sarà poi da associare sul listener di tipo HTTPS. Sono supportati anche certificati di tipo self-signed.

Figura 2 - Sezione certificati in Azure Key Vault
Figura 2 – Sezione certificati in Azure Key Vault

Per poter configurare l’Application Gateway in modo da utilizzare il certificato inserito nel Key Vault occorrerà abilitare il parametro di soft-delete.

Figura 3 - Azure Key Vault soft-delete
Figura 3 – Azure Key Vault soft-delete

Non è possibile al momento abilitare il soft-delete da portale Azure, occorrerà quindi procedere tramite riga di comando. Questo un esempio utilizzando Powershell con i moduli AzureRM.

Azure Key Vault già esistente.

[cc lang=”powershell”]($resource = Get-AzureRMResource -ResourceId ($vault).ResourceId).Properties | Add-Member -MemberType “NoteProperty” -Name “enableSoftDelete” -Value “true”[/cc]

[cc lang=”powershell”]Set-AzureRMResource -resourceid $resource.ResourceId -Properties $resource.Properties[/cc]

Creazione di un Azure Key Vault con abilitazione della feature di soft-delete.

[cc lang=”powershell”]$keyVault = New-AzKeyVault -Name $kv -ResourceGroupName $rgname -Location $location -EnableSoftDelete[/cc]

Figura 4 - Powershell controllo valore EnableSoftDelete
Figura 4 – Powershell controllo valore EnableSoftDelete
Figura 5 - Powershell output post abilitazione soft-delete
Figura 5 – Powershell output post abilitazione soft-delete

2. Configurazione User Managed Identity

L’Application Gateway utilizzerà, per accedere al repository nel Key Vault e utilizzare il certificato SSL, una user managed identity a cui verranno assegnati i minimi diritti necessari tramite opportune policy.

[cc lang=”powershell”]$identity = New-AzUserAssignedIdentity -Name “cnd-common-we-dev1-key-UserIdentity” -Location $location -ResourceGroupName $rgname[/cc]

[cc lang=”powershell”]Set-AzKeyVaultAccessPolicy -VaultName $kv -PermissionsToSecrets get -ObjectId $identity.PrincipalId[/cc]

3. Configurazione Azure Application Gateway

Grazie alle configurazioni effettuate nei punti precedenti sarà possibile in fase di creazione dell’Application Gateway andare ad utilizzare il certificato presente all’interno del Key Vault. Occorerà procedere creando il listener di tipo HTTPS, selezionando la user managed identity creata al punto 2 e il certificato presente nel Key Vault.

Figura 6 - AAG utilizzo certificato in Azure Key Vault
Figura 6 – AAG utilizzo certificato in Azure Key Vault

Riferimenti

Si riportano alcuni riferimenti alla documentazione ufficiale Microsoft:

Terminazione SSL con certificati Key Vault

Configurare la terminazione SSL con Key Vault certificati utilizzando Azure PowerShell

Conclusioni

La terminazione SSL sull’Application Gateway, grazie all’integrazione con Azure Key Vault, permette di ottimizzare il processo e migliorarlo sia dal punto di vista della sicurezza che dal punto di vista della gestione. Prima di implementare questa nuova funzionalità occorre però tenere in considerazione che si tratta di un servizio ancora in public preview e che non sono garantiti service-level-agreement (SLA) in caso di problemi. Il nostro consiglio è quello di utilizzare al momento la funzionalità per gestire eventuali ripubblicazioni esterne solamente in ambiente di Dev/Test, ma presto questa funzionalità sarà disponibile anche per ambienti di produzione.