Errores comunes del almacén de claves en Azure Application Gateway
Application Gateway permite a los clientes almacenar certificados TLS de forma segura en Azure Key Vault. Cuando se usa un recurso Key Vault, es importante que la puerta de enlace siempre tenga acceso al almacén de claves vinculado. Si el Application Gateway no puede capturar el certificado, los clientes de escucha HTTPS asociados se colocarán en un estado deshabilitado. Más información.
Este artículo le ayuda a comprender los detalles de los códigos de error y los pasos para resolver estos errores de configuración del almacén de claves.
Sugerencia
Use un identificador secreto que no especifique una versión. De este modo, Azure Application Gateway cambiará automáticamente el certificado si hay una versión más reciente disponible en Azure Key Vault. Un ejemplo de un URI de secreto sin una versión es: https://myvault.vault.azure.net/secrets/mysecret/
.
Códigos de error de Azure Advisor
En las secciones siguientes se describen varios errores que pueden producirse. Para comprobar si la puerta de enlace tiene estos problemas, consulte Azure Advisor para su cuenta y use este artículo de solución de problemas para corregirlos. Se recomienda configurar alertas de Azure Advisor para mantenerse informados cuando se detecta un problema del almacén de claves para la puerta de enlace.
Nota:
Azure Application Gateway genera registros para el diagnóstico del almacén de claves cada cuatro horas. Si el diagnóstico continúa mostrando el error después de que haya corregido la configuración, es posible que deba esperar a que se actualicen los registros.
Código de error: UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault
Descripción: la identidad administrada asignada por el usuario no tiene el permiso "Obtener".
Resolución: configure la directiva de acceso de Key Vault para conceder a la identidad administrada asignada por el usuario este permiso para los secretos. Puede hacerlo de cualquiera de las siguientes maneras:
Directiva de acceso de Key Vault
- Vaya al almacén de claves vinculado en Azure Portal.
- Abra la hoja Directivas de acceso.
- Seleccione Directiva de acceso al almacén en Modelo de permisos.
- En Operaciones de administración de secretos, seleccione el permiso Obtener.
- Seleccione Guardar.
Para obtener más información, consulte Asignación de una directiva de acceso de Key Vault mediante Azure Portal.
Control de acceso basado en rol de Azure
- Vaya al almacén de claves vinculado en Azure Portal.
- Abra la hoja Directivas de acceso.
- En Modelo de permisos, seleccione Control de acceso basado en rol de Azure.
- Vaya a la hoja Control de acceso (IAM) para configurar los permisos.
- Para agregar la asignación de roles para la identidad administrada, elija lo siguiente:
a. Rol: usuario de secretos de Key Vault.
b. Asignación de acceso a: identidad administrada.
c. Miembros: seleccione la identidad administrada asignada por el usuario que ha asociado a la puerta de enlace de aplicación. - Seleccione Revisar + asignar.
Para más información, consulte Control de acceso basado en rol de Azure.
Nota:
La compatibilidad con el portal para agregar un nuevo certificado basado en el almacén de claves no está disponible actualmente cuando se usa el control de acceso basado en rol de Azure. Puede hacerlo mediante la plantilla de ARM, la CLI o PowerShell. Visite esta página para obtener instrucciones.
Código de error: SecretDisabled
Descripción: el certificado asociado se ha deshabilitado en Key Vault.
Resolución: Vuelva a habilitar la versión del certificado que está actualmente en uso para Application Gateway.
- Vaya al almacén de claves vinculado en Azure Portal.
- Abra el panel Certificados.
- Haga clic en el nombre del certificado necesario y luego en la versión deshabilitada.
- Use el botón de alternancia de la página de administración para habilitar esa versión del certificado.
Código de error: SecretDeletedFromKeyVault
Descripción: el certificado asociado se ha eliminado de Key Vault.
Resolución: debe recuperar el certificado eliminado:
- Vaya al almacén de claves vinculado en Azure Portal.
- Abra el panel Certificados.
- Use la pestaña Certificados eliminados administrados para recuperar un certificado eliminado.
Por otro lado, si un objeto de certificado se elimina permanentemente, deberá crear un nuevo certificado y actualizar Application Gateway con los detalles del nuevo certificado. Al realizar una configuración mediante la CLI de Azure o Azure PowerShell, use un identificador URI secreto sin una versión. Esta opción permite a las instancias recuperar una versión renovada del certificado, si es que existe.
Código de error: UserAssignedManagedIdentityNotFound
Descripción: la identidad administrada asignada por el usuario se ha eliminado.
Resolución: cree una nueva identidad administrada y úsela con el almacén de claves.
- Vuelva a crear una identidad administrada con el mismo nombre que se usó anteriormente y en el mismo grupo de recursos. (CONSEJO: Consulte los registros de actividad de recursos para obtener más información).
- Vaya al recurso de Key Vault que quiera y establezca sus directivas de acceso para conceder el permisos requerido a la nueva identidad administrada. Puede seguir los mismos pasos que se mencionan en UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault.
Código de error: KeyVaultHasRestrictedAccess
Descripción: hay una configuración de red restringida para Key Vault.
Resolución: este error se produce al habilitar el firewall de Key Vault para el acceso restringido. Todavía puede configurar Application Gateway en una red restringida de Key Vault si sigue los siguientes pasos:
- En Key Vault, abra el panel Redes.
- En la pestaña Firewalls y redes virtuales, seleccione Punto de conexión privado y redes seleccionadas.
- A continuación, use Virtual Network para agregar la red virtual y la subred de Application Gateway. Durante el proceso, configure también el punto de conexión de servicio "Microsoft.KeyVault" activando la casilla correspondiente.
- Finalmente, seleccione Sí para permitir que los servicios de confianza omitan el firewall de Key Vault.
Código de error: KeyVaultSoftDeleted
Descripción: la instancia de Key Vault asociada se encuentra en estado de eliminación temporal.
Resolución: busque Almacén de claves en Azure Portal. En Servicios, seleccione Almacenes de claves.
Seleccione Almacenes eliminados administrados. En esta opción, puede encontrar el recurso de Key Vault y recuperarlo.
Código de error: CustomerKeyVaultSubscriptionDisabled
Descripción: la suscripción para Key Vault está deshabilitada.
Resolución: la suscripción de Azure puede deshabilitarse por diversos motivos. Para realizar las acciones necesarias para resolver este error, consulte Reactivación de una suscripción de Azure deshabilitada.
Códigos de error de Application Gateway
Código de error: ApplicationGatewayCertificateDataOrKeyVaultSecretIdMustBeSpecified / ApplicationGatewaySslCertificateDataMustBeSpecified
Descripción: es posible que encuentre este error al intentar actualizar un certificado de cliente de escucha. Cuando se produce este error, se descartará el cambio para actualizar el certificado, y el agente de escucha seguirá controlando el tráfico con la configuración definida anteriormente.
Resolución: para resolver este problema, intente cargar el certificado de nuevo. Por ejemplo, los siguientes comandos de PowerShell se pueden usar para actualizar los certificados cargados en Application Gateway o a los que se hace referencia a través de Azure Key Vault.
Actualice el certificado cargado directamente en Application Gateway:
$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"
$password = ConvertTo-SecureString -String "<password>" -Force -AsPlainText
Set-AzApplicationGatewaySSLCertificate -Name "<oldcertname>" -ApplicationGateway $appgw -CertificateFile "<newcertPath>" -Password $password
Set-AzApplicationGateway -ApplicationGateway $appgw
Actualice el certificado al que se hace referencia desde Azure Key Vault:
$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"
$secret = Get-AzKeyVaultSecret -VaultName "<KeyVaultName>" -Name "<CertificateName>"
$secretId = $secret.Id.Replace($secret.Version, "")
$cert = Set-AzApplicationGatewaySslCertificate -ApplicationGateway $AppGW -Name "<CertificateName>" -KeyVaultSecretId $secretId
Set-AzApplicationGateway -ApplicationGateway $appgw
Pasos siguientes
Estos artículos de solución de problemas pueden resultarle útiles a medida que use Application Gateway: