¿Qué es la seguridad de Kubernetes?
La seguridad de Kubernetes se basa en cuatro conceptos básicos de la seguridad nativa de nube: nube, clúster, contenedor y código.
- Nube (o centro de datos corporativo o instalaciones de coubicación): la infraestructura física subyacente es la base de la seguridad de Kubernetes. Tanto si el clúster se basa en el propio centro de datos como en un proveedor de nube, se deben seguir las prácticas recomendadas básicas del proveedor de nube (o de seguridad física).
- Clúster: la protección de un clúster de Kubernetes implica tanto los componentes configurables (por ejemplo, la API de Kubernetes) como la seguridad de todas las aplicaciones que forman parte del clúster. Dado que la mayoría de las aplicaciones nativas de nube se han diseñado en torno a los microservicios y las API, son tan seguras como el eslabón más débil de la cadena de servicios que comprende toda la aplicación.
- Contenedor: las prácticas recomendadas para el diseño de contenedores consisten en comenzar con la base de código más pequeña posible (excluyendo las bibliotecas o funciones innecesarias), evitar conceder privilegios innecesarios a los usuarios en el contenedor y asegurarse de que los contenedores se analizan en busca de vulnerabilidades en el momento de la compilación.
- Código: el código representa una importante superficie de ataque para cualquier entorno de Kubernetes. Las políticas sencillas, como el cifrado de protocolos de control de transmisión (TCP) mediante negociación TLS (evitando exponer los puertos no utilizados, y haciendo análisis y pruebas con regularidad), pueden ayudar a evitar que surjan problemas de seguridad en los entornos de producción.

Kubernetes en 5 minutos

La situación de Kubernetes 2021
¿Qué importancia tiene la seguridad de Kubernetes en el ciclo de vida de los contenedores?
La seguridad de Kubernetes es importante durante todo el ciclo de vida de los contenedores debido a la naturaleza distribuida y dinámica de los clústeres de Kubernetes. Se requieren diferentes enfoques de seguridad para cada una de las tres fases del ciclo de vida de una aplicación: compilación, distribución y ejecución. Kubernetes ofrece ventajas de seguridad innatas. Por ejemplo, a los contenedores de aplicaciones no se les suele aplicar parches ni se actualizan. En su lugar, las imágenes de contenedor se sustituyen íntegramente por versiones nuevas. Esto permite un control estricto de versiones y permite realizar restauraciones rápidas si se identifica una vulnerabilidad en el código nuevo.
Sin embargo, dado que los pods independientes son transitorios y efímeros, el entorno de ejecución en constante cambio puede presentar desafíos para los profesionales de seguridad de TI, ya que las aplicaciones y los enlaces de API a otras aplicaciones y servicios cambian también continuamente.
¿Cuáles son las principales vulnerabilidades de seguridad de Kubernetes a lo largo del ciclo de vida de la aplicación y cómo se abordan?
Las herramientas de seguridad de Kubernetes deben lograr lo siguiente:
- Reducir el tiempo necesario para garantizar que el código esté libre de riesgos.
- Brindar firmas digitales para un cierto nivel de confianza en el código.
- Proporcionar visibilidad y transparencia, no solo respecto al código, sino también en relación con los problemas de configuración.
- Evitar la entrada (conexión entrante) o la salida (conexión saliente) de información desde o hacia servicios no seguros.
¿Cuáles son las principales vulnerabilidades de seguridad de Kubernetes durante la fase de compilación?
- Código de registros que no son de confianza. El código que no es de confianza puede incluir programas maliciosos o puertas traseras que podrían conceder acceso involuntariamente a los ciberdelincuentes.
- Imágenes base desmesuradas. Menos es más en lo que respecta a las aplicaciones contenedorizadas, por lo que los desarrolladores deben eliminar paquetes, bibliotecas y shells innecesarios que pudieran verse comprometidos.
¿Cuáles son las principales vulnerabilidades de seguridad de Kubernetes durante la fase de implementación?
- Concesión de privilegios innecesarios. Siempre que sea posible, mantenga los privilegios al mínimo e incluya solo los secretos que una tarea requiera para poder reducir la superficie de ataque.
- Aplicaciones del clúster no aisladas. Deben utilizarse espacios de nombres para separar los recursos y los equipos.
- Desplazamiento lateral dentro del clúster. Utilice políticas que segmenten la red para evitar el desplazamiento lateral de un ataque dentro del clúster.
- Acceso no autorizado. Asegúrese de que los controles de acceso basados en funciones (RBAC) estén configurados correctamente para limitar el acceso.
¿Cuáles son las principales vulnerabilidades de seguridad de Kubernetes en tiempo de ejecución?
- Ataques a la infraestructura. Durante la ejecución, los elementos de la infraestructura de Kubernetes (como los servidores de API, los almacenes etcd y las controladoras) presentan sus propias superficies de ataque.
- Complejidad. El estado persistente de un clúster de Kubernetes introduce muchas variables en la ecuación. Los contenedores en peligro deben aislarse, detenerse y sustituirse rápidamente por otros en buen estado mientras se localiza y se corrige el origen del ataque.
Cuál es la lista de comprobación general de seguridad de Kubernetes?
Las prácticas recomendadas sugieren comenzar con imágenes mínimas, sin distribución, y añadir solo lo que sea absolutamente necesario. A menor tamaño, más seguridad.
- Use un sistema operativo host mínimo, finalice los montajes de solo lectura y use las opciones de SELinux para ejercer un control aún mayor.
- Analice las imágenes de arriba a abajo en busca de vulnerabilidades, incluidas las imágenes del sistema operativo y las imágenes externas de cualquier tipo. Ninguna fuente externa es de confianza.
- Haga uso de espacios de nombres y RBAC para segmentar el clúster y los usuarios de forma lógica. Solo debe estar a la vista aquello que es necesario que lo esté.
- Los valores predeterminados de la red de Kubernetes permiten las comunicaciones de cualquier tipo, por lo que la segmentación de la red debe implementarse antes de pasar al entorno de producción. Defina cuidadosamente las políticas de entrada y salida para asegurarse de que las conexiones se enruten correctamente.
- Mantenga los privilegios al mínimo y nunca ejecute procesos de aplicaciones como usuario raíz. El uso de un sistema de archivos raíz de solo lectura evita cualquier ataque que dependa de la instalación de software o la modificación del sistema de archivos.
- Integre mecanismos de seguridad, como el análisis de imágenes, en el flujo de integración y distribución continuas (CI/CD). Y, lo que es aún mejor, lleve a cabo las pruebas de seguridad de referencia del Centro para la Seguridad en Internet (CIS).
- Proteja el propio clúster. Configure controles RBAC para limitar el acceso al servidor de API y garantizar que todas las comunicaciones etcd estén protegidas con cifrado TLS. Del mismo modo, bloquee los permisos del kubelet mediante la configuración de controles RBAC para kubelets.
- Aproveche los controles integrados en Kubernetes, como la configuración del contexto de seguridad para limitar el acceso a los pods.
- La seguridad proactiva debe incluir la supervisión de la actividad de los procesos, las comunicaciones entre los servicios y las comunicaciones externas al clúster.
Productos y soluciones relacionados
Entorno de ejecución de Kubernetes preparado para la empresa
Optimice las operaciones en la infraestructura multinube.
Kubernetes frente a Docker
Elija las herramientas adecuadas para prosperar con los contenedores.
Contenedores de Docker en Kubernetes
Una vez haya entendido qué son los contenedores y Kubernetes, el siguiente paso es conocer cómo funcionan juntas estas dos tecnologías.