Resumen
Kubernetes (también conocida como k8s o "kube") es una plataforma open source para la organización de contenedores que automatiza la implementación, la gestión y el ajuste de las aplicaciones que se alojan en ellos. Se encarga de organizar los contenedores de Linux en clústeres y utiliza las interfaces de programación de aplicaciones (API) para conectar los microservicios allí alojados. Dado que cualquier servicio o capa que se utiliza en una implementación de Kubernetes puede contener puntos vulnerables, resulta complejo proteger los clústeres de la plataforma.
Si hablamos de la seguridad de Kubernetes, algunos equipos adoptan un enfoque centrado en los contenedores, cuyo objetivo principal es proteger las imágenes y el tiempo de ejecución de los contenedores, mientras que otros prefieren la seguridad propia de Kubernetes, la cual supone un enfoque más abarcativo, en el cual se extrae contexto de la plataforma y se utilizan sus controles integrados para implementar las prácticas recomendadas de seguridad basadas en el riesgo durante todo el ciclo de desarrollo de las aplicaciones. Este segundo enfoque también aborda los riesgos y los puntos vulnerables específicos de Kubernetes, como los errores en la configuración de las políticas de control de acceso basado en funciones (RBAC), los elementos no seguros del plano de control y el uso indebido de los secretos de la plataforma.
La importancia de la seguridad de Kubernetes
En los últimos años, ha aumentado considerablemente la adopción de Kubernetes, una tecnología prácticamente nueva; sin embargo, las inversiones en seguridad no siempre han ido a la par. Este tipo de problemas, combinados con la falta de especialistas y de conocimiento en materia de seguridad, pueden traer consecuencias devastadoras. Los problemas de seguridad provocan retrasos o ralentizan el desarrollo de las aplicaciones y la implementación. Cuando finalmente se produce un incidente, tanto los problemas de seguridad de los contenedores como los de Kubernetes influyen en la pérdida de ingresos o clientes y el despido de miembros del personal, además de generar otros impactos en las operaciones empresariales.
Kubernetes y la organización en contenedores permiten ajustar DevOps de forma más rápida y sencilla, pero también suponen otros riesgos de seguridad. A medida que se implementan más contenedores, se amplía la superficie de ataque y se vuelve más complejo identificar los contenedores que tienen puntos vulnerables o errores en la configuración.
Riesgos y desafíos comunes
Redes entre los pods de Kubernetes
Uno de los principales beneficios de Kubernetes es que ofrece muchísimas opciones para configurar la red, lo cual permite controlar la comunicación entre los pods dentro de un clúster. Sin embargo, la plataforma no restringe la comunicación de forma predeterminada, de manera que los pods pueden comunicarse entre sí hasta que se asignen las políticas de red pertinentes. Esto significa que si un malhechor vulnera un pod, puede utilizarlo como vector para atacar a los otros que se alojan en el mismo clúster. Para escribir las políticas de redes de Kubernetes se utilizan los archivos YAML. Este es tan solo uno de los motivos por los que ponerlas en marcha puede resultar complicado, lo cual puede llevar a evitar segmentar las redes para no perder agilidad.
Gestión de la configuración
Los errores en la configuración, que suelen producirse por errores humanos y por la falta de automatización en los análisis de seguridad, suponen un gran riesgo de seguridad para los entornos de Kubernetes y pueden dar lugar a filtraciones. Debido a la naturaleza dinámica de los contenedores, puede resultar complejo identificar los errores de configuración y mantener una estrategia uniforme de seguridad. Como Kubernetes está diseñada para priorizar la agilidad y el funcionamiento, las configuraciones predeterminadas no suelen tener restricciones. Esto expone a las empresas a los ataques.
Problemas con la cadena de suministro de software
Otro aspecto que preocupa bastante a las empresas son los problemas de seguridad en la cadena de suministro de software, como los elementos expuestos de las aplicaciones, la escasez de controles de acceso, la falta de una lista de elementos de software (SBOM), los puntos vulnerables del canal de CI/CD y la falta de uniformidad en la aplicación de las políticas. Las cadenas de suministro de software en expansión, características de los entornos de Kubernetes desarrollados en la nube, requieren un conjunto único de controles. Su protección debe comenzar en el entorno de desarrollo integrado (IDE) y extenderse hasta el entorno del tiempo de ejecución. Además, debe incluir todo el contenido (el código fuente, las imágenes, los elementos), las herramientas (de los desarrolladores y de seguridad) y el personal involucrado en la cadena de suministro. El análisis del código fuente, los controles de acceso, la certificación y las SBOM son solo algunos de los aspectos relativos a la seguridad que se deben tener en cuenta.
Medidas de seguridad desde las primeras etapas del desarrollo
La implementación de la seguridad desde las primeras etapas del desarrollo es un desafío que se encuentra estrechamente relacionado con el punto anterior. Se trata de un concepto que establece que las iniciativas de seguridad de Kubernetes deben considerarse desde una fase más temprana del ciclo de vida de los contenedores. Es realmente un desafío porque implica que los desarrolladores hagan uso de los sistemas de seguridad, es decir, que tengan el conocimiento y las herramientas necesarios para tomar decisiones al respecto en sus flujos de trabajo. Sin embargo, los beneficios que obtendrá la empresa son increíbles. Así es como se debería implementar la seguridad de Kubernetes y los contenedores. Cuantos más problemas de seguridad se aborden en la fase de diseño, menos problemas de ejecución surgirán, lo cual reducirá las demoras en los proyectos.
Detección y respuesta durante el tiempo de ejecución
La cantidad de vectores de amenaza durante el tiempo de ejecución en las aplicaciones organizadas en contenedores que se ejecutan en los entornos de Kubernetes supone un desafío para los equipos que se encargan de detectar y responder a estos problemas. Los malhechores pueden acceder a los entornos de Kubernetes de diversas formas: ejecutar un código malicioso, aumentar sus privilegios de forma inapropiada, acceder a un sistema por un tiempo prolongado, evadir los sistemas de detección y moverse de forma lateral para lograr eliminar o exfiltrar datos, denegar servicios o secuestrar recursos. Puede obtener información más detallada sobre este tema en la entrada de nuestro blog MITRE ATT&CK® framework for Kubernetes.
La seguridad de la infraestructura de Kubernetes
Las múltiples capas de Kubernetes presentan sus propios desafíos de seguridad, desde los elementos del plano de control (como el servidor de la API, kube-scheduler, kube-controller-manager y etcd) hasta los elementos del nodo de trabajo que ejecutan las cargas organizadas en contenedores. Cada uno de estos servicios debe configurarse de forma segura para proporcionar un entorno de clústeres reforzado en el que se ejecuten las aplicaciones. Además, la forma de proteger los elementos de Kubernetes variará en función de si utiliza la plataforma como un servicio autogestionado o como un servicio de nube totalmente gestionado. Por ejemplo, en los entornos autogestionados deberá encargarse de todos los elementos del plano de control, además de los elementos del nodo. Pero, si utiliza la versión gestionada, tanto el proveedor de servicios como el cliente (es decir, usted) serán responsables de la seguridad. Esto supone otro reto más.
Seguridad en todo momento
La organización en contenedores y Kubernetes brindan múltiples beneficios de seguridad que permiten a los equipos abordar los riesgos relacionados con los problemas de seguridad de los contenedores. Por ejemplo:
- Si se detecta un problema de seguridad en el contenedor durante el tiempo de ejecución, se resuelve en la etapa de diseño y se lo vuelve a implementar, en lugar de actualizarlo o aplicarle un parche mientras se ejecuta. Esta función, que se conoce como inmutabilidad, mejora la capacidad de anticipar el comportamiento del contenedor y de detectar si hay algo inusual.
- Las políticas de red pueden segmentar los pods o grupos de ellos mientras los controladores de admisión pueden aplicar políticas para mejorar el control.
- El control de acceso basado en funciones (RBAC) puede asignar permisos específicos a los usuarios y las cuentas de servicios.
- Los secretos de Kubernetes pueden ayudar a proteger mejor los datos confidenciales, como las claves de cifrado.
Sin embargo, Kubernetes no es una plataforma de seguridad. Por eso, los equipos deben poner en práctica la evaluación de los riesgos y centrarse en los puntos vulnerables en cada capa del entorno de la plataforma y en cada etapa del ciclo de vida de los contenedores y las aplicaciones. La gestión efectiva de su seguridad implica aprovechar sus propios controles de protección cuando estén disponibles y, a la vez, implementar las prácticas recomendadas durante las fases de diseño, implementación y ejecución.
Red Hat le ofrece una solución
Red Hat es la empresa líder en la tecnología de contenedores open source, por lo cual puede ayudarlo a ampliar sus conocimientos sobre las prácticas recomendadas de seguridad de Kubernetes y aumentar las medidas de protección durante la implementación de los contenedores. Para que los equipos identifiquen y aborden los problemas de seguridad en K8s de forma más eficiente, Red Hat ofrece soluciones propias de Kubernetes que integran la seguridad al ciclo de vida de los contenedores y permiten que los equipos de DevOps diseñen e implementen aplicaciones listas para la producción.
KubeLinter es una herramienta open source de análisis estático, que creó StackRox y luego adquirió Red Hat en 2021, que identifica los errores de configuración y programación en las implementaciones de Kubernetes. Ejecuta varias pruebas para analizar las configuraciones de Kubernetes, identificar los errores y generar alertas sobre cualquier aspecto que no se ajuste a las prácticas recomendadas de seguridad.
Red Hat Service Interconnect está equipada con seguridad integrada que se extiende a todos los clústeres y nubes desde un principio y, al mismo tiempo, proporciona enlaces de comunicación confiables entre los servicios. Además, permite que el desarrollo sea flexible en las plataformas heredadas, de contenedores o de Kubernetes, lo cual les brinda a los desarrolladores más opciones para diseñar, modernizar e implementar las aplicaciones empresariales de última generación.
Red Hat® Advanced Cluster Security for Kubernetes (ACS) permite a las empresas diseñar aplicaciones en la nube e implementarlas y ejecutarlas de forma segura. Esta solución de SaaS que se ofrece como versión autogestionada o totalmente gestionada protege las cargas de trabajo organizadas en contenedores en los principales entornos híbridos y de nube, y posibilita que los equipos de DevOps e InfoSec pongan en práctica las medidas de protección, reduzcan los costos operativos y aumenten la productividad de los desarrolladores.