Bottlerocket

Sistema operativo basado en Linux especializado en la ejecución de contenedores, que logra seguridad y operabilidad con una huella mínima

Descripción general

Bottlerocket es un sistema operativo basado en Linux desarrollado por AWS, especializado en cargas de trabajo de contenedores. Elimina exhaustivamente los componentes innecesarios para la ejecución de contenedores de las distribuciones Linux de propósito general (gestor de paquetes, inicio de sesión por shell, bibliotecas genéricas, etc.), minimizando la superficie de ataque. Con un sistema de archivos raíz inmutable, gestión de configuración basada en API y mecanismos de actualización automática, reduce drásticamente la carga operativa de los nodos de contenedores. Soporta tanto ECS como EKS, y se proporcionan variantes optimizadas para cada orquestador.

Sistema de archivos inmutable y modelo de seguridad

El sistema de archivos raíz de Bottlerocket está montado como solo lectura, impidiendo físicamente la modificación de archivos del sistema incluso si un contenedor es comprometido. Esto proporciona una defensa en profundidad contra ataques donde el malware modifica binarios del sistema o instala rootkits. El sistema se verifica mediante dm-verity, detectando cualquier alteración del sistema de archivos en el arranque. A diferencia de Amazon Linux 2 o Ubuntu, no hay gestor de paquetes (yum/apt), por lo que no se pueden instalar paquetes adicionales, pero esto elimina la necesidad de gestión de parches. SELinux está habilitado por defecto, aplicando control de acceso obligatorio a los procesos de contenedores. Comparado con distribuciones de propósito general, la superficie de ataque se reduce significativamente al no incluir SSH por defecto, requiriendo acceso a través del contenedor de administración o SSM Session Manager.

Gestión de configuración basada en API y actualizaciones

La configuración de Bottlerocket no se realiza editando archivos de texto, sino a través de una API estructurada. Los parámetros del kernel, configuración de red y ajustes del runtime de contenedores se gestionan todos mediante la API, eliminando errores de configuración por erratas. Las actualizaciones del SO se aplican atómicamente mediante un mecanismo de partición A/B: se escribe la nueva versión en la partición inactiva y se cambia en el siguiente reinicio, con rollback automático a la versión anterior si falla. Esto permite actualizaciones de seguridad sin tiempo de inactividad. Libros sobre seguridad de contenedores (Amazon) permiten aprender sobre el endurecimiento de nodos de contenedores.

Ejecución en ECS y EKS - selección de variantes

Bottlerocket proporciona variantes optimizadas para cada orquestador. La variante aws-ecs-2 está optimizada para ECS con el agente ECS preconfigurado, mientras que la variante aws-k8s-1.x incluye kubelet y los componentes necesarios para EKS. La selección de variante se especifica al crear el grupo de nodos o la plantilla de lanzamiento, y no se puede cambiar después. En entornos EKS, la integración con Karpenter permite el aprovisionamiento automático de nodos Bottlerocket, combinando la seguridad del SO con la eficiencia del escalado. En cuanto a costos, Bottlerocket en sí es gratuito (solo se paga por la instancia EC2), y al tener una huella de SO más pequeña, el tiempo de arranque es más rápido que con Amazon Linux 2, lo que mejora la velocidad de escalado de Auto Scaling. La contrapartida es que la depuración es más difícil que con un SO de propósito general, requiriendo iniciar un contenedor de administración o conectarse vía SSM para la investigación de problemas.

共有するXB!