Protección de servicios back-end con la autenticación de certificados de cliente en Azure API Management

API Management permite acceder de forma segura al servicio back-end de una API con certificados de cliente. En esta guía se muestra cómo administrar certificados de la instancia de servicio de Azure API Management con Azure Portal. También se explica cómo configurar una API para que use un certificado para acceder a un servicio back-end.

También puede administrar certificados de API Management mediante la API REST de API Management.

Opciones de certificado

API Management proporciona dos opciones para administrar los certificados que se usan para proteger el acceso a los servicios back-end:

  • Hacer referencia a un certificado administrado en Azure Key Vault
  • Agregar un archivo de certificado directamente en API Management

Se recomienda el uso de certificados de Key Vault, ya que esto ayuda a mejorar la seguridad de API Management:

  • Los certificados almacenados en almacenes de claves se pueden reutilizar entre servicios.
  • Las directivas de acceso granular se pueden aplicar a los certificados almacenados en los almacenes de claves.
  • Los certificados actualizados en el almacén de claves se rotan automáticamente en API Management. Después de la actualización en el almacén de claves, un certificado en API Management se actualiza en un plazo de 4 horas. También puede actualizar manualmente el certificado mediante Azure Portal o a través de la API REST de administración.

Requisitos previos

Nota

En este artículo se usa el módulo Az de PowerShell, que es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

  • Si todavía no ha creado una instancia de servicio de API Management, consulte Creación de una instancia de servicio de API Management.
  • Debe tener el servicio back-end configurado para la autenticación de certificados de cliente. Para configurar la autenticación de certificados en Azure App Service, consulte este artículo.
  • Debe acceder al certificado y a la contraseña para su administración en Azure Key Vault o para cargarlos al servicio de API Management. El certificado debe estar en formato .pfx. Se admiten los certificados autofirmados.

Requisitos previos para la integración de un almacén de claves

  1. Para conocer los pasos para crear un almacén de claves, vea Inicio rápido: Creación de un almacén de claves mediante Azure Portal.
  2. Habilite una identidad administrada asignada por el sistema o por el usuario en la instancia de API Management.
  3. Asigne una directiva de acceso del almacén de claves a la identidad administrada con permisos para obtener y enumerar los certificados del almacén. Para agregar la directiva:
    1. En el portal, vaya al almacén de claves.
    2. Seleccione Configuración > Directivas de acceso > + Agregar directiva de acceso.
    3. Seleccione Permisos de certificado y, a continuación, seleccione Obtener y Enumerar.
    4. En Seleccionar la entidad de seguridad, seleccione el nombre de recurso de la identidad administrada. Si usa una identidad asignada por el sistema, la entidad de seguridad es el nombre de la instancia de API Management.
  4. Cree o importe un certificado en el almacén de claves. Consulte Quickstart: Establecimiento y recuperación de un certificado de Azure Key Vault mediante Azure Portal.

Requisitos de firewall de Key Vault

Si el firewall de Key Vault está habilitado en el almacén de claves, los siguientes son requisitos adicionales:

  • Para acceder al almacén de claves, debe usar la identidad administrada asignada por el sistema de la instancia de API Management.
  • En el firewall de Key Vault, establezca la opción ¿Quiere permitir que los servicios de confianza de Microsoft puedan omitir este firewall?

Requisitos de red virtual

Si la instancia de API Management se ha implementado en una red virtual, configure también las siguientes opciones de red:

Para obtener más información, consulte los detalles de configuración de red en Conexión a una red virtual.

Adición de un certificado del almacén de claves

Consulte Requisitos previos para la integración de un almacén de claves.

Precaución

Al usar un certificado del almacén de claves en API Management, tenga cuidado de no eliminar el certificado, el almacén de claves ni la identidad administrada que se usa para acceder al almacén de claves.

Para agregar un certificado del almacén de claves a API Management:

  1. Vaya a la instancia de API Management en Azure Portal.

  2. En Seguridad, seleccione Certificados.

  3. Seleccione Certificados > + Agregar.

  4. En Id. , introduzca el nombre que desee.

  5. En Certificado, seleccione Almacén de claves.

  6. Escriba el identificador de un certificado de almacén de claves o elija Seleccionar para seleccionar un certificado de un almacén de claves.

    Importante

    Si especifica usted mismo el identificador de un certificado del almacén de claves, asegúrese de que no tenga la información de versión. De lo contrario, el certificado no se rotará automáticamente en API Management después de una actualización en el almacén de claves.

  7. En Client identity (Identidad del cliente), seleccione una identidad asignada por el sistema o una identidad administrada existente asignada por el usuario. Obtenga información sobre cómo agregar o modificar identidades administradas en el servicio de API Management.

    Nota

    La identidad necesita permisos para obtener y enumerar los certificados del almacén de claves. Si aún no ha configurado el acceso al almacén de claves, API Management se lo pedirá para poder configurar automáticamente la identidad con los permisos necesarios.

  8. Seleccione Agregar.

    Adición de un certificado del almacén de claves

  9. Seleccione Guardar.

Carga de un certificado

Para cargar un certificado de cliente en API Management:

  1. Vaya a la instancia de API Management en Azure Portal.

  2. En Seguridad, seleccione Certificados.

  3. Seleccione Certificados > + Agregar.

  4. En Id. , introduzca el nombre que desee.

  5. En Certificado, seleccione Personalizado.

  6. Navegue para seleccionar el archivo .pfx del certificado y escriba su contraseña.

  7. Seleccione Agregar.

    Cargar un certificado de cliente

  8. Seleccione Guardar.

Una vez cargado el certificado, se muestra en la ventana Certificados. Si tiene muchos certificados, tome nota de la huella digital del certificado deseado con el fin de configurar una API para realizar la autenticación de puerta de enlace con un certificado de cliente.

Nota

Para desactivar la validación de la cadena de certificados cuando se utiliza, por ejemplo, un certificado autofirmado, siga los pasos descritos en la sección Certificados autofirmados, que se incluye más adelante en este artículo.

Configuración de una API para usar un certificado de cliente para la autenticación de puerta de enlace

  1. Vaya a la instancia de API Management en Azure Portal.

  2. En API, seleccione API.

  3. Seleccione una API en la lista.

  4. En la pestaña Diseño, seleccione el icono del editor en la sección Back-end.

  5. En credenciales de puerta de enlace, seleccione Certificado de cliente y seleccione el certificado en la lista desplegable.

  6. Seleccione Guardar.

    Uso de un certificado de cliente para la autenticación de puerta de enlace

Precaución

Este cambio se hace efectivo de forma inmediata y llama a las operaciones de la API que realizarán la autenticación en el servidor back-end con el certificado.

Sugerencia

Cuando se especifica un certificado para la autenticación de puerta de enlace del servicio back-end de una API, el certificado se integra en la directiva de dicha API y puede verse en el editor de directivas.

Certificados autofirmados

Si utiliza certificados autofirmados, tendrá que deshabilitar la validación de la cadena de certificados para que API Management pueda comunicarse con el sistema back-end. De lo contrario, se producirá un error con el código 500. Para establecer esta configuración, puede utilizar los cmdlets de PowerShell New-AzApiManagementBackend (con el nuevo back-end) o Set-AzApiManagementBackend (con el back-end existente) y establecer el parámetro -SkipCertificateChainValidation en True.

$context = New-AzApiManagementContext -resourcegroup 'ContosoResourceGroup' -servicename 'ContosoAPIMService'
New-AzApiManagementBackend -Context  $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true

Eliminar un certificado de cliente

Para eliminar un certificado, selecciónelo y, a continuación, seleccione Eliminar en el menú contextual ( ... ).

Eliminar un certificado

Importante

Si alguna directiva hace referencia al certificado, aparecerá una pantalla de advertencia. Para eliminar el certificado, primero quítelo de todas las directivas que se hayan configurado para usarlo.

Pasos siguientes