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

SE APLICA A: todos los niveles de API Management

API Management permite acceder de forma segura al servicio back-end de una API con certificados de cliente y autenticación TLS mutua. 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:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. 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.

    Si usa un certificado autofirmado:

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

  1. Si aún no tiene un almacén de claves, créelo. 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.

    Para crear o importar un certificado en el almacén de claves, consulte Inicio rápido: Establecimiento y recuperación de un certificado de Azure Key Vault mediante Azure Portal.

  2. Habilite una identidad administrada asignada por el sistema o por el usuario en la instancia de API Management.

Configuración del acceso al almacén de claves

  1. En el portal, vaya al almacén de claves.

  2. En el menú de la izquierda, seleccione Configuración de acceso y anote el modelo de permisos configurado.

  3. En función del modelo de permisos, configure una directiva de acceso al almacén de claves o el acceso de Azure RBAC para una identidad administrada de API Management.

    Para agregar una directiva de acceso al almacén de claves:

    1. En el menú de la izquierda, seleccione Directivas de acceso.
    2. En la página Directivas de acceso, seleccione +Crear.
    3. En la pestaña Permisos, en Permisos de secretos, seleccione Obtener y Lista, y luego Siguiente.
    4. En la pestaña Entidad de seguridad, seleccione una entidad de seguridad, busque el nombre del recurso de la identidad administrada y, después, seleccione Siguiente. Si usa una identidad asignada por el sistema, la entidad de seguridad es el nombre de la instancia de API Management.
    5. Seleccione Siguiente de nuevo. En la pestaña Revisar y crear, seleccione Crear.

    Para configurar el acceso de Azure RBAC:

    1. En el menú izquierdo, seleccione Control de acceso (IAM) .
    2. En la página Control de acceso (IAM), seleccione Agregar asignación de roles.
    3. En la pestaña Rol, seleccione Usuario de secretos de Key Vault.
    4. En la pestaña Miembros, seleccione Identidad administrada>+Seleccionar miembros.
    5. En la página Seleccionar identidad administrada, seleccione la identidad administrada asignada por el sistema o una identidad administrada asignada por el usuario asociada a la instancia de API Management y, después, seleccione Seleccionar.
    6. Seleccione Revisar y asignar.

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?

  • Asegúrese de que la dirección IP del cliente local tenga permiso para acceder al almacén de claves temporalmente mientras selecciona un certificado o secreto para agregar a Azure API Management. Para más información, vea Configuración de redes de Azure Key Vault.

    Después de completar la configuración, puede bloquear la dirección del cliente en el firewall del almacén de claves.

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 más información, vea Configuración de red al configurar Azure API Management en 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.

Importante

Al agregar un certificado de almacén de claves a la instancia de API Management, debe tener permisos para enumerar los secretos del 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.

    Captura de pantalla de la adición de un certificado del almacén de claves a API Management en el portal.

  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.

    Captura de pantalla de la carga de un certificado cliente a API Management en el portal.

  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.

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.

Deshabilitación de la validación de la cadena de certificados para los 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

También puede deshabilitar la validación de la cadena de certificados mediante la API REST de back-end.

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