Terminazione TLS con certificati di Key Vault

Azure Key Vault è un archivio segreto gestito da piattaforma che è possibile usare per proteggere segreti, chiavi e certificati TLS/SSL. Il gateway applicazione di Azure supporta l'integrazione con Key Vault per i certificati server associati a listener abilitati per HTTPS. Questo supporto è limitato allo SKU v2 del gateway applicazione.

Il gateway applicazione offre due modelli per la terminazione TLS:

  • Specificare i certificati TLS/SSL collegati al listener. Questo è il modo tradizionale per spostare i certificati TLS/SSL al gateway applicazione per la terminazione TLS.
  • Specificare un riferimento a un certificato o un segreto di Key Vault esistente quando si crea un listener abilitato per HTTPS.

L'integrazione del gateway applicazione con Key Vault offre molti vantaggi, tra cui:

  • Maggiore sicurezza, perché i certificati TLS/SSL non vengono gestiti direttamente dal team di sviluppo di applicazioni. L'integrazione consente a un team di sicurezza separato di:
    • Configurare i gateway applicazione.
    • Controllare i cicli di vita del gateway applicazione.
    • Concedere le autorizzazioni ai gateway applicazione selezionati per accedere ai certificati archiviati nell'insieme di credenziali delle chiavi.
  • Supporto per l'importazione di certificati esistenti nell'insieme di credenziali delle chiavi. In alternativa, usare le API di Key Vault per creare e gestire nuovi certificati con uno dei partner di Key Vault attendibili.
  • Supporto per il rinnovo automatico dei certificati archiviati nell'insieme di credenziali delle chiavi.

Certificati supportati

Il gateway applicazione supporta attualmente solo i certificati convalidati dal software. I certificati convalidati dal modulo di protezione hardware non sono supportati.

Dopo aver configurato il gateway applicazione per l'uso dei certificati di Key Vault, le istanze recuperano il certificato da Key Vault e le installano localmente per la terminazione TLS. Le istanze eseguano il polling di Key Vault a intervalli di quattro ore per recuperare una versione rinnovata del certificato, se esistente. Se viene trovato un certificato aggiornato, il certificato TLS/SSL associato al listener HTTPS viene ruotato automaticamente.

Suggerimento

Qualsiasi modifica apportata al gateway applicazione forza un controllo sull'insieme di credenziali delle chiavi per verificare se sono disponibili nuove versioni dei certificati. Sono incluse, a titolo esemplificativo, le modifiche apportate alle configurazioni IP front-end, ai listener, alle regole, ai pool back-end, ai tag delle risorse e altro ancora. Se viene trovato un certificato aggiornato, il nuovo certificato viene immediatamente presentato.

Il gateway applicazione usa un identificatore segreto in Key Vault per fare riferimento ai certificati. Per Azure PowerShell, l'interfaccia della riga di comando di Azure o Azure Resource Manager, è consigliabile usare un identificatore segreto che non specifica una versione. In questo modo, il gateway applicazione cambia automaticamente il certificato se è disponibile una versione più recente nell'insieme di credenziali delle chiavi. Un esempio di URI segreto senza una versione è https://myvault.vault.azure.net/secrets/mysecret/. È possibile fare riferimento ai passaggi di PowerShell descritti nella sezione seguente.

Il portale di Azure supporta solo i certificati di Key Vault, non i segreti. Il gateway applicazione supporta ancora il riferimento ai segreti da Key Vault, ma solo tramite risorse non del portale come PowerShell, l'interfaccia della riga di comando di Azure, le API e i modelli di Azure Resource Manager (modelli di Resource Manager).

I riferimenti agli insiemi di credenziali delle chiavi in altre sottoscrizioni di Azure sono supportati, ma devono essere configurati tramite il modello di Resource Manager, Azure PowerShell, l'interfaccia della riga di comando, Bicep e così via. La configurazione dell'insieme di credenziali delle chiavi tra sottoscrizioni non è attualmente supportata dal gateway applicazione tramite il portale di Azure.

Impostazioni del certificato in Key Vault

Per la terminazione TLS, il gateway applicazione supporta solo i certificati in formato PFX (Personal Information Exchange). È possibile importare un certificato esistente o crearne uno nuovo nell'insieme di credenziali delle chiavi. Per evitare errori, assicurarsi che lo stato del certificato sia impostato su Abilitato in Key Vault.

Funzionamento dell'integrazione

L'integrazione del gateway applicazione con Key Vault è un processo di configurazione in tre passaggi:

Diagram that shows three steps for integrating Application Gateway with Key Vault.

Nota

L'integrazione del gateway applicazione di Azure con Key Vault supporta sia i criteri di accesso dell'insieme di credenziali che i modelli di autorizzazione di controllo degli accessi in base al ruolo di Azure.

Ottenere un'identità gestita assegnata dall'utente

Il gateway applicazione usa un'identità gestita per recuperare i certificati da Key Vault per conto dell'utente.

È possibile creare una nuova identità gestita assegnata dall'utente o riutilizzare un'identità esistente con l'integrazione. Per creare una nuova identità gestita assegnata dall'utente, vedere Creare un'identità gestita assegnata dall'utente usando il portale di Azure.

Delegare l'identità gestita assegnata dall'utente a Key Vault

Definire i criteri di accesso per usare l'identità gestita assegnata dall'utente con l'insieme di credenziali delle chiavi:

  1. Nel portale di Azure passare a Key Vault.

  2. Selezionare l'insieme di credenziali delle chiavi che contiene il certificato.

  3. Se si usa il modello di autorizzazione criteri di accesso dell'insieme di credenziali: selezionare Criteri di accesso, selezionare + Aggiungi criteri di accesso, selezionare Ottenere per Autorizzazioni segretee scegliere l'identità gestita assegnata dall'utente per Selezionare. Quindi selezionare Salva.

    Se si usa controllo degli accessi in base al ruolo di Azure seguire l'articolo Assegnare un accesso all'identità gestita a una risorsa e assegnare il ruolo di Key Vault Secrets all'identità gestita assegnata all’utente alla Azure Key Vault.

Verificare le autorizzazioni del firewall per Key Vault

A partire dal 15 marzo 2021, Key Vault riconosce il gateway applicazione come servizio attendibile sfruttando le identità gestite dall'utente per l'autenticazione in Azure Key Vault. Con l'uso degli endpoint di servizio e l'abilitazione dell'opzione servizi attendibili per il firewall di Key Vault, è possibile creare un limite di rete sicuro in Azure. È possibile negare l'accesso al traffico da tutte le reti (incluso il traffico Internet) a Key Vault, ma rendere comunque l'insieme di credenziali delle chiavi accessibile per una risorsa del gateway applicazione nella sottoscrizione.

Quando si usa un insieme di credenziali delle chiavi con restrizioni, seguire questa procedura per configurare il gateway applicazione per l'uso di firewall e reti virtuali:

Suggerimento

I passaggi da 1 a 3 non sono necessari se il Key Vault ha un endpoint privato abilitato. Il gateway applicazione può accedere al Key Vault usando l'indirizzo IP privato.

Importante

Se si usano endpoint privati per accedere a Key Vault, è necessario collegare l'area del DNS privato privatelink.vaultcore.azure.net contenente il record corrispondente all'insieme di credenziali delle chiavi a cui si fa riferimento, alla rete virtuale contenente gateway applicazione. I server DNS personalizzati possono continuare a essere usati nella rete virtuale anziché i resolver forniti da DNS di Azure, ma anche la zona DNS privata deve rimanere collegata alla rete virtuale.

  1. Nel portale di Azure selezionare Retenel Key Vault.

  2. Nella scheda firewall e reti virtuali scegliere Reti selezionate.

  3. Per Reti virtuali, selezionare + Aggiungi reti virtuali esistentie quindi aggiungere la rete virtuale e la subnet per l'istanza del gateway applicazione. Se richiesto, verificare che la casella Non configurare gli endpoint di servizio "Microsoft.KeyVault" al momento sia deselezionata per assicurarsi che Microsoft.KeyVaultl'endpoint di servizio sia abilitato nella subnet.

  4. Selezionare per consentire ai servizi attendibili di ignorare il firewall dell'insieme di credenziali delle chiavi.

    Screenshot that shows selections for configuring Application Gateway to use firewalls and virtual networks.

Nota

Se si distribuisce l'istanza del gateway applicazione tramite un modello di Resource Manager usando l'interfaccia della riga di comando di Azure o PowerShell o tramite un'applicazione Di Azure distribuita dal portale di Azure, il certificato SSL viene archiviato nell'insieme di credenziali delle chiavi come file PFX con codifica Base64. È necessario completare i passaggi descritti in Usare Azure Key Vault per passare il valore del parametro sicuro durante la distribuzione.

È particolarmente importante impostare enabledForTemplateDeployment su true. Il certificato potrebbe avere o non avere una password. Nell'esempio seguente viene illustrata una possibile configurazione per la voce sslCertificates in properties per la configurazione del modello di Resource Manager per il gateway applicazione per un certificato con una password.

"sslCertificates": [
     {
         "name": "appGwSslCertificate",
         "properties": {
             "data": "[parameters('appGatewaySSLCertificateData')]",
            "password": "[parameters('appGatewaySSLCertificatePassword')]"
        }
    }
]

I valori di appGatewaySSLCertificateData e appGatewaySSLCertificatePassword vengono cercati dall'insieme di credenziali delle chiavi, come descritto in Segreti di riferimento con ID dinamico. Seguire i riferimenti all'indietro da parameters('secretName') per vedere come viene eseguita la ricerca. Se il certificato è senza password, omettere la voce password.

Configurare il listener del gateway applicazione

Modello di criteri di accesso delle autorizzazioni di Key Vault

Passare al gateway applicazione nel portale di Azure e selezionare la scheda listener. Selezionare Aggiungi listene (o selezionare un listener esistente) e specificare HTTPS per il protocollo.

In Scegliere un certificatoselezionare Crea nuovo, quindi selezionare Scegliere un certificato da Key Vault in ImpostazioniHttps.

Per Cert name (Nome certificato), digitare un nome descrittivo per il certificato a cui fare riferimento in Key Vault. Scegliere l'identità gestita, il Key Vault e il certificato.

Dopo averlo selezionato, scegliere Aggiungi (se si crea) o Salva (se si modifica) per applicare il certificato di Key Vault a cui si fa riferimento al listener.

Modello di autorizzazione per il controllo degli accessi in base al ruolo di Azure Key Vault

Il gateway applicazione supporta i certificati a cui viene fatto riferimento in Key Vault tramite il modello di autorizzazione di controllo degli accessi in base al ruolo. I primi passaggi per fare riferimento al Key Vault devono essere completati tramite il modello di Resource Manager, Bicep, l'interfaccia della riga di comando o PowerShell.

Nota

La specifica dei certificati di Azure Key Vault soggetti al modello di autorizzazione per il controllo degli accessi in base al ruolo non è supportata tramite il portale.

In questo esempio si userà PowerShell per fare riferimento a un nuovo segreto di Key Vault.

# Get the Application Gateway we want to modify
$appgw = Get-AzApplicationGateway -Name MyApplicationGateway -ResourceGroupName MyResourceGroup
# Specify the resource id to the user assigned managed identity - This can be found by going to the properties of the managed identity
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity"
# Get the secret ID from Key Vault
$secret = Get-AzKeyVaultSecret -VaultName "MyKeyVault" -Name "CertificateName"
$secretId = $secret.Id.Replace($secret.Version, "") # Remove the secret version so Application Gateway uses the latest version in future syncs
# Specify the secret ID from Key Vault 
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# Commit the changes to the Application Gateway
Set-AzApplicationGateway -ApplicationGateway $appgw

Dopo aver eseguito i comandi, è possibile passare al gateway applicazione nel portale di Azure e selezionare la scheda Listener. Fare clic su Aggiungi listener (o selezionarne uno esistente) e specificare il protocollo su HTTPS.

In Scegliere un certificato selezionare il certificato denominato nei passaggi precedenti. Dopo averlo selezionato, scegliere Aggiungi (se si crea) o Salva (se si modifica) per applicare il certificato di Key Vault a cui si fa riferimento al listener.

Analisi e risoluzione degli errori di Key Vault

Nota

È importante prendere in considerazione qualsiasi impatto sulla risorsa del gateway applicazione quando si apportano modifiche o si revoca l'accesso alla risorsa di Key Vault. Se il gateway applicazione non è in grado di accedere al KeyVault associato o di individuare l'oggetto certificato, il gateway applicazione imposta automaticamente il listener su uno stato disabilitato.

È possibile identificare questo avvenimento effettuato dall'utente visualizzando Integrità risorse per il gateway applicazione. Altre informazioni.

Il gateway applicazione di Azure non esegue solo il polling della versione del certificato rinnovata in Key Vault a intervalli di quattro ore. Registra anche eventuali errori ed è integrato con Azure Advisor per individuare eventuali errori di configurazione con una raccomandazione per la correzione.

  1. Accedere al portale di Azure
  2. Selezionare Advisor
  3. Selezionare Operational Excellence category (Eccellenza operativa) nel menu a sinistra.
  4. Si trova una raccomandazione denominata Risolvere il problema di Azure Key Vault per il gateway applicazione, se il gateway riscontra questo problema. Verificare che l’abbonamento corretto sia selezionata nelle opzioni a discesa precedenti.
  5. Selezionarlo per visualizzare i dettagli dell'errore, la risorsa dell'insieme di credenziali delle chiavi associata e la guida alla risoluzione dei problemi per risolvere il problema corretto.

Identificando tale evento tramite Azure Advisor o Integrità risorse, è possibile risolvere rapidamente eventuali problemi di configurazione con l'insieme di credenziali delle chiavi. Si consiglia di sfruttare i vantaggi degli avvisi di Azure Advisor e Integrità risorse per rimanere informati quando viene rilevato un problema.

Per l'avviso di Advisor, usare "Risolvere il problema di Azure Key Vault per il gateway applicazione" nel tipo di raccomandazione indicato:
Diagram that shows steps for Advisor alert.

È possibile configurare l'avviso integrità risorse come illustrato:
Diagram that shows steps for Resource health alert.

Passaggi successivi

Configurare la terminazione TLS con i certificati di Key Vault usando Azure PowerShell