Siete formas de desplegar el WAF de última generación de Fastly en Kubernetes
Antes, los entrenadores deportivos empleaban los manuales de jugadas en papel para preparar la estrategia de juego de su equipo. Sin embargo, ahora aprovechan las ventajas que les ofrecen las tabletas en cuanto a flexibilidad y velocidad para repasar las jugadas clave y el rendimiento de los deportistas. Algo similar está pasando con los equipos de DevOps, que han adoptado nuevas herramientas y entornos como los contenedores de aplicaciones o Kubernetes —un sistema de orquestación de contenedores— para crear y lanzar aplicaciones de forma más rápida y eficiente.
Los contenedores, como Docker, sirven para crear un paquete con la aplicación y todo lo que esta necesita para ejecutarse de manera uniforme en cualquier tipo de entorno. Así, los desarrolladores son capaces de publicar código de forma más rápida. Ahora que el uso de los contenedores está en alza, Kubernetes se ha convertido en el medio más popular para automatizar el despliegue y la gestión de aplicaciones en contenedores a escala. De hecho, estos son algunos datos sacados del estudio Cloud Native Survey de la CNCF de 2021:
El 96 % de las empresas se plantea usar o ya usa Kubernetes, lo que supone una cifra récord, muy superior al 83 % de 2020 o al 78 % de 2019.
El 93 % de las empresas se plantea usar o ya usa los contenedores en la fase de producción (una leve subida en comparación con el 92 % recogido en el estudio del año anterior).
Se estima que más de 5,6 millones de desarrolladores usan Kubernetes hoy en día.
En Fastly reconocemos la necesidad por parte de los clientes que utilizan Kubernetes de contar con opciones de instalaciones flexibles. En un artículo anterior, ya tratamos una de las maneras en que se puede usar el WAF de última generación de Fastly (con tecnología de Signal Sciences) con Kubernetes para escalar automáticamente la seguridad de la capa 7 de tus aplicaciones web. En este artículo, te presentaremos un listado detallado con todas las formas posibles de instalar el WAF de última generación de Fastly con Kubernetes.
Antes, no obstante, hagamos un repaso rápido de los componentes de nuestro software. Hemos creado y patentado la comunicación entre un agente y un módulo que operan en la infraestructura de los clientes y se comunican fuera de banda con nuestro motor en la nube para recibir datos actualizados y mejorados. Sin embargo, el módulo no es necesario cuando el WAF de última generación de Fastly se ejecuta en modo de proxy inverso, pero de esto ya hablaremos m ás adelante.
Para entenderlo mejor, imagina que nuestras opciones de despliegue se presentan como una matriz 3 × 4: 3 «capas» donde se puede instalar el WAF de última generación de Fastly en Kubernetes y 4 «métodos» para desplegarlo.
Capas
Vamos a ver las capas de una en una, de arriba abajo, hasta llegar a la capa de la aplicación. En cada una de ellas, nos detendremos en los motivos que pueden llevar a decantarte por una u otra, según el método específico que se siga en tu empresa para desplegar el software.
Arriba del todo nos encontramos con el controlador de entrada de Kubernetes. Te recomiendo esta opción si tienes un controlador de entrada o si tu equipo quiere centralizar la seguridad de todas las aplicaciones que residen por debajo o por detrás del controlador de entrada.
La siguiente es la capa intermedia o de servicio, que recomiendo en caso de que no tengas un controlador de entrada o estés usando un equilibrador de carga enfrente del tráfico, pero no quieras instalar el WAF de última generación de Fastly por el motivo que sea (en cualquier caso, podrías instalarlo si quisieras).
La tercera es la capa de la aplicación, que deberías elegir si quieres dejar que los equipos a cargo de la aplicación tomen el control de la instalación por su cuenta.
Métodos
Dentro de cada una de las capas que se han descrito anteriormente, se puede desplegar el WAF de última generación de Fastly junto con Kubernetes. Hay cuatro formas posibles de hacerlo:
ejecutar el módulo y el agente en el mismo contenedor;
ejecutar el módulo y el agente en contenedores sidecar separados;
ejecutar el agente en modo de proxy inverso en el mismo contenedor de la aplicación;
ejecutar el agente en modo de proxy inverso en un contenedor sidecar del contenedor de la aplicación.
Gracias a las tres capas y a los cuatro métodos de despliegue, los contenedores y Kubernetes ofrecen gran flexibilidad al contar con doce opciones de instalación. El WAF de última generación de Fastly admite estas doce opciones, pero nosotros destacaremos los métodos marcados con asterisco en la siguiente tabla:
Método de instalación: | Primera capa: Controlador de entrada | Segunda capa: Servicio de nivel intermedio | Tercera capa: Nivel de la aplicación |
---|---|---|---|
1. Agente y módulo en el mismo contenedor de la aplicación | ✓* | ✓ | ✓* |
2. Agente y módulo en contenedores diferentes | ✓* | ✓ | ✓* |
3. Agente en modo de proxy inverso en el mismo contenedor que la aplicación | ✓ | ✓ | ✓* |
4. Agente en proxy inverso en un contenedor paralelo («sidecar») | ✓ | ✓* | ✓* |
* Ejemplo del método de instalación disponible a continuación.
Método 1: contenedor pod (agente y módulo)
En este caso, el agente y el módulo se despliegan en el mismo contenedor pod de Kubernetes y van junto con la aplicación.
Método 2: multicontenedor (agente y módulo)
En esta opción, el módulo y el agente se separan. Por un lado, tenemos el módulo desplegado con la aplicación en un único contenedor y, por otro lado, el agente desplegado en un contenedor separado. El módulo y el agente se encuentran en contenedores diferentes, pero siguen formando parte del mismo pod de Kubernetes. Además, los contenedores de estos comparten un volumen para comunicarse mediante un socket de dominio.
Método 3: contenedor pod (agente en modo de proxy inverso)
En caso de que el agente del WAF de última generación de Fastly se ejecute en modo de proxy inverso, se puede ubicar en el mismo contenedor pod en que se encuentra la aplicación. Al igual que en la primera opción, el WAF de última generación de Fastly va junto con la aplicación, pero la diferencia radica en que la configuración del módulo no es la misma.
Método 4: multicontenedor pod (agente en modo de proxy inverso dentro de un contenedor sidecar)
Este método se parece al de la segunda opción, ya que el agente se despliega en modo de proxy inverso sin un módulo. Sin embargo, el agente y la aplicación se encuentran en contenedores distintos. Por lo tanto, la petición primero pasaría por el contenedor del agente, y este la enviaría después al contenedor de la aplicación. Los contenedores del agente y la aplicación estarían dentro del mismo pod.
Además, en este caso se saca partido del servicio de entrada en la primera y segunda capa. Con otros WAF tradicionales habría que ajustar las reglas una por una en cada aplicación que se sitúe por detrás del servicio de entrada. Sin embargo, el WAF de última generación de Fastly no conlleva tal carga de trabajo gracias a nuestra metodología SmartParse patentada y su sistema dinámico de detección.
Capa 1, método 1: contenedor pod de entrada (NGINX o HAProxy)
En esta opción, el módulo y el agente se pueden desplegar en el mismo contenedor del pod de entrada de NGINX o HAProxy. El módulo se ubicaría en NGINX o HAProxy y el agente estaría en el mismo contenedor. Asimismo, todas las peticiones irían al pod de entrada y se escalarían automáticamente si fuese necesario. Por su parte, el pod de la aplicación estaría detrás del pod de entrada.
Capa 1, método 2: multicontenedor pod de entrada (NGINX o HAProxy)
Esta es una opción parecida a la sexta, salvo que el módulo y el agente se encuentran en distintos contenedores dentro del mismo pod de entrada. Además, al igual que en el caso de la tercera opción, los contenedores del agente y el módulo comparten el volumen del socket de dominio. Gracias a este método de despliegue, los clústeres de Kubernetes no quedan expuestos al internet abierto.
Capa 2, método 4: multiservicio (agente en modo de proxy inverso)
En esta opción de despliegue, el agente se ejecuta en modo de proxy inverso y no se sitúa en el mismo pod de la aplicación. El pod del agente recibe e inspecciona la petición y, según corresponda, la bloquea o la envía al pod de la aplicación. De esta manera, el agente o la aplicación se pueden escalar automáticamente por separado.
La mayor flexibilidad en seguridad de aplicaciones y microservicios
Gracias al WAF de última generación de Fastly, tienes a tu alcance una gran flexibilidad para proteger tus aplicaciones y microservicios de forma rápida, independientemente del uso que tu equipo de DevOps haga de los contenedores de Kubernetes. Los anteriores ejemplos de instalación garantizan la protección de las aplicaciones de nuestros clientes desde el primer día y afianzan esta seguridad en el futuro, incluso ante posibles cambios que se puedan producir en los despliegues de aplicaciones de Kubernetes.