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.
| Aspecto | SO de propósito general | Bottlerocket |
|---|---|---|
| Software incluido | Gestor de paquetes, shell y muchas utilidades | containerd más kubelet o el agente de ECS, y solo los componentes mínimos del sistema |
| Sistema de archivos raíz | De lectura y escritura | Solo lectura, verificado con dm-verity; si detecta manipulación, el sistema no arranca |
| Instalar software en caliente | Posible en cualquier momento con el gestor de paquetes | Imposible: no hay gestor de paquetes |
| Acceso administrativo | Se asume el inicio de sesión por SSH y los cambios manuales | SSH está desactivado por defecto; la gestión pasa por la API mediante el agente de SSM |
| Control de acceso obligatorio | Depende de la distribución y de la configuración | SELinux activado por defecto |
| Unidad de actualización del SO | Por paquete, con riesgo de problemas de dependencias | Actualización atómica basada en imagen; con particiones A/B revierte sola si la nueva imagen no arranca |
| Vía de investigación de incidentes | Iniciar sesión directamente en el host | Acceder de forma temporal desde un contenedor dedicado |
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.
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.
Referencias (recursos oficiales de AWS)
Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.
- Bottlerocket (página oficial)
- Amazon EKS (página oficial)
- Amazon ECS (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.