Se ha lanzado un kit de distribución de Linux minimalista Bottlerocket para ejecutar contenedores. Lo mas importante de el





Amazon ha anunciado el lanzamiento final de Bottlerocket , una distribución especializada para ejecutar y administrar contenedores de manera eficiente.



Bottlerocket (por cierto, así es como llaman a los pequeños cohetes de pólvora casera) no es el primer sistema operativo para contenedores, pero es probable que se generalice debido a la integración predeterminada con los servicios de AWS. Aunque el sistema se centra en la nube de Amazon, el código abierto le permite crearlo en cualquier lugar: localmente en un servidor, en una Raspberry Pi, en cualquier nube de la competencia e incluso en un entorno sin contenedores.



Es un reemplazo bastante digno para la distribución de CoreOS que Red Hat ha enterrado.



En general, Amazon Web Services ya tiene Amazon Linux, que recientemente salió en su segunda versión: es una distribución de propósito general que se puede ejecutar en un contenedor Docker o con hipervisores KVM de Linux, Microsoft Hyper-V y VMware ESXi. Se ha optimizado para ejecutarse en la nube de AWS, pero con Bottlerocket, se anima a todos a actualizar a un nuevo sistema que es más seguro, más moderno y utiliza menos recursos.



AWS anuncia Bottlerocket en marzo de 2020... Inmediatamente reconoció que este no era el primer "Linux para contenedores", y citó CoreOS, Rancher OS y Project Atomic como fuentes de inspiración. Los desarrolladores escribieron que el sistema operativo es "el resultado de las lecciones que hemos aprendido a lo largo de los servicios de producción a la escala de Amazon, y la experiencia que hemos adquirido durante los últimos seis años sobre cómo ejecutar contenedores".



Minimalismo extremo



Linux ha sido despojado de todo lo que no se necesita para ejecutar contenedores. Este diseño, según la empresa, reduce la superficie de ataque.



Esto significa que se instalan menos paquetes en el sistema base, lo que facilita el mantenimiento y la actualización del sistema operativo, y también reduce la probabilidad de problemas debido a dependencias y reduce el uso de recursos. Básicamente, todo aquí funciona dentro de contenedores separados y el sistema base está prácticamente vacío.



Amazon también ha eliminado todos los shells e intérpretes, eliminando el riesgo de que los usuarios los usen o escalen accidentalmente los privilegios. La imagen base carece de un shell de comandos, un servidor SSH y lenguajes interpretados como Python en aras del minimalismo y la seguridad. Las herramientas de administrador se han movido a un contenedor de servicios separado, que está deshabilitado de forma predeterminada.



La gestión del sistema se proporciona de dos formas: mediante API y orquestación.



En lugar de un administrador de paquetes que actualiza piezas individuales de software, Bottlerocket descarga una imagen completa del sistema de archivos y la vuelve a cargar. Si la descarga falla, se revierte automáticamente y una falla en la carga de trabajo puede desencadenar una reversión manual (comando a través de API).



Framework TUF (la Actualización de The Framework) descarga actualizaciones basadas en las imágenes en las secciones alternativa o "desmontar". Se asignan dos particiones de disco para el sistema, una de las cuales contiene el sistema activo y la actualización se copia en la segunda. En este caso, la partición raíz se monta en modo de solo lectura y la partición /etcse monta con el sistema de archivos en la RAM tmpfsy restaura su estado original después de reiniciar. /etcNo se admite la modificación directa de archivos de configuración : para guardar la configuración, utilice la API o mueva la funcionalidad a contenedores separados.





Esquema de actualización de API



La seguridad



Los contenedores se crean mediante mecanismos estándar del kernel de Linux: cgroups, namespaces y seccomp, y SELinux se usa en modo " forzado " como un sistema de control de acceso forzado, es decir, para aislamiento adicional .



De forma predeterminada, las políticas están habilitadas para compartir recursos entre contenedores y el kernel. Los binarios están protegidos por banderas para evitar que los usuarios o programas los ejecuten. Y si alguien ha llegado al sistema de archivos, Bottlerocket ofrece una herramienta para verificar y rastrear cualquier cambio realizado.



El modo "arranque verificado" se implementa a través de la función device-mapper-verity ( dm-verity), que verifica la integridad de la partición raíz en el momento del arranque. AWS describe dm-verity como "una característica del kernel de Linux que proporciona verificación de integridad para evitar que se ejecute malware en el sistema operativo, como sobrescribir el software del sistema subyacente".



El sistema también tiene un eBPF (BPF extendido, desarrollado por Alexey Starovoitov ), que permite reemplazar los módulos del kernel con programas BPF más seguros para operaciones del sistema de bajo nivel.



Modelo de ejecución Usuario definido Compilacion La seguridad Modo de fallo Acceso a recursos
Usuario tarea si alguna derechos de usuario interrumpir la ejecución llamada al sistema, falla
Núcleo tarea No estático No núcleo de pánico Derecho
BPF evento si JIT, CO-RE verificación, JIT mensaje de error ayudantes limitados


A diferencia de BPF del código de nivel de usuario o de kernel normal, una fuente de



AWS declaró que Bottlerocket "adopta un modelo operativo que mejora aún más la seguridad al evitar que los privilegios de administrador se conecten a servidores de producción" y "es adecuado para grandes sistemas distribuidos donde el control es limitado. por encima de cada anfitrión individual ".



Se proporciona un contenedor de administrador para los administradores del sistema. Pero AWS no cree que los administradores a menudo tengan que trabajar dentro de Bottlerocket: "El acto de iniciar sesión en una instancia de Bottlerocket separada es para operaciones poco frecuentes: depuración avanzada y resolución de problemas", escriben los desarrolladores.



El idioma de Rust



Las herramientas del sistema operativo en la parte superior del kernel están escritas principalmente en Rust. Este lenguaje por su naturaleza reduce las posibilidades de acceso inseguro a la memoria y también elimina las condiciones de carrera entre subprocesos .



Si se aplican los indicadores de compilación predeterminados --enable-default-piey --enable-default-ssppara habilitar la aleatorización del espacio de direcciones de los archivos ejecutables ( independientemente de la posición del ejecutable , PIE) y la protección contra desbordamiento de pila.



Para los paquetes a C / C ++ incluye además banderas -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONSy -fstack-clash-protection.



Además de Rust y C / C ++, algunos paquetes están escritos en el lenguaje Go.



Integración con los servicios de AWS



La diferencia con sistemas operativos de contenedores similares es que Amazon ha optimizado Bottlerocket para ejecutarse en AWS e integrarse con otros servicios de AWS.



El orquestador de contenedores más popular es Kubernetes, por lo que AWS ha implementado la integración con su propio Enterprise Kubernetes Service (EKS). Las herramientas de orquestación vienen en un contenedor de control de cohetes de botella separado , que está habilitado de forma predeterminada y se administra a través de la API y el agente de AWS SSM.



Será interesante ver si Bottlerocket despega dado el fracaso de algunas de estas iniciativas en el pasado. Por ejemplo, PhotonOS de Vmware cerró, y RedHat compró CoreOS y cerró el proyecto que se consideraba pionero en el campo.



La integración de Bottlerocket en los servicios de AWS hace que este sistema sea único a su manera. Esta es quizás la razón principal por la que algunos usuarios pueden preferir Bottlerocket a otras distribuciones como CoreOS o Alpine. El sistema fue diseñado originalmente para funcionar con EKS y ECS, pero nuevamente, esto no es necesario. Primero, Bottlerocket puede construirse de forma independiente y usarse, por ejemplo, como una solución alojada. En segundo lugar, los usuarios de EKS y ECS aún podrán elegir el sistema operativo.



El código fuente de Bottlerocket se publica en GitHub bajo la licencia Apache 2.0. Los desarrolladores ya están respondiendo a informes de errores y solicitudes de funciones .






Publicidad



VDSina ofrece VDS con pago diario . Es posible instalar cualquier sistema operativo, incluso desde su propia imagen. ¡Cada servidor está conectado a un canal de Internet de 500 Megabits y está protegido contra ataques DDoS de forma gratuita!






All Articles