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 publicarlas 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 dirigendo 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 de contenedor mediante un firewall de aplicaciones web (WAF) en App de Azure lication Gateway con un entorno interno de Container Apps.
Para más información sobre los conceptos de red en Container Apps, consulte Entorno de redes en Azure Container Apps.
Requisitos previos
Entorno interno con red virtual personalizada: tenga una aplicación contenedora que se encuentra en un entorno interno e integrada con una red virtual personalizada. Para más información sobre cómo crear una aplicación integrada de red virtual personalizada, consulte Proporcionar una red virtual a un entorno interno de Azure Container Apps.
Certificados de seguridad: si debe usar el cifrado TLS/SSL en la puerta de enlace de aplicaciones, se requiere un certificado público válido que se usa para enlazar a la puerta de enlace de aplicaciones.
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 de DNS privado.
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 de contenedor, seleccione el vínculo entorno de Container Apps.
En la ventana Información general del recurso de 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 de contenedor.
Copie los valores de las propiedades defaultDomain y 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 de Azure DNS privado
En el menú de Azure Portal o la página Inicio, seleccione Crear un recurso.
Busque DNS privado Zona y seleccione DNS privado Zona 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 Deje como valor predeterminado. Un valor no es necesario, ya que DNS privado Zones 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 de enlace Escriba my-custom-vnet-pdns-link. Conozco el id. de recurso de la red virtual Déjelo desmarcado. Virtual network Seleccione la red virtual con la que se integra la aplicación contenedora. Habilitación del registro automático Déjelo desmarcado. 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 de 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 Standard 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 App de Azure lication Gateway. Zona de disponibilidad Seleccione Ninguno. Para entornos de producción, se recomienda Availability Zones para una mayor disponibilidad. HTTP2 mantenga el valor predeterminado. Directiva WAF Seleccione Crear nuevo y escriba my-waf-policy para la directiva de WAF. Seleccione Aceptar. Si eligió Standard V2 para el nivel, omita este paso. Virtual network 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, úselo en su lugar y vaya a la sección Frontends. En la ventana Subredes de my-custom-vnet, seleccione +Subred y escriba los valores siguientes:
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 subred appgateway-subnet que ha creado. Seleccione Siguiente: Front-end para continuar.
Pestaña Front-end
En la pestaña Front-end, 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 como nombre del front-end y seleccione Aceptar. Nota:
Para la SKU de Application Gateway v2, debe haber una dirección 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 más información, lea aquí.
Seleccione Siguiente: Back-end.
Pestaña Back-end
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
- Virtual Machine Scale Sets
- Nombres de dominio completos (FQDN)
- Back-ends multiinquilino como App de Azure Service y Container Apps
En este ejemplo, creará un grupo de back-end que tenga como destino la aplicación de contenedor.
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 dirección URL de la aplicación y cópiela.
Vuelva a la pestaña Back-end 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 aplicación de aplicación de contenedor 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 , conectará el grupo de servidores front-end y back-end que creó 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. Elegir un certificado Seleccione Cargar un certificado. Si el certificado se almacena en el almacén de claves, puede seleccionar Elegir un certificado de Key Vault. 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 Dejar como No Como alternativa, si desea usar un dominio personalizado, escriba los valores siguientes:
Configuración Acción Tipo de agente de escucha Selección de varios sitios Host type Seleccione Single (Único). Nombres de host Escriba el dominio personalizado que desea usar. Dirección URL de la página de errores Dejar 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 los valores siguientes:
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 configuración back-end , escriba los valores siguientes:
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 a entornos de aplicación de contenedor solo internos mediante el vínculo privado que permite que Application Gateway se comunique con la aplicación contenedora en el back-end a través de la red virtual.
Una vez creada La puerta de enlace de aplicaciones, 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 direcciones IP privadas, 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 su página 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.