What is Kubernetes?

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.

Prueba gratuita Guía de seguridad de Kubernetes

What is Kubernetes?

Definition

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.

Kubernetes vs Docker

Puede haber mucha confusión en torno al tema de Docker frente a Kubernetes. Sin embargo, en realidad es bastante simple:

  • Docker es una plataforma para crear y ejecutar contenedores. No es la única plataforma de contenedores, pero sí la más popular.
  • Kubernetes es una herramienta para gestionar múltiples contenedores, incluidos los contenedores Docker.
  • Docker ofrece una herramienta con algunas de las mismas características que Kubernetes conocida como Swarm.

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.

Conceptos y términos importantes de Kubernetes

Además de los contenedores, hay otros conceptos importantes que deben comprenderse al iniciarse en Kubernetes. Echemos un vistazo a algunos términos clave:

  • K8s. Se trata de un sinónimo de Kubernetes. Los desarrolladores a veces crean abreviaturas para términos populares tomando la primera y la última letra de una palabra, el número de letras entre ellas, y combinándolas en taquigrafía para la palabra. La interoperabilidad se convierte en "i14y", la localización en "l10n" y Kubernetes en "k8s".
  • Vainas. Son las unidades más pequeñas que pueden desplegarse en Kubernetes. Un pod consta de uno o varios contenedores que comparten recursos de almacenamiento y redes, así como una especificación para ejecutar los contenedores.
  • Cargas. Son las aplicaciones (conjuntos de pods, en realidad) que ejecuta Kubernetes. Kubernetes despliega actualizaciones y escala pods en función de lo que dicte la carga de trabajo configurada.
  • Nodos. El "hardware" informático (piense en RAM y CPU) sobre el que se ejecutan las cargas de trabajo se conoce como nodos. El "hardware" puede ser cualquier cosa, desde una Raspberry Pi a una máquina virtual o un servidor físico, la clave aquí es que los recursos de computación provienen de los nodos. Hay dos tipos principales de nodos: nodos de trabajo/minion que ejecutan las cargas de trabajo y nodos maestros que administran un conjunto de nodos de trabajo/minion.
  • Clústeres. Un clúster Kubernetes es un grupo de nodos. En un clúster, los nodos de trabajo ejecutan las cargas de trabajo y un nodo maestro controla lo que hacen los nodos de trabajo.

¿Para qué se utiliza Kubernetes?

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.

Conceptos importantes de seguridad de Kubernetes

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.

  • Las 4C de la seguridadnativa de la nube-Kubernetes propone un enfoque de 4 capas para la seguridad nativa de la nube conocido como las 4C: Código, Contenedor, Clúster yNube/Co-ubicación/Centrode datoscorporativo. En cada capa, debe asegurarse de que se siguen las prácticas recomendadas de seguridad. Esto significa cosas diferentes a diferentes niveles. Por ejemplo, garantizar que el código aplique el cifrado de los datos en tránsito y limite el acceso únicamente a los puertos de red esenciales, desautorizar a los usuarios con privilegios en los contenedores, endurecer los componentes configurables del clúster Kubernetes y seguir las mejores prácticas de seguridad de su proveedor de servicios en la nube.
  • Políticas de seguridad de pods. Con los pods de Kubernetes, existen 3 políticas de seguridad básicas. Para proteger correctamente su entorno, deberá comprender las ventajas y desventajas de usabilidad y seguridad de cada uno de ellos y actuar en consecuencia.
    • Privilegiados. El nivel más amplio de permisos. Con esta política es posible que se produzcan escaladas de privilegios conocidas.
    • Línea base/valor predeterminado. El término medio entre privilegiado y restringido. Evita las escalaciones de privilegios conocidas.
    • Restringido. Basándose en las mejores prácticas de endurecimiento de Kubernetes Pod, esta es la más restrictiva de las 3 políticas base.
  • Contextos de seguridad de pods. El contexto de seguridad de un pod configura sus opciones de seguridad en tiempo de ejecución. Esto cubre aspectos como el control de acceso, la ejecución con privilegios o no, el montaje de sistemas de archivos de solo lectura, etc. Puede pensar que esto se parece mucho a las políticas de seguridad de Pod y, de hecho, están relacionadas. Los contextos de seguridad son lo que sucede en tiempo de ejecución, mientras que las políticas de seguridad permiten definir parámetros para los contextos que se utilizan dentro de un clúster.
  • Secretos. La herramienta de infraestructura como código es excelente, pero probablemente no desee tokens o contraseñas de OAuth en un archivo YAML. Los secretos son la forma que tiene Kubernetes de almacenar este tipo de información sensible.

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).

Próximos pasos con Kubernetes

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.

x
  Comentarios
Este sitio web emplea cookies para su funcionalidad y con fines analíticos y de marketing. Al continuar empleando este sitio web, usted acepta el uso de cookies. Para más información, lea nuestro Aviso sobre cookies.