Kubernetes es una plataforma de orquestación de contenedores de código abierto para escalar y automatizar implementaciones de contenedores. Se desarrolló inicialmente para gestionar cargas de trabajo en contenedores en entornos de producción y ayudó a los usuarios a definir los límites de los recursos de las aplicaciones. La virtualización es una práctica de la arquitectura de seguridad de Kubernetes que permite la utilización adecuada de los recursos en servidores físicos y mejora la estabilidad. Kubernetes mejora el rendimiento del hardware y reduce los gastos operativos al añadir virtualización. Cada máquina virtual funciona con su propio conjunto de componentes y cuenta con sistemas operativos específicos.
Las implementaciones de la arquitectura de seguridad de Kubernetes son ágiles, promueven el desarrollo y la integración continuos, y añaden fiabilidad a la creación y la implementación de imágenes de contenedores. La plataforma facilita la inmutabilidad de las imágenes, supervisa el estado y el rendimiento de las aplicaciones y optimiza la portabilidad de la distribución del sistema operativo. Sin embargo, una desventaja del uso de la arquitectura de seguridad de Kubernetes es que necesita ser más segura por defecto. Los usuarios pueden enfrentarse a tiempos de inactividad o retrasos operativos al ejecutar sistemas distribuidos, y existen problemas de seguridad con el equilibrio de carga, la gestión de la configuración y la implementación automatizada.
La arquitectura de seguridad de Kubernetes proporciona flexibilidad y observabilidad, pero no limita las aplicaciones ni impone requisitos de registro, auditoría y supervisión. Los actores maliciosos pueden aprovechar las vulnerabilidades, y los riesgos de la cadena de suministro pueden crear problemas a lo largo del ciclo de creación de contenedores. Es necesario proteger múltiples componentes de la arquitectura de Kubernetes, como los nodos de trabajo, las aplicaciones en contenedores y los planos de control. La posibilidad de amenazas internas también es alta, y los administradores de Kubernetes con intenciones maliciosas pueden abusar de privilegios especiales, filtrar información confidencial o provocar violaciones de datos.
Esta guía describe los principales retos de la arquitectura de seguridad de Kubernetes. Abarca cómo configurar y proteger estos clústeres para remediar las amenazas y evitar configuraciones erróneas comunes. Empecemos.
¿Qué es la arquitectura de seguridad de Kubernetes?
La arquitectura de seguridad de Kubernetes utiliza clústeres, planos de control y una o más máquinas virtuales (o servidores físicos) denominadas nodos de trabajo. Se sabe que los nodos de trabajo alojan pods que contienen uno o más contenedores.
Los contenedores de Kubernetes son entornos de tiempo de ejecución que contienen paquetes de software y almacenan todas sus dependencias. Las imágenes de contenedores tienen código ejecutable y contenido para poblar los entornos de contenedores.
La toma de decisiones del clúster la realiza el plano de control. Programa la ejecución de los contenedores, detecta fallos e inicia nuevos pods. Los componentes críticos del plano de control son el gestor del controlador, el servidor de la interfaz de programación de aplicaciones (API) de Kubernetes, el programador y el gestor del controlador en la nube.
Los nodos de trabajo de Kubernetes también alojan Kubelet y Kube-proxy, dos servicios que permiten la orquestación de contenedores. También ejecuta un motor de contenedores, y el servicio CSP Kubernetes aloja clústeres. Las organizaciones deben gestionar diversos aspectos del servicio de Kubernetes, como la autorización y la autenticación, ya que las configuraciones predeterminadas de CSP no son seguras.
Al diseñar la arquitectura de seguridad de Kubernetes, las organizaciones deben comprender sus responsabilidades y saber cómo mantener los clústeres de Kubernetes.
¿Cómo proteger la arquitectura de seguridad de Kubernetes?
Hay muchas formas de proteger la arquitectura de seguridad de Kubernetes. El primer paso es impedir la ejecución de root por defecto. Los usuarios pueden ejecutar contenedores sin root o utilizar un motor de contenedores sin root para reducir las posibilidades de que los contenedores se vean comprometidos. También deben probar las aplicaciones de Kubernetes y diseñarlas para que se ejecuten como usuarios sin root. La integración de la ejecución no root en el tiempo de compilación mejora el control de calidad y garantiza que las aplicaciones de Kubernetes se ejecuten sin problemas sin privilegios root.
Para los principiantes, es mucho más sencillo configurar clústeres individuales para aplicaciones a gran escala. Las personas que utilizan servicios Kubernetes comerciales o gestionados pueden optimizar la utilización de los recursos mediante K8s Namespaces y aprovechar la compatibilidad con la multitenencia.
A continuación se ofrecen los mejores consejos de seguridad para mejorar la arquitectura de seguridad de Kubernetes para principiantes:
1. Utilizar sistemas de archivos de contenedores inmutables
Los actores maliciosos son capaces de obtener privilegios de ejecución sin restricciones, descargar scripts y modificar aplicaciones dentro de los contenedores. Los usuarios pueden evitar estas situaciones montando sistemas de archivos secundarios de lectura/escritura en directorios específicos y utilizando sistemas de archivos de contenedores inmutables.
2. Crear imágenes de contenedor seguras
El escaneo de imágenes de contenedor de Kubernetes puede detectar vulnerabilidades, prevenir inyecciones de código malicioso y garantizar implementaciones seguras. El escaneo de imágenes de contenedor de Kubernetes identifica bibliotecas obsoletas, protege los puertos y previene configuraciones erróneas conocidas. El análisis de imágenes de contenedores es una parte integral de la arquitectura de seguridad de Kubernetes y puede proporcionar una corrección eficaz de las amenazas. El controlador de admisión de Kubernetes puede bloquear automáticamente las implementaciones si una imagen de contenedor infringe la política de seguridad de la organización. También es esencial crear y obtener imágenes de repositorios de confianza y verificar la reputación de los editores. Los usuarios solo deben ejecutar imágenes firmadas digitalmente en clústeres de Kubernetes.
3. Implementar el refuerzo de contenedores de Kubernetes
El refuerzo de contenedores de Kubernetes puede limitar drásticamente el alcance de las superficies de ataque, prevenir violaciones de datos y proteger las aplicaciones. En términos generales, existen tres enfoques: la contenedorización respaldada por hipervisor, las soluciones basadas en el núcleo y los entornos aislados de aplicaciones.
La herramienta seccomp se puede utilizar para el registro de auditorías y la detección activa de amenazas. Muchas soluciones de motores de contenedores permiten a los usuarios añadir una capa de aislamiento entre el núcleo del host y la aplicación contenedorizada. Los límites de aislamiento obligan a las aplicaciones a funcionar dentro de entornos aislados virtuales y protegen los sistemas operativos del host de invasiones maliciosas. Los motores de contenedores se pueden configurar para aplicar la virtualización y proporcionar una mejor protección que las soluciones tradicionales de aislamiento de contenedores.
4. Separación y refuerzo de la red
Las redes de clústeres se utilizan para mejorar las comunicaciones entre contenedores. La aplicación del cifrado y la separación de recursos puede impedir el movimiento lateral en las redes. Los usuarios pueden utilizar políticas de red para aislar los recursos de Kubernetes y proteger el plano de control. Se recomienda cifrar el tráfico y los datos confidenciales en reposo (incluidos los secretos) y aplicar cortafuegos. Los espacios de nombres de Kubernetes pueden dividir los recursos del clúster entre equipos, usuarios y aplicaciones. Los espacios de nombres no están aislados de forma predeterminada, pero los usuarios pueden especificar la autorización utilizando RBAC y políticas de red.
Las direcciones IP de los pods pueden cambiar, y las aplicaciones no pueden depender de que los pods tengan direcciones IP estáticas. El uso de un servicio de Kubernetes con la arquitectura de seguridad de Kubernetes puede resolver este problema. Puede asignar varias direcciones IP únicas a diferentes pods y utilizar etiquetas para las configuraciones. Estas direcciones no cambian mientras el servicio sigue en uso. Las políticas de red de Kubernetes pueden controlar el tráfico de entrada y salida.
Otras dos recomendaciones de la arquitectura de seguridad de Kubernetes para diseñar políticas de red sólidas son: utilizar complementos CNI que admitan la API NetworkPolicy y crear directrices para pods seleccionados utilizando namespaceSelector y podSelector.
5. Hosts seguros de Kubernetes
Los usuarios pueden implementar Kubernetes de varias maneras: en las instalaciones, en bare metal y a través de compilaciones en la nube pública. Los contenedores de Kubernetes son muy portátiles; los clientes pueden cambiar entre instalaciones y migrar cargas de trabajo. Un alto grado de personalización también implica la introducción de vulnerabilidades de seguridad adicionales. Una forma de evitarlo es reforzar los hosts subyacentes e instalar las últimas versiones de los sistemas operativos. Es esencial implementar sistemas de gestión de la configuración, gestión de parches, cortafuegos y aplicar las medidas de seguridad pertinentes de acuerdo con los entornos de los centros de datos designados.
Ejecutar la última versión de Kubernetes mitiga las principales amenazas potenciales. Aplica correcciones de errores comunes y mantener las aplicaciones actualizadas evita complicaciones innecesarias. Las actualizaciones continuas son muy populares entre los desarrolladores, y las migraciones de grupos de nodos completan las actualizaciones con un tiempo de inactividad o interrupciones mínimas.
6. Integrar herramientas de seguridad de Kubernetes
Seguridad de Kubernetes Herramientas como los cortafuegos de próxima generación (NGFW) y las puertas de enlace de control de acceso web deben integrarse con los clústeres de Kubernetes y los conjuntos de herramientas de seguridad existentes. Una excelente manera de hacerlo es incorporar los puertos TCP/UDP y las direcciones IP utilizadas por las cargas de trabajo en las herramientas de seguridad perimetral. Esto permitirá a los usuarios identificar y proteger los activos de Kubernetes.
Limitar la conectividad de red a los nodos de Kubernetes y utilizar grupos de seguridad de proveedores de nube también puede alinearse con las prácticas de gestión de la arquitectura de seguridad de Kubernetes.
7. Cumplimiento automatizado
Se puede garantizar una seguridad óptima en tiempo de ejecución recopilando datos y automatizando la generación de informes de cumplimiento. El cumplimiento normativo de Kubernetes debe ajustarse a los últimos estándares del sector, como HIPAA, PCI-DSS, GDPR, NIST y SOC2. Es fundamental aspirar a un cumplimiento automatizado y continuo. Si un pod no supera una comprobación de cumplimiento, los clústeres deben actualizar automáticamente las imágenes de los contenedores o apagarlo hasta que se solucione el problema. Los usuarios deben cifrar los datos en tránsito, lo que se puede conseguir habilitando el cifrado TLS para las cargas de trabajo de Kubernetes. Otra gran opción es habilitar TLS mutuo, utilizar mallas de servicio o utilizar herramientas como SentinelOne.
8. Acceso seguro a la API de Kubernetes
La mayoría de las operaciones del clúster de Kubernetes se producen en el servidor Kube-apiserver. La herramienta de control Kube se puede utilizar para controlar el acceso a la API y sirve como primera línea de defensa. Kubelet puede asignar una clase de calidad de servicio (QoS) a los pods y ayudar con su programación y consiguiente expulsión cuando sea necesario. Kubelet puede ayudar a los usuarios a tomar decisiones más inteligentes, y los equipos de DevOps pueden garantizar que los contenedores reciban los recursos suficientes para funcionar correctamente. Todos los contenedores deben tener límites de CPU y memoria sin excepción.
SentinelOne cuenta con una completa plataforma de protección de aplicaciones nativas en la nube (CNAPP) con una solución integrada de gestión de la postura de seguridad de Kubernetes (KSPM). Puede aplicar políticas de seguridad muy detalladas, restringir las comunicaciones entre las cargas de trabajo y las aplicaciones de terceros, y limitar el acceso a la API. La herramienta detecta y mitiga amenazas persistentes avanzadas mediante el aprendizaje automático y la inteligencia artificial, e incluso incluye un motor de seguridad ofensiva que aplica un enfoque basado en reglas para la seguridad y la supervisión de amenazas. La implementación de un modelo de microsegmentación escalable, unificado y único para hosts, máquinas virtuales y contenedores de Kubernetes puede proporcionar la seguridad de Kubernetes que tanto se necesita en implementaciones multiclúster, multinube e híbridas.
Vea SentinelOne en acción
Descubra cómo la seguridad en la nube basada en IA puede proteger su organización en una demostración individual con un experto en productos SentinelOne.
DemostraciónConclusión
Las empresas están adoptando cada vez más plataformas de orquestación de contenedores como Kubernetes, y se está produciendo un cambio hacia la protección de las infraestructuras y el aprovechamiento de las cargas de trabajo y las aplicaciones en contenedores. Kubernetes ofrece funciones y configuraciones de seguridad completas, pero no es seguro por defecto y debe configurarse. Los contenedores pueden ejecutarse correctamente, y las amenazas deben remediarse antes de que se agraven. Se empieza por diseñar una práctica arquitectura de seguridad de Kubernetes. Existen varias herramientas que las organizaciones pueden utilizar para empezar, y hay muchas soluciones de código abierto disponibles en el mercado.
Están logrando una visibilidad continua, mejorando la observabilidad y garantizando que los contenedores se ejecuten de la forma más segura posible. Las herramientas de seguridad de Kubernetes pueden supervisar el proceso de compilación y descubrir vulnerabilidades ocultas, lo que ayuda a las organizaciones a mantenerse protegidas.
"Preguntas frecuentes sobre la arquitectura de seguridad de Kubernetes
La arquitectura de seguridad de Kubernetes es el diseño y el conjunto de controles destinados a proteger un clúster de Kubernetes. Se centra en proteger el plano de control, los nodos, las cargas de trabajo y las redes para evitar accesos no autorizados y ataques.
Incluye defensas por capas, como autenticación, autorización, políticas de red y gestión de secretos, estructuradas para proteger cada parte del entorno de orquestación de contenedores.
La seguridad de red de Kubernetes utiliza políticas y segmentación para controlar el tráfico entre pods y clientes externos. Las políticas de red definen qué pods o rangos de IP pueden comunicarse. La arquitectura suele incluir comunicación cifrada entre componentes y cortafuegos para restringir el acceso.
Esta configuración limita el movimiento lateral de los atacantes y protege los servicios confidenciales dentro del clúster.
Una configuración segura de Kubernetes incluye control de acceso basado en roles (RBAC) para los permisos, TLS para cifrar el tráfico de la API, políticas de red para la segmentación de pods, políticas de seguridad de pods o controladores de admisión para reforzar la seguridad de los contenedores, cifrado de secretos, registro de auditorías y análisis periódico de vulnerabilidades. Estas capas funcionan conjuntamente para reducir el riesgo y mantener la integridad del clúster.
Kubernetes admite varios métodos de autenticación, como certificados, tokens e integración con proveedores de identidad (OIDC, LDAP). Una vez autenticadas, las solicitudes pasan por comprobaciones de autorización, principalmente mediante RBAC, que aplica el privilegio mínimo al conceder acceso en función de roles y políticas definidos. Esto garantiza que solo los usuarios y componentes de confianza realicen las acciones permitidas.
Algunos ejemplos son la aplicación de RBAC para restringir las acciones de los usuarios, el uso de políticas de red para aislar los pods con datos confidenciales, la habilitación de registros de auditoría para el seguimiento de los eventos del clúster, el cifrado de los secretos almacenados en etcd, la implementación de controladores de admisión para bloquear configuraciones inseguras y la ejecución de contenedores con privilegios limitados. La combinación de estas prácticas refuerza la seguridad del clúster desde múltiples ángulos.

