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 di gateway applicazione.

gateway applicazione offre due modelli per la terminazione TLS:

  • Specificare i certificati TLS/SSL collegati al listener. Questo modello è il modo tradizionale per passare certificati TLS/SSL a 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.

gateway applicazione l'integrazione con Key Vault offre numerosi 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

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

Dopo aver configurato 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 a 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.

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, gateway applicazione ruota 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. 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 arm).

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 è supportata da gateway applicazione tramite portale di Azure oggi.

Impostazioni del certificato in Key Vault

Per la terminazione TLS, 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

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

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

Nota

app Azure i integration gateway with 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

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. Nella portale di Azure passare a Key Vault.

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

  3. Se si usa il criterio di accesso dell'insieme di credenziali del modello di autorizzazione: selezionare Criteri di accesso, selezionare + Aggiungi criteri di accesso, selezionare Recupera per autorizzazioni segrete e scegliere l'identità gestita assegnata dall'utente per Seleziona entità. Quindi selezionare Salva.

    Se si usa il controllo degli accessi in base al ruolo di Azure, seguire l'articolo Assegnare un accesso all'identità gestita a una risorsa e assegnare l'identità gestita assegnata dall'utente il ruolo utente Segreti dell'insieme di credenziali delle chiavi di Azure all'insieme di credenziali delle chiavi di Azure.

Verificare le autorizzazioni del firewall per Key Vault

A partire dal 15 marzo 2021, Key Vault riconosce 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 gateway applicazione nella sottoscrizione.

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

Suggerimento

I passaggi da 1 a 3 non sono necessari se l'insieme di credenziali delle chiavi ha un endpoint privato abilitato. Il gateway applicazione può accedere all'insieme di credenziali delle chiavi 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 Rete nell'insieme di credenziali delle chiavi.

  2. Nella scheda Firewall e reti virtuali selezionare Reti selezionate.

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

  4. Selezionare Sì per consentire ai servizi attendibili di ignorare il firewall di Key Vault.

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

Nota

Se si distribuisce l'istanza di 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 dalla 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 su enabledForTemplateDeploymenttrue. Il certificato potrebbe avere o meno una password. Per un certificato con una password, nell'esempio seguente viene illustrata una possibile configurazione per la voce in properties per la sslCertificates configurazione del modello di Resource Manager per gateway applicazione.

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

I valori di e appGatewaySSLCertificatePassword vengono cercati dall'insieme di appGatewaySSLCertificateData credenziali delle chiavi, come descritto in Informazioni di riferimento sui segreti 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 password voce.

Configurare gateway applicazione listener

Modello di criteri di accesso dell'insieme di credenziali delle autorizzazioni di Key Vault

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

In Scegliere un certificato selezionare Crea nuovo e quindi scegliere Scegliere un certificato da Key Vault in Impostazioni Https.

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

Dopo aver selezionato, selezionare 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

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 all'insieme di credenziali delle chiavi 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 nella portale di Azure e selezionare la scheda Listener. Fare clic su Aggiungi listener (o selezionare un esistente) e specificare il protocollo su HTTPS.

In Scegliere un certificato selezionare il certificato denominato nei passaggi precedenti. Dopo aver selezionato, selezionare 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 all'insieme di credenziali delle chiavi associato o di individuare l'oggetto certificato, il gateway applicazione imposta automaticamente il listener su uno stato disabilitato.

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

app Azure lication Gateway 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 intitolata Risolvere il problema di Azure Key Vault per il gateway applicazione, se il gateway riscontra questo problema. Verificare che la sottoscrizione corretta 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 esatto.

Identificando tale evento tramite Azure Advisor o Integrità risorse, è possibile risolvere rapidamente eventuali problemi di configurazione con l'insieme di credenziali delle chiavi. È consigliabile sfruttare Azure Advisor e Integrità risorse avvisi 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