Diseño de una arquitectura de seguridad de confianza cero para aplicaciones de Kubernetes con NGINX

NGINX | 26 de septiembre de 2022

La sofisticación y el número de ciberataques crecen exponencialmente, lo que supone un riesgo considerable de exposición para las aplicaciones desplegadas en entornos de Kubernetes locales, híbridos y multinube. Los modelos de seguridad tradicionales se basan en el perímetro y presuponen que los usuarios son de confianza (y que las comunicaciones entre ellos son seguras) si se encuentran dentro de los límites protegidos del entorno. En los entornos distribuidos actuales, el concepto de una zona segura dentro del perímetro ha dejado de existir: las comunicaciones que se originan «dentro» del entorno pueden ser tan peligrosas como las amenazas externas.

En este blog, analizamos las ventajas de adoptar un modelo de confianza cero para proteger su infraestructura de Kubernetes y cómo NGINX puede ayudarle a mejorar su estrategia de seguridad.

¿Qué es la confianza cero?

Zero Trust es un modelo de seguridad basado en la identidad y no en la ubicación. Parte de la premisa de que cualquier solicitud de acceso a aplicaciones, datos y dispositivos podría ser un ataque, independientemente de si el solicitante parece encontrarse en las instalaciones, en remoto o en la nube.

Para implementar los tres principios fundamentales de Zero Trust —no confiar nunca, verificar siempre y supervisar continuamente—, se exige de forma continua a cada usuario, servicio, aplicación y dispositivo que presente pruebas de autenticación y autorización. Los privilegios con una duración limitada se conceden en función de políticas de acceso dinámicas y conforme al principio de mínimo privilegio.

Todas las comunicaciones se cifran y se enrutan a través de un punto de decisión y aplicación de políticas (PDP/PEP), que autentica a todas las partes y les concede privilegios en función de políticas de acceso dinámicas. Además, se dispone de funciones de auditoría, supervisión, generación de informes y automatización para analizar, evaluar y mitigar los riesgos de seguridad.

diagrama de confianza cero

Cómo Zero Trust mejora su postura de seguridad

Zero Trust mejora su postura de seguridad de varias maneras:

  • Bloquea automáticamente la actividad no autorizada
  • Aplica controles de acceso para reducir la superficie de ataque expuesta
  • Detecta anomalías de comportamiento e indicadores de compromiso
  • Define políticas en tiempo real y de privilegios mínimos que limitan el tiempo de acceso
  • Autentica y valida constantemente la identidad para bloquear los ataques en curso

Zero Trust es especialmente importante para las aplicaciones modernas nativas de la nube que se ejecutan en un entorno de Kubernetes. Las aplicaciones y los servicios distribuidos, portátiles y con bajo acoplamiento se alojan en contenedores y se ejecutan en entornos híbridos y multinube, donde la seguridad basada en la ubicación no es una opción. La seguridad depende necesariamente de la validación continua de identidades y privilegios, el cifrado de extremo a extremo y la supervisión.

Cómo lograr una seguridad de confianza cero

Para cumplir los principios de confianza cero, su entorno de Kubernetes debe proporcionar funciones de seguridad esenciales, como autenticación, autorización, control de acceso, políticas, cifrado, supervisión y auditoría para usuarios, aplicaciones y servicios.

Una posible forma de lograrlo es integrar la seguridad en la propia aplicación. Sin embargo, esto implica que sus desarrolladores deben implementar múltiples procedimientos de seguridad para establecer y verificar la confianza, gestionar las identidades de los usuarios y los certificados, cifrar y descifrar todas las comunicaciones, etc. También deben comprender e integrar tecnologías de terceros como TLS y el inicio de sesión único (SSO). Todo esto no solo añade complejidad a su ya de por sí complejo despliegue de Kubernetes, sino que además distrae a los desarrolladores de aquello en lo que necesitan (¡y quieren!) centrarse: optimizar la funcionalidad de negocio de la aplicación.

Que no cunda el pánico: hay una forma mejor de hacerlo. ¡Delegue la seguridad y otros requisitos no funcionales en su infraestructura de Kubernetes! Las herramientas de conectividad para clústeres de Kubernetes, como los controladores de Ingress y las mallas de servicios, pueden proporcionar PDP y PEP para todas las comunicaciones entre sus aplicaciones y servicios, tanto si proceden de usuarios como de otras aplicaciones o servicios. De este modo, puede centrarse en los conocimientos y las funcionalidades esenciales para el negocio, a la vez que entrega aplicaciones de forma más rápida y sencilla.

Cómo puede ayudar F5 NGINX

Como se muestra en el siguiente diagrama, la solución de NGINX para una conectividad segura de Kubernetes incluye todos los componentes y herramientas independientes de la infraestructura que necesita para proteger eficazmente a sus usuarios, aplicaciones distribuidas, microservicios y API a gran escala y de extremo a extremo en cualquier entorno: local, híbrido y multinube. Basada en el plano de datos más popular del mundo, la solución combina:

  • NGINX Ingress Controller como controlador de Ingress para Kubernetes y como PDP/PEP que se integra con proveedores externos de identidad y SSO. Basado en NGINX Plus, NGINX Ingress Controller gestiona funciones avanzadas de conectividad, supervisión y visibilidad, autenticación y SSO, y actúa como puerta de enlace de API.
  • NGINX Service Mesh como malla de servicios ligera, lista para usar y fácil de utilizar para los desarrolladores, protege la conectividad de los servicios dentro del clúster de Kubernetes. El sidecar de nivel empresarial, que actúa como PDP/PEP y se ubica junto a cada servicio de Kubernetes, se basa en NGINX Plus.
  • NGINX App Protect para una protección integral de las aplicaciones y API modernas, basada en las tecnologías de seguridad líderes del mercado de F5. Utiliza un enfoque modular para ofrecer flexibilidad en los distintos escenarios de implementación y optimizar el uso de los recursos:
    • NGINX App Protect WAF – Un WAF sólido y ligero que protege frente a las 10 principales vulnerabilidades de OWASP y garantiza el cumplimiento de PCI DDS
    • NGINX App Protect DoS – Detección y mitigación de ataques DoS basada en el comportamiento, con una protección uniforme y adaptativa en distintas nubes y arquitecturas

diagrama de confianza cero 2

La solución NGINX le permite:

  • Integre controles de seguridad sólidos en entornos distribuidos sin ralentizar el ritmo de los lanzamientos ni perjudicar el rendimiento
  • Bloquee automáticamente los ataques en curso mediante la autenticación continua, la validación de identidades y la detección de anomalías de comportamiento
  • Implemente políticas de privilegios mínimos en tiempo real, un control de acceso granular, cifrado de extremo a extremo y una gobernanza coordinada entre varios equipos
  • Entrega aplicaciones de forma segura, desde el código hasta el cliente, con un WAF integrado y robusto y protección contra ataques DoS a nivel de aplicación
  • Evalúe y mejore continuamente la postura de seguridad de su entorno de Kubernetes mediante métricas granulares históricas y en tiempo real
  • Simplifique la implementación y la gestión de comunicaciones seguras entre usuarios y servicios, así como entre servicios, mediante la consolidación tecnológica

Implemente una seguridad integral de confianza cero con NGINX

A medida que las organizaciones crecen, resulta fundamental trasladar fuera de la capa de aplicación los requisitos que no son específicos de la funcionalidad de una aplicación, como las funciones de seguridad de confianza cero. Como hemos explicado anteriormente, esto libera a los desarrolladores de la carga de crear, mantener y replicar la lógica de seguridad en todas sus aplicaciones; en su lugar, pueden aprovechar fácilmente las tecnologías de seguridad en el ámbito de la plataforma. NGINX permite aplicar de forma centralizada políticas de seguridad para Kubernetes tanto en el perímetro del clúster, con NGINX Ingress Controller, como dentro de este, con NGINX Service Mesh. Puede añadir protección avanzada para las aplicaciones frente a ciberataques sofisticados mediante NGINX App Protect WAF y DoS, implementados en el perímetro o dentro del clúster, según los requisitos de seguridad de sus aplicaciones.

Analicemos en profundidad cómo la solución de NGINX incorpora las funcionalidades necesarias para implementar una seguridad integral de confianza cero en sus implementaciones de Kubernetes.

Autenticación y autorización

Uno de los principios fundamentales de la seguridad de confianza cero es que todos los dispositivos, usuarios, servicios y solicitudes deben autenticarse y autorizarse. La autenticación es el proceso de verificar la identidad; en otras palabras, de garantizar que cada parte que participa en una comunicación sea quien dice ser. La autorización es el proceso de verificar que una parte tenga derecho al acceso que solicita a un recurso o una función.

Para aplicar este principio, la solución NGINX ofrece varias opciones para implementar la autenticación y la autorización, entre ellas la autenticación HTTP básica, los tokens web JSON (JWT) y OpenID Connect mediante integraciones con proveedores de identidad como Okta y Azure Active Directory (AD). La solución NGINX también proporciona identidades seguras a los servicios (de forma similar a como se proporciona identificación a los usuarios de aplicaciones mediante certificados), lo que permite autenticarlos y autorizarlos para realizar acciones en todo el clúster de Kubernetes. Además de gestionar las identidades de las cargas de trabajo, la solución NGINX automatiza la gestión de certificados mediante integraciones incorporadas con infraestructuras de clave pública (PKI) y autoridades de certificación.

Dado que NGINX Ingress Controller ya examina todas las solicitudes que entran en el clúster y las dirige a los servicios correspondientes, es el lugar más eficiente para centralizar la autenticación y autorización de usuarios, así como, en algunos casos, la autenticación de servicios.

Para obtener más información, consulte Implementación de la autenticación OpenID Connect para Kubernetes con Okta y NGINX Ingress Controller en nuestro blog.

Cifrado e integridad de los datos

Otro principio de Zero Trust establece que todas las comunicaciones deben estar protegidas —manteniendo su confidencialidad e integridad—, independientemente de dónde se encuentren los participantes. Los datos no deben poder ser leídos por partes no autorizadas ni modificados durante la transmisión. Para cumplir este principio, la solución NGINX utiliza el cifrado SSL/TLS para las comunicaciones entre usuarios y servicios, y la autenticación y el cifrado TLS mutuo (mTLS) para las comunicaciones entre servicios.

Si la arquitectura de su aplicación no implica comunicación entre servicios dentro del clúster de Kubernetes, NGINX Ingress Controller puede ser suficiente para satisfacer sus necesidades de integridad de datos. Hay dos opciones básicas:

  • Con TLS Passthrough, NGINX Ingress Controller enruta las conexiones cifradas mediante SSL/TLS directamente al servicio, sin descifrarlas ni requerir acceso a los certificados o las claves SSL/TLS.
  • Con la terminación SSL/TLS, NGINX Ingress Controller actúa como proxy inverso: finaliza la conexión TLS con el solicitante y, a continuación, utiliza mTLS o SSL/TLS en el lado del servicio para cifrar una nueva conexión con sus servicios de Kubernetes (servidores backend y upstream).

Si su arquitectura implica la comunicación entre servicios dentro del clúster, para garantizar la integridad de los datos necesita tanto NGINX Ingress Controller como NGINX Service Mesh. NGINX Service Mesh garantiza que solo determinados servicios puedan comunicarse entre sí y utiliza mTLS para autenticarlos y cifrar las comunicaciones entre ellos. Puede implementar mTLS sin intervención manual con NGINX Service Mesh, lo que significa que los desarrolladores no tienen que adaptar sus aplicaciones para incorporar certificados ni siquiera saber que se está llevando a cabo una autenticación mutua.

Para obtener más información sobre cómo proteger las comunicaciones en un clúster de Kubernetes, consulte La arquitectura mTLS en NGINX Service Mesh en nuestro blog.

Control de acceso y política de acceso

El control de acceso es otro elemento fundamental del modelo de confianza cero. Kubernetes utiliza el control de acceso basado en roles (RBAC) para regular qué recursos y operaciones están disponibles para los distintos usuarios. Este determina cómo pueden interactuar los usuarios, o grupos de usuarios, con cualquier objeto o espacio de nombres de Kubernetes del clúster.

La solución de conectividad de NGINX para Kubernetes es compatible con RBAC, lo que facilita su adaptación a las políticas de seguridad de su organización. Con RBAC, los usuarios obtienen acceso controlado a las funciones que necesitan para realizar su trabajo sin tener que abrir una incidencia de TI y esperar a que se resuelva. Sin RBAC, los usuarios pueden obtener permisos que no necesitan o que no les corresponden, lo que puede generar vulnerabilidades si se hace un uso indebido de ellos.

Al configurar RBAC con NGINX Ingress Controller, puede controlar el acceso de numerosas personas y equipos adaptando los permisos a los distintos roles del entorno de desarrollo y entrega de aplicaciones de su organización. Su herramienta de gestión de acceso granular permite el autoservicio y la gobernanza en múltiples equipos.

Para aprender a sacar partido de RBAC con NGINX Ingress Controller, vea nuestro seminario web en DevNetwork, «Implementaciones avanzadas de Kubernetes con NGINX Ingress Controller». A partir del minuto 13:50, nuestros expertos explican cómo aprovechar RBAC y la asignación de recursos para mejorar la seguridad, el autoservicio y la tenencia múltiple.

Observabilidad

Las auditorías, la supervisión, el registro, el rastreo y la generación de informes son elementos clave en un entorno de confianza cero. Cuanta más información pueda recopilar sobre el estado de la infraestructura de sus aplicaciones de Kubernetes y cuanto más eficazmente pueda correlacionarla, analizarla y evaluarla, más podrá reforzar su postura de seguridad.

Probablemente ya utilice herramientas de monitorización en su implementación de Kubernetes y no necesite otra más. Para ofrecerle una visión completa de lo que ocurre dentro de sus clústeres, hemos preparado la API de NGINX Plus para facilitar la exportación de métricas a cualquier herramienta de terceros que acepte JSON y proporcionar integraciones prediseñadas con herramientas populares como OpenTelemetry y Grafana y Prometheus. Obtendrá información específica sobre la conectividad de las aplicaciones mediante trazas detalladas, de modo que pueda comprender cómo se procesan las solicitudes de principio a fin: NGINX Ingress Controller ofrece información sobre la conectividad entre su clúster y los clientes externos, mientras que NGINX Service Mesh abarca la conectividad entre las aplicaciones y los servicios en contenedores y basados en microservicios dentro del clúster.

Protección WAF y contra ataques DoS

Con NGINX App Protect, puede reforzar aún más la seguridad de sus aplicaciones distribuidas protegiéndolas frente a amenazas como las 10 principales de OWASP y los ataques de denegación de servicio (DoS) de capa 7. NGINX App Protect, un componente integral de la solución de conectividad segura integral de NGINX, proporciona una seguridad ágil y centrada en las aplicaciones frente a las amenazas más avanzadas, mucho más allá de las firmas básicas. Aprovecha la experiencia líder y de confianza de F5 en materia de seguridad sin comprometer la velocidad de lanzamiento ni el rendimiento. Puede reenviar fácilmente la telemetría de seguridad a soluciones de análisis y visibilidad de terceros, y reduce los falsos positivos mediante firmas de alta fiabilidad y análisis automatizados del comportamiento.

El diseño modular de NGINX App Protect permite implementar la protección WAF, la protección contra ataques DoS o ambas en una misma instancia o en instancias diferentes, según sus necesidades. Por ejemplo, puede optar por implementarlas con NGINX Ingress Controller en el perímetro del clúster, una opción ideal para proporcionar una protección granular y uniforme en todo el clúster. Si, por el contrario, necesita políticas específicas para varias aplicaciones de un clúster, puede implementar la protección WAF, la protección contra ataques DoS o ambas en el nivel de servicio o de pod.

Para obtener más información sobre cómo implementar la protección WAF y DoS, lea Desplazamiento de las herramientas de seguridad a fases más tempranas para crear aplicaciones más seguras en nuestro blog.

Empieza a utilizar la solución de seguridad Zero Trust de NGINX para Kubernetes

Tanto si está dando sus primeros pasos con Kubernetes como si es un usuario avanzado que lleva tiempo ejecutándolo en producción, NGINX ofrece un conjunto completo de herramientas y componentes básicos para satisfacer sus necesidades y mejorar su postura de seguridad.

Empieza solicitando tu prueba gratuita de 30 días de NGINX Ingress Controller con NGINX App Protect WAF y protección contra ataques DoS, y descarga NGINX Service Mesh, que es gratuito para siempre.


Compartir

Sobre el autor

Ilya Krutov
Ilya KrutovResponsable sénior de marketing de producto | F5 NGINX

Más artículos de Ilya Krutov

Artículos relacionados del blog

Únete a F5 NGINX en AppWorld 2024
NGINX | 04/01/2024

Únete a F5 NGINX en AppWorld 2024

Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
NGINX | 26/09/2023

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source

La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.

Exposición de APIs en Kubernetes
NGINX | 10/03/2022

Exposición de APIs en Kubernetes

La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
NGINX | 23/08/2021

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto

Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.

Presentamos NGINX Plus R22
NGINX | 09/06/2020

Presentamos NGINX Plus R22

NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.

Presentamos NGINX Plus R17
NGINX | 11/12/2018

Presentamos NGINX Plus R17

NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.