Protección de Azure Container Apps con Firewall de aplicaciones web en Application Gateway
Al hospedar las aplicaciones o microservicios en Azure Container Apps, es posible que no siempre quiera publicarlos directamente en Internet. En su lugar, es posible que quiera exponerlos a través de un proxy inverso.
Un proxy inverso es un servicio que se encuentra delante de uno o varios servicios, interceptando y dirigiendo el tráfico entrante al destino adecuado.
Los servidores proxy inversos permiten colocar servicios delante de las aplicaciones que admiten funcionalidades transversales, entre las que se incluyen:
- Enrutamiento
- Almacenamiento en memoria caché
- Limitación de frecuencia
- Equilibrio de carga
- Capas de seguridad
- Filtrado de solicitudes
En este artículo se muestra cómo proteger las aplicaciones contenedoras mediante un firewall de aplicaciones web (WAF) en Azure Application Gateway con un entorno interno de Container Apps.
Para obtener más información sobre los conceptos de red en Container Apps, consulte Entorno de red en Azure Container Apps.
Requisitos previos
Entorno interno con red virtual personalizada: tenga una aplicación contenedora que se encuentre en un entorno interno e integrada con una red virtual personalizada. Para obtener más información sobre cómo crear una aplicación integrada de red virtual personalizada, consulte Proporción de una red virtual a un entorno de Azure Container Apps.
Certificados de seguridad: si debe usar el cifrado TLS/SSL en la puerta de enlace de aplicación, se necesita un certificado público válido que se use para enlazar a la puerta de enlace de aplicación.
Recuperación del dominio de la aplicación contenedora
Siga estos pasos para recuperar los valores del dominio predeterminado y la dirección IP estática para configurar la zona DNS privada.
En la ventana Información general del grupo de recursos en el portal, seleccione la aplicación contenedora.
En la ventana Información general del recurso de la aplicación contenedora, seleccione el vínculo de Container Apps Environment
En la ventana Información general del recurso del entorno de la aplicación contenedora, seleccione Vista JSON en la esquina superior derecha de la página para ver la representación JSON del entorno de aplicaciones contenedoras.
Copie los valores del defaultDomain y las propiedades de staticIp y péguelos en un editor de texto. Creará una zona DNS privada con estos valores para el dominio predeterminado en la sección siguiente.
Creación y configuración de una zona DNS privada de Azure
En el menú de Azure Portal o la página Inicio, seleccione Crear un recurso.
Busque Zona DNS privada y seleccione Zona DNS privada en los resultados de búsqueda.
Seleccione el botón Crear.
Escriba los siguientes valores:
Configuración Acción Subscription Seleccione su suscripción a Azure. Resource group Seleccione el grupo de recursos de la aplicación contenedora. Nombre Escriba la propiedad defaultDomain del entorno de Container Apps de la sección anterior. Ubicación del grupo de recursos Déjelo como valor predeterminado. Un valor no es necesario, ya que las zonas DNS privadas son globales. Seleccione Revisar + crear. Una vez que se complete la validación, seleccione Crear.
Una vez creada la zona DNS privada, seleccione Ir al recurso.
En la ventana Información general, seleccione +Conjunto de registros, para agregar un nuevo conjunto de registros.
En la ventana Agregar conjunto de registros, escriba los valores siguientes:
Configuración Acción Nombre Escriba *. Tipo Seleccione Registro de dirección A. TTL Deje los valores predeterminados. Unidad de TTL Deje los valores predeterminados. Dirección IP Escriba la propiedad staticIp del entorno de Container Apps de la sección anterior. Seleccione Aceptar para crear el conjunto de registros.
Seleccione +Conjunto de registros de nuevo para agregar un segundo conjunto de registros.
En la ventana Agregar conjunto de registros, escriba los valores siguientes:
Configuración Acción Nombre Escriba @. Tipo Seleccione Registro de dirección A. TTL Deje los valores predeterminados. Unidad de TTL Deje los valores predeterminados. Dirección IP Escriba la propiedad staticIp del entorno de Container Apps de la sección anterior. Seleccione Aceptar para crear el conjunto de registros.
Seleccione la ventana Vínculos de red virtual en el menú del lado izquierdo de la página.
Seleccione +Agregar para crear un vínculo con los valores siguientes:
Configuración Acción Nombre del vínculo Escriba my-custom-vnet-pdns-link. Conozco el id. de recurso de la red virtual Déjela desmarcada. Red virtual Seleccione la red virtual con la que se integra la aplicación contenedora. Habilitación del registro automático Déjela desmarcada. Seleccione Aceptar para crear el vínculo de red virtual.
Creación y configuración de una instancia de Azure Application Gateway
Pestaña Aspectos básicos
Escriba los siguientes valores en la sección Detalles del proyecto.
Configuración Acción Subscription Seleccione su suscripción a Azure. Resource group Seleccione el grupo de recursos para la aplicación contenedora. Nombre de la puerta de enlace de aplicaciones Escriba my-container-apps-agw. Region Seleccione la ubicación donde se aprovisionó la aplicación contenedora. Nivel Seleccione WAF V2. Puede usar Estándar V2 si no necesita WAF. Habilitar escalado automático Deje el valor predeterminado. Para entornos de producción, se recomienda el escalado automático. Consulte Escalado automático de Azure Application Gateway. Zona de disponibilidad Seleccione Ninguno. En entornos de producción, se recomienda Availability Zones para lograr una mayor disponibilidad. HTTP2 mantenga el valor predeterminado. Directiva WAF Seleccione Crear nueva y escriba my-waf-policy para la directiva de WAF. Seleccione Aceptar. Si eligió Estándar V2 para el nivel, omita este paso. Red virtual Seleccione la red virtual con la que está integrada la aplicación contenedora. Subnet Seleccione Administrar configuración de subred. Si ya tiene una subred que desea usar, úsela en su lugar y vaya a la sección Frontends. En la ventana Subredes de my-custom-vnet, seleccione +Subredt y escriba los siguientes valores:
Configuración Acción Nombre Escriba appgateway-subnet. Intervalo de direcciones de subred Deje los valores predeterminados. Para el resto de la configuración, mantenga los valores predeterminados.
Seleccione Guardar para crear la nueva subred.
Cierre la ventana Subredes para volver a la ventana Crear puerta de enlace de aplicaciones.
Seleccione los valores siguientes:
Configuración Acción Subnet Seleccione la appgateway-subnet ha creado. Seleccione Siguiente: Frontends, para continuar.
Pestaña frontends
En la pestaña Frontends, escriba los valores siguientes:
Configuración Acción Tipo de dirección IP de front-end Seleccione Público. Dirección IP pública Seleccione Agregar nuevo. Escriba my-frontend para el nombre del front-end y seleccione Aceptar Nota:
Para la SKU de Application Gateway v2, solo debe haber una IP de front-end pública. Puede tener una configuración de IP de front-end pública y privada, pero actualmente no se admite una configuración IP de front-end privada sin ninguna dirección IP pública en la SKU v2. Para obtener más información, lea aquí.
Seleccione Siguiente: Back-end.
pestaña backends
El grupo de back-end se usa para enrutar las solicitudes a los servidores back-end adecuados. Los grupos de back-end se pueden componer de cualquier combinación de los siguientes recursos:
- NIC
- Direcciones IP públicas
- Direcciones IP internas
- Conjuntos de escalado de máquina virtual
- Nombres de dominio completos (FQDN)
- Back-ends multiinquilino, como Azure App Service y Container Apps
En este ejemplo, creará un grupo de back-end que tenga como destino la aplicación contenedora.
Seleccione Agregar un grupo de back-end.
Abra una nueva pestaña y vaya a la aplicación contenedora.
En la ventana Información general de la aplicación contenedora, busque la URL de la aplicación y cópiela.
Vuelva a la pestaña Backends y escriba los valores siguientes en la ventana Agregar un grupo de back-end:
Configuración Acción Nombre Escriba my-agw-backend-pool. Adición de un grupo de back-end sin destinos así que seleccione No. Tipo de destino Seleccione Dirección IP o FQDN. Destino Escriba la dirección URL de la aplicación contenedora que copió y quite el prefijo https://. Esta ubicación es el FQDN de la aplicación contenedora. Seleccione Agregar.
En la pestaña Back-end, seleccione Siguiente: Configuración.
Pestaña configuración
En la pestaña Configuración, conecte el grupo de servidores front-end y back-end que ha creado mediante una regla de enrutamiento.
Seleccione Agregar una regla de enrutamiento. Escriba los siguientes valores:
Configuración Acción Nombre Escriba my-agw-routing-rule. Priority Especifique 1. En la pestaña Agente de escucha, escriba los valores siguientes:
Configuración Acción Nombre del cliente de escucha Escriba my-agw-listener. Dirección IP de front-end Seleccione Público. Protocolo Seleccione HTTPS. Si no tiene un certificado que quiera usar, puede seleccionar HTTP Port Escriba 443. Si eligió HTTP para el protocolo, escriba 80 y vaya a la sección dominio predeterminado o personalizado. Elección de un certificado Seleccione Cargar un certificado. Si el certificado se almacena en el almacén de claves, puede seleccionar Elegir un certificado de un almacén de claves. Nombre del certificado Escriba un nombre para el certificado. Archivo de certificado PFX Seleccione el certificado público válido. Contraseña Escriba la contraseña del certificado. Si desea usar el dominio predeterminado, escriba los valores siguientes:
Configuración Acción Tipo de agente de escucha Seleccione Básica. Dirección URL de la página de errores Déjelo como No Como alternativa, si desea usar un dominio personalizado, escriba los valores siguientes:
Configuración Acción Tipo de agente de escucha Seleccione Multisitio Host type Seleccione Simple Nombres de host Escriba el dominio personalizado que desea usar. Dirección URL de la página de errores Déjelo como No Seleccione la pestaña Destinos de back-end y escriba los siguientes valores:
Cambie a la pestaña Destinos de back-end y escriba la siguiente configuración:
Configuración Acción Tipo de destino Seleccione my-agw-backend-pool que creó anteriormente. Configuración de back-end Seleccione Agregar nuevo. En la ventana Agregar back-end, escriba los siguientes valores:
Configuración Acción Nombre de la configuración de back-end Escriba my-agw-backend-setting. Protocolo de back-end Seleccione HTTPS. Puerto back-end Escriba 443. Usar certificado de entidad de certificación reconocida Seleccione Sí. Reemplazar por un nuevo nombre de host Seleccione Sí. Sustitución del nombre de host Elija Seleccionar el nombre de host del destino de back-end. Crear sondeos personalizados así que seleccione No. Seleccione Agregar para agregar la configuración de back-end.
En la ventana Agregar una regla de enrutamiento, seleccione Agregar de nuevo.
Seleccione Siguiente: Etiquetas.
Seleccione Siguiente: Revisar y crear y, a continuación, seleccione Crear.
Adición de un vínculo privado a Application Gateway
Puede establecer una conexión segura con entornos de aplicaciones contenedoras solo internos mediante el uso de un enlace privado, ya que permite a Application Gateway comunicarse con su aplicación contenedora en el back-end a través de la red virtual.
Una vez creada la instancia de Application Gateway, seleccione Ir al recurso.
En el menú de la izquierda, seleccione Vínculo privado y, a continuación, seleccione Agregar.
Escriba los siguientes valores:
Configuración Acción Nombre Escriba my-agw-private-link. Subred de vínculo privado Seleccione la subred con la que desea crear el vínculo privado. Configuración de direcciones IP de front-end Seleccione la dirección IP de front-end de Application Gateway. En Configuración de dirección IP privada seleccione Agregar.
Seleccione Agregar en la parte inferior de la ventana.
Comprobación de la aplicación contenedora
Busque la dirección IP pública de la puerta de enlace de aplicaciones en la página de información general o puede buscar la dirección. Para buscar, seleccione Todos los recursos y escriba my-container-apps-agw-pip en el cuadro de búsqueda. A continuación, seleccione la dirección IP en los resultados de la búsqueda.
Vaya a la dirección IP pública de la puerta de enlace de aplicaciones.
La solicitud se enruta automáticamente a la aplicación contenedora, que comprueba que la puerta de enlace de aplicaciones se creó correctamente.
Limpieza de recursos
Cuando ya no necesite los recursos que ha creado, elimine el grupo de recursos. Al eliminar el grupo de recursos, también se quitan todos los recursos relacionados.
Para eliminar el grupo de recursos:
En el menú de Azure Portal, seleccione Grupos de recursos o busque y seleccione Grupos de recursos.
En la página Grupos de recursos, busque y seleccione my-container-apps.
En la página del grupo de recursos, seleccione Eliminar grupo de recursos.
Escriba my-container-apps en ESCRIBA EL NOMBRE DEL GRUPO DE RECURSOS y seleccione Eliminar