Kubernetes se ha convertido en un estándar en el software nativo de la nube en lo que respecta a los contenedores. De hecho, la encuesta más reciente de la Nube Native Computing Foundation (CNCF) reveló que el uso de Kubernetes en producción ha crecido hasta el 78%. Sin embargo, como ocurre con cualquier tecnología que aumenta su popularidad en poco tiempo, existe mucha confusión en torno a qué es Kubernetes y qué consideraciones de seguridad conllevan Kubernetes y la contenedorización. Un ejemplo: en la misma encuesta del CNCF, el 40% de los encuestados mencionó la seguridad como un reto con el uso/implementación de contenedores y el 38% señaló la complejidad como un reto.
Para los ingenieros de seguridad encargados de endurecer la implementación de contenedores, definitivamente hay una curva de aprendizaje que superar. Para ayudarle a ponerse al día, echaremos un vistazo a qué es Kubernetes, cómo funciona y exploraremos algunos conceptos básicos de seguridad de Kubernetes.
Kubernetes es una plataforma utilizada para orquestar y gestionar cargas de trabajo de contenedores (p. ej. Contenedores Docker).
Desde su lanzamiento inicial en 2014, Kubernetes -un proyecto de código abierto que se gradúa en la CNCF y cuyas raíces se remontan al equipo de desarrollo de Google- se ha convertido en una de las herramientas más populares en los círculos de DevOps y nativos de la nube.
Un requisito previo para entender Kubernetes es comprender primero los contenedores. En pocas palabras, los contenedores son paquetes de software ligeros que incluyen todas las dependencias que necesita una aplicación para ejecutarse. Los contenedores resuelven el problema de la ejecución fiable de aplicaciones en distintos entornos. Debido a que son ligeros y portátiles, los contenedores han aumentado su popularidad y son vitales para el desarrollo de microservicios y aplicaciones web modernas.
Aunque el uso de un único contenedor no requiere mucha gestión y orquestación, las grandes aplicaciones necesitan poder escalarse. Los equipos de desarrollo modernos necesitan poder automatizar y escalar el proceso de implementación de contenedores. Aquí es donde entran en juego las herramientas de gestión de cargas de trabajo en contenedores como Kubernetes. Kubernetes proporciona la gestión y la orquestación que faltan.
La frase "gestión y orquestación" se utiliza mucho cuando se habla de Kubernetes. Sin embargo, eso no nos dice mucho sobre los detalles. En términos sencillos, lo que esto significa es que Kubernetes permite el equilibrio de carga, la gestión de la configuración, la configuración de los recursos de almacenamiento, la asignación automática de recursos (por ejemplo. CPU y RAM por contenedor), y la ampliación o reducción de la implementación de contenedores.
Puede haber mucha confusión en torno al tema de Docker frente a Kubernetes. Sin embargo, en realidad es bastante simple:
Este último punto es el que puede llevar a parte de la confusión. Da la casualidad de que Docker ofrece una herramienta - Swarm - que proporciona una funcionalidad similar a Kubernetes. Sin embargo, Kubernetes es, con diferencia, la herramienta de gestión y orquestación más popular.
Además de los contenedores, hay otros conceptos importantes que deben comprenderse al iniciarse en Kubernetes. Echemos un vistazo a algunos términos clave:
Kubernetes puede ser útil de forma efectiva en cualquier lugar donde pueda ser útil un enfoque de infraestructura como código para la implementación de contenedores. Esto significa que los equipos de desarrollo ágil y los equipos centrados en las prácticas DevOps utilizarán a menudo Kubernetes para ayudar a automatizar sus canalizaciones de integración continua/entrega continua (CI/CD). Además, Kubernetes puede ayudar a autoescalar la aplicación nativa de la nube supervisando la salud de los nodos y la utilización de los recursos y aumentando o reduciendo la escala según sea necesario.
Por supuesto, aunque Kubernetes añade valor desde una perspectiva de automatización y escalabilidad, también añade una nueva arruga para los equipos de seguridad. ¿Cómo puede asegurarse de que sus aplicaciones y servicios se implementen de forma segura? Como siempre, esto comienza con la comprensión de su modelo de amenazas y su apetito de riesgo, pero hay algunos conceptos básicos que le ayudarán a empezar.
También es vital contar con un plan de visibilidad de los contenedores y de exploración de la vulnerabilidad para garantizar que la corrección de los problemas se produce con rapidez y que usted sigue cumpliendo todas las normas pertinentes. Para empezar con el escaneado de la vulnerabilidad de los contenedores y las evaluaciones de la postura de seguridad, le recomendamos que lea Visibilidad y conformidad continuas de los contenedores (PDF).
Ahora que entiende cómo funciona Kubernetes a alto nivel -controlando y gestionando automáticamente la implementación de contenedores- puede dar los siguientes pasos para desplegar k8s de forma segura. Si desea profundizar en la implementación de la seguridad con contenedores, Kubernetes e infraestructuras sin servidor, inscríbase para ver el seminario web gratuito How to Layer Security into Modern nube application presentado por el experto en seguridad en la nube Hillel Solow.