SO optimizado para contenedores - Fortalecimiento de la seguridad y operaciones del host de contenedores con Bottlerocket

Aprenda a optimizar hosts de contenedores con AWS Bottlerocket. Cubre el diseño mínimo del SO, actualizaciones automáticas, infraestructura inmutable e integración con ECS/EKS.

El desafío de los sistemas operativos para hosts de contenedores

Al utilizar instancias EC2 como nodos de trabajo para ECS o EKS, la elección del SO del host tiene un impacto significativo en la seguridad y las operaciones. Los sistemas operativos de propósito general como Amazon Linux 2 o Ubuntu incluyen muchos paquetes innecesarios para ejecutar contenedores (gestores de paquetes, shells, diversas utilidades), todos los cuales amplían la superficie de ataque. La aplicación de parches del SO también conlleva el riesgo de problemas de dependencias al actualizar paquetes individuales. Bottlerocket es un SO basado en Linux diseñado específicamente para contenedores, desarrollado por AWS, que resuelve fundamentalmente estos desafíos. Incluye únicamente el runtime de contenedores (containerd), el kubelet de Kubernetes (para EKS) o el agente de ECS, y componentes mínimos del sistema, eliminando exhaustivamente el software innecesario.

Diseño de seguridad e infraestructura inmutable

El diseño de seguridad de Bottlerocket es multicapa. El sistema de archivos raíz se monta como solo lectura, y dm-verity verifica la integridad a nivel de bloque. Si se detecta manipulación, el sistema se niega a arrancar. SELinux está habilitado por defecto, restringiendo los privilegios de los procesos de contenedores al mínimo. Como no existe un gestor de paquetes, es imposible instalar software en tiempo de ejecución, lo que reduce el riesgo de ataques a la cadena de suministro. El acceso SSH está deshabilitado por defecto, y la gestión se realiza mediante API (a través del agente SSM). Las actualizaciones del SO utilizan actualizaciones atómicas basadas en imágenes que reemplazan todo el SO con una nueva imagen. Las actualizaciones utilizan un esquema de particiones A/B, y si el arranque desde la nueva imagen falla, el sistema revierte automáticamente a la versión anterior.

Integración con ECS/EKS y operaciones

Bottlerocket proporciona AMIs compatibles tanto con ECS como con EKS. Para EKS, puede utilizarlo simplemente seleccionando Bottlerocket como el tipo de AMI para grupos de nodos administrados. Karpenter (autoescalador de nodos) también admite la especificación de AMIs de Bottlerocket. Para ECS, se lanzan instancias de contenedores utilizando la AMI de Bottlerocket optimizada para ECS. La configuración se realiza mediante datos de usuario en formato TOML, especificando la información del clúster de Kubernetes o el nombre del clúster de ECS. El Bottlerocket Update Operator (para EKS) automatiza las actualizaciones progresivas que actualizan secuencialmente los nodos del clúster. Ejecuta automáticamente el ciclo de drenaje de un nodo (evacuación de Pods), actualización y reincorporación, actualizando el SO sin interrupción del servicio. Bottlerocket es gratuito y solo se aplican los cargos de instancias EC2. Puede aprender sistemáticamente las operaciones de Kubernetes desde lo básico hasta temas avanzados a través de libros (Amazon).

Precios de Bottlerocket

Bottlerocket es gratuito. Seleccionar la AMI de Bottlerocket como SO para sus instancias EC2 solo genera los mismos cargos de instancia EC2 que Amazon Linux 2. No hay tarifas de licencia del SO. Aunque Bottlerocket no proporciona ahorros de costos directos, los beneficios indirectos incluyen la reducción del esfuerzo operativo mediante la aplicación automática de parches de seguridad y la reducción de costos de respuesta a incidentes gracias a una superficie de ataque reducida.

Resumen - Directrices para el uso de Bottlerocket

Bottlerocket es un SO Linux mínimo optimizado para cargas de trabajo de contenedores. Sus principales fortalezas son el sistema de archivos inmutable, SELinux, dm-verity, actualizaciones atómicas para alta seguridad e integración nativa con ECS/EKS. Si está ejecutando nodos de trabajo basados en EC2 en ECS o EKS, migrar de Amazon Linux 2 a Bottlerocket puede fortalecer la seguridad y simplificar la gestión del SO. Si utiliza Fargate, la gestión del SO del host es innecesaria, por lo que Bottlerocket no es necesario.