Terminación TLS con certificados de Key Vault

Azure Key Vault es un almacén de secretos administrado por la plataforma que puede usar para proteger los secretos, las claves y los certificados TLS/SSL. Azure Application Gateway admite la integración con Key Vault para certificados de servidor adjuntos a clientes de escucha con HTTPS habilitado. Esta compatibilidad está limitada a la versión 2 de la SKU de Application Gateway.

Application Gateway ofrece dos modelos para la terminación TLS:

  • Proporcione los certificados TLS/SSL asociados al cliente de escucha. Este modelo es la forma tradicional para pasar los certificados TLS/SSL a Application Gateway para la terminación TLS.
  • Proporcione una referencia a un certificado de Key Vault existente o un secreto al crear un cliente de escucha habilitado para HTTPS.

La integración de Application Gateway con Key Vault ofrece muchas ventajas, incluidas las siguientes:

  • Mayor seguridad, dado que el equipo de desarrollo de aplicaciones no controla directamente los certificados TLS/SSL. La integración permite que un equipo de seguridad independiente haga lo siguiente:
    • Configurar instancias de Application Gateway.
    • Controlar los ciclos de vida de las instancias de Application Gateway.
    • Conceder permisos a las puertas de enlace de aplicación seleccionadas, para tener acceso a los certificados almacenados en Key Vault.
  • Compatibilidad con la importación de certificados existentes en Key Vault. También puede usar las API de Key Vault para crear y administrar certificados nuevos con cualquiera de los asociados de Key Vault de confianza.
  • Compatibilidad con la renovación automática de certificados almacenados en Key Vault.

Certificados admitidos

Actualmente, Application Gateway solo admite certificados validados por software. Los certificados validados por el módulo de seguridad de hardware (HSM) no se admiten.

Después de configurar Application Gateway para usar certificados de Key Vault, sus instancias recuperan el certificado de Key Vault y lo instalan localmente para la terminación TLS. Las instancias sondean Key Vault en intervalos de cuatro horas para recuperar una versión renovada del certificado, si existe. Si se encuentra un certificado actualizado, el certificado TLS/SSL asociado al cliente de escucha HTTPS rota automáticamente.

Sugerencia

Cualquier cambio en Application Gateway fuerza una comprobación en Key Vault para ver si hay disponibles nuevas versiones de certificados. Esto incluye, entre otros, cambios en las configuraciones de IP de front-end, clientes de escucha, reglas, grupos de back-end, etiquetas de recursos, etc. Si se encuentra un certificado actualizado, el nuevo certificado se presenta inmediatamente.

Application Gateway usa un identificador secreto en Key Vault para hacer referencia a los certificados. Para Azure PowerShell, la CLI de Azure o Azure Resource Manager, se recomienda encarecidamente usar un identificador secreto que no especifique una versión. De este modo, Application Gateway rota automáticamente el certificado si hay una versión más reciente disponible en Key Vault. Un ejemplo de un URI de secreto sin una versión es https://myvault.vault.azure.net/secrets/mysecret/. Puede consultar los pasos de PowerShell que se proporcionan en la sección siguiente.

Azure Portal solo admite certificados de Key Vault, no secretos. Application Gateway todavía admite la referencia a secretos de Key Vault, pero solo a través de recursos que no son del portal, como PowerShell, la CLI de Azure, las API y las plantillas de Azure Resource Manager (plantillas de ARM). Los certificados de Key Vault deben tener una clave privada exportable para que Application Gateway pueda usarlas.

Se admiten referencias a Key Vault en otras suscripciones de Azure, pero se deben configurar mediante la plantilla de ARM, Azure PowerShell, CLI, Bicep, etc. La configuración del almacén de claves entre suscripciones no es compatible con Application Gateway a través de Azure Portal en la actualidad.

Configuración del certificado en Key Vault

Para la terminación TLS, Application Gateway solo admite certificados en formato Personal Information Exchange (PFX). Puede importar un certificado existente o crear uno nuevo en Key Vault. Para evitar errores, asegúrese de que el estado del certificado está establecido en Habilitado en Key Vault.

Funcionamiento de la integración

La integración de Application Gateway con Key Vault es un proceso de configuración de tres pasos:

Diagrama que muestra tres pasos para integrar Application Gateway con Key Vault.

Nota:

La integración de Azure Application Gateway con Key Vault admite tanto la directiva de acceso de Vault como los modelos de permisos de control de acceso basado en rol de Azure.

Obtención de una identidad administrada asignada por el usuario

Application Gateway usa una identidad administrada para recuperar certificados de Key Vault en su nombre.

Puede crear una nueva identidad administrada asignada por el usuario o reutilizar una existente con la integración. Para crear una nueva identidad administrada asignada por el usuario, consulte Creación de una identidad administrada asignada por el usuario mediante Azure Portal.

Delegación de la identidad administrada asignada por el usuario en Key Vault

Defina directivas de acceso para usar la identidad administrada asignada por el usuario, con Key Vault:

  1. En Azure Portal, vaya a Key Vault.

  2. Seleccione el Key Vault que contiene el certificado.

  3. Si usa el modelo de permisos Directiva de acceso del almacén: seleccione Directivas de acceso, seleccione + Agregar directiva de acceso, seleccione Obtener para Permisos de secretos y elija la identidad administrada asignada por el usuario para Seleccionar la entidad de seguridad. Después, seleccione Guardar.

    Si usa el control de acceso basado en roles de Azure, siga el artículo Asignación de un acceso de identidad administrada a un recurso y asigne a la identidad administrada asignada por el usuario el rol de usuario de secretos de Key Vault al Azure Key Vault.

Compruebe los permisos de firewall para Key Vault

A partir del 15 de marzo de 2021, Key Vault reconoce Application Gateway como un servicio de confianza y aprovecha las identidades administradas por el usuario para la autenticación en Azure Key Vault. Con el uso de puntos de conexión de servicio y la habilitación de la opción de servicios de confianza para el firewall de Key Vault, puede compilar un límite de red seguro en Azure. Puede denegar el acceso al tráfico desde todas las redes (incluido el tráfico de Internet) a Key Vault, pero seguir haciendo que sea accesible para el recurso de Application Gateway en la suscripción.

Cuando use un Key Vault restringido, siga estos pasos para configurar Application Gateway en el uso de firewalls y redes virtuales:

Sugerencia

Los pasos 1-3 no son necesarios si el Key Vault tiene habilitado un punto de conexión privado. La puerta de enlace de aplicaciones puede acceder a Key Vault mediante la dirección IP privada.

Importante

Si usa puntos de conexión privados para acceder a Key Vault, debe vincular la zona DNS privada privatelink.vaultcore.azure.net, que contiene el registro correspondiente a la instancia de Key Vault a la que se hace referencia, a la red virtual que contiene Application Gateway. Los servidores DNS personalizados pueden seguir usándose en la red virtual en lugar de en los solucionadores proporcionados por Azure DNS, pero la zona DNS privada también tendrá que permanecer vinculada a la red virtual.

  1. En Azure Portal, en Key Vault, seleccione Redes.

  2. En la pestaña Firewalls y redes virtuales, seleccione Redes seleccionadas.

  3. En Redes virtuales, seleccione Add existing virtual networks (Agregar redes virtuales existentes) y luego agregue la red virtual y la subred para la instancia de Application Gateway. Si se le solicita, asegúrese de que la casilla No configurar los puntos de conexión de servicio "Microsoft.KeyVault" en este momento está desactivada para asegurarse de que el punto de conexión de servicio Microsoft.KeyVault está habilitado en la subred.

  4. Seleccione para permitir que los servicios de confianza omitan el firewall de Key Vault.

    Captura de pantalla que muestra las selecciones para configurar Application Gateway para usar firewalls y redes virtuales.

Nota:

Si implementa la instancia de Application Gateway mediante una plantilla de ARM, ya sea mediante la CLI de Azure o PowerShell o mediante una aplicación de Azure implementada desde Azure Portal, el certificado SSL se almacena en Key Vault como un archivo PFX con codificación base 64. Debe completar los pasos descritos en Uso de Azure Key Vault para pasar el valor de parámetro seguro durante la implementación.

Es especialmente importante establecer enabledForTemplateDeployment en true. Es posible que el certificado tenga una contraseña o no. En el caso de un certificado con contraseña, se muestra el siguiente ejemplo como posible configuración para la entrada sslCertificates en properties para la configuración de la plantilla de ARM para Application Gateway.

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

Los valores de appGatewaySSLCertificateData y appGatewaySSLCertificatePassword se buscan desde Key Vault, como se describe en Referencia a secretos con id. dinámico. Siga las referencias anteriores desde parameters('secretName') para ver cómo se produce la búsqueda. Si el certificado no tiene contraseña, omita la entrada password.

Configuración del agente de escucha de Application Gateway

Modelo de directiva de acceso del almacén de permisos de Key Vault

Vaya a Application Gateway en Azure Portal y seleccione la pestaña Agentes de escucha. Seleccione Agregar agentes de escucha (o seleccione un agente de escucha existente) y especifique HTTPS para el protocolo.

En Elegir un certificado, seleccione Crear nuevo y, posteriormente, seleccione Elegir un certificado de Key Vault bajo Configuración de HTTPS.

Para el nombre del certificado, escriba un nombre descriptivo para el certificado al que se va a hacer referencia en Key Vault. Elija la identidad administrada, el Key Vault y el certificado.

Una vez seleccionado, seleccione Agregar (si se crea) o Guardar (si se edita) para aplicar el certificado de Key Vault al agente de escucha.

Modelo de permisos de control de acceso basado en rol de Azure de Key Vault

Application Gateway admite certificados a los que se hace referencia Key Vault mediante el modelo de permisos de control de acceso basado en rol. Los primeros pasos para hacer referencia a Key Vault deben completarse a través de una plantilla de ARM o mediante Bicep, CLI o PowerShell.

Nota:

La especificación de certificados de Azure Key Vault que están sujetos al modelo de permisos de control de acceso basado en rol no se admite a través del portal.

En este ejemplo, usaremos PowerShell para hacer referencia a un nuevo secreto de 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

Una vez que se han ejecutado los comandos, puede ir a Application Gateway en Azure Portal y seleccionar la pestaña Agentes de escucha. Haga clic en Agregar agentes de escucha (o seleccione uno existente) y especifique el Protocolo como HTTPS.

En Elegir un certificado, seleccione el certificado indicado en los pasos anteriores. Una vez seleccionado, seleccione Agregar (si se crea) o Guardar (si se edita) para aplicar el certificado de Key Vault al agente de escucha.

Investigación y resolución de errores de Key Vault

Nota:

Es importante tener en cuenta cualquier impacto en el recurso de Application Gateway al realizar cambios o revocar el acceso al recurso de Key Vault. Si la puerta de enlace de aplicaciones no puede acceder al almacén de claves asociado o localizar el objeto de certificado en él, la puerta de enlace de aplicaciones establece automáticamente el cliente de escucha en un estado deshabilitado.

Se puede identificar este evento controlado por el usuario mediante la visualización del Resource Health de la puerta de enlace de aplicaciones. Más información.

Azure Application Gateway solo sondea la versión del certificado renovado en Key Vault cada intervalo de cuatro horas. También registra cualquier error y se integra con Azure Advisor para que se presenten errores de configuración con una recomendación para su corrección.

  1. Inicie sesión en Azure Portal
  2. Seleccione Advisor
  3. Seleccione la categoría Excelencia operativa en el menú de la izquierda.
  4. Encontrará una recomendación titulada Resolución del problema de Azure Key Vault de su Application Gateway, si la puerta de enlace está experimentando este problema. Asegúrese de que la suscripción correcta está seleccionada en las opciones de lista desplegable anteriores.
  5. Selecciónelo para ver los detalles del error, el recurso del almacén de claves asociado y la guía de solución de problemas para corregir el problema exacto.

Al identificar este tipo de evento mediante Azure Advisor o Resource Health, puede resolver rápidamente los problemas de configuración con su Key Vault. Le recomendamos encarecidamente que aproveche las alertas de Azure Advisor y Resource Health para mantenerse informado cuando se detecte un problema.

Para la alerta de Advisor, use "Resolución del problema de Azure Key Vault de su Application Gateway" en el tipo de recomendación que se muestra:
Diagrama que muestra los pasos de la alerta de Advisor.

Se puede configurar la alerta de Resource Health tal y como se muestra:
Diagrama que muestra los pasos de la alerta de Resource Health.

Pasos siguientes

Configuración de la terminación TLS con certificados de Key Vault mediante Azure PowerShell