
Amazonas sobre el lanzamiento final — una distribución especializada para ejecutar contenedores y gestionarlos de forma eficaz.
Bottlerocket (por cierto, el nombre que reciben los pequeños cohetes caseros de pólvora negra) no es el primer sistema operativo para contenedores, pero es probable que se generalice gracias a la integración predeterminada con los servicios de AWS. Aunque el sistema está centrado en la nube de Amazon, el código fuente abierto permite construirlo en cualquier lugar: localmente en un servidor, en una Raspberry Pi, en cualquier nube de la competencia e incluso en un entorno sin contenedores.
Este es un reemplazo completamente digno de la distribución CoreOS que Red Hat enterró.
De hecho, la división Amazon Web Services ya tiene Amazon Linux, que recientemente entró en su segunda versión: es una distribución de propósito general que se puede ejecutar en un contenedor Docker o con hipervisores Linux KVM, Microsoft Hyper-V y VMware ESXi. Estaba optimizado para la nube de AWS, pero con el lanzamiento de Bottlerocket, se anima a todos a actualizar a un nuevo sistema más seguro, moderno y que consume menos recursos.
AWS anunció Bottlerocket Ella admitió de inmediato que no era la primera vez.Linux para contenedores”, citando CoreOS, Rancher OS y Project Atomic como inspiración. Los desarrolladores escribieron que el sistema operativo es “el resultado de las lecciones aprendidas al operar servicios de producción a gran escala en Amazon durante mucho tiempo, y la experiencia adquirida en los últimos seis años sobre cómo ejecutar contenedores”.
Minimalismo extremo
Linux Según la empresa, este diseño, al prescindir de todo lo innecesario para el funcionamiento de los contenedores, 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, lo que reduce el uso de recursos. Básicamente, aquí todo funciona dentro de contenedores separados y el sistema subyacente está prácticamente desnudo.
Amazon también eliminó todos los shells e intérpretes, eliminando el riesgo de que se utilicen o de que los usuarios aumenten accidentalmente sus privilegios. En aras del minimalismo y la seguridad, la imagen base no incluye un shell de comandos, un servidor SSH ni lenguajes interpretados como Python. Las herramientas de administrador se colocan en un contenedor de servicios separado, que está deshabilitado de forma predeterminada.
El sistema se gestiona de dos formas: a través de API y orquestación.
En lugar de un administrador de paquetes que actualiza piezas de software individuales, Bottlerocket descarga una imagen completa del sistema de archivos y reinicia en ella. Si una carga falla, se revierte automáticamente y un error en la carga de trabajo puede desencadenar una reversión manualmente (comando a través de API).
Estructura (The Update Framework) descarga actualizaciones basadas en imágenes en particiones alternativas o "desmontadas". 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 sólo lectura y la partición /etc montado con el sistema de archivos en la RAM y restaura el estado original después de un reinicio. Modificación directa de archivos de configuración en /etc no compatible: para guardar la configuración, debe usar la API o mover la funcionalidad a contenedores separados.

Esquema de actualización de API
seguridad
Los contenedores se crean utilizando mecanismos estándar del kernel. Linux — cgroups, namespaces y seccomp, y como sistema de control de acceso obligatorio, es decir, para un aislamiento adicional, se utiliza en modo "hacer cumplir".
De forma predeterminada, las políticas están habilitadas para compartir recursos entre contenedores y el kernel. Los binarios están protegidos con banderas para evitar que los usuarios o programas los ejecuten. Y si accede al sistema de archivos, Bottlerocket ofrece una herramienta para comprobar y realizar un seguimiento de los cambios realizados.
El modo de "arranque verificado" se implementa a través de la función device-mapper-verity (), que verifica la integridad de la partición raíz durante el arranque. AWS describe dm-verity como una "función del kernel". Linuxque proporciona comprobaciones de integridad para evitar que el malware se ejecute en el sistema operativo, como por ejemplo, sobrescribiendo el software principal del sistema."
También hay un filtro en el sistema. (BPF extendido, ), 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
seguridad
Modo de fallo
Acceso a recursos
Usuario
desafío
sí
Cualquier
derechos de los usuarios
interrumpir la ejecución
llamada al sistema, falla
núcleo
desafío
no
estático
no
panico kernel
прямой
BPF
evento
sí
JIT, CO-RE
verificación, JIT
mensaje de error
ayudantes limitados
En qué se diferencia BPF del código de usuario normal o de nivel de kernel
AWS dijo que Bottlerocket "emplea un modelo operativo que mejora aún más la seguridad al evitar conexiones a servidores de producción con privilegios administrativos" y es "adecuado para grandes sistemas distribuidos donde el control sobre cada host individual es limitado".
Se proporciona un contenedor de administrador para los administradores del sistema. Pero AWS no cree que un administrador necesite trabajar con frecuencia dentro de Bottlerocket: "El acto de iniciar sesión en una instancia separada de Bottlerocket está destinado a operaciones poco frecuentes: depuración avanzada y resolución de problemas". desarrolladores
lenguaje oxidado
La instrumentación del sistema operativo encima del kernel está escrita principalmente en Rust. Este lenguaje es por su naturaleza. y .
Las banderas se aplican de forma predeterminada al construir --enable-default-pie и --enable-default-ssp para habilitar la aleatorización del espacio de direcciones de los archivos ejecutables (, PIE) y protección contra desbordamiento de pila.
Para paquetes C/C++, se incluyen indicadores adicionales -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.
Además de Rust y C/C++, algunos paquetes están escritos en Go.
Integración con 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 introducido la integración con su propio Enterprise Kubernetes Service (EKS). Las herramientas de orquestación vienen en un contenedor de control independiente. , que está habilitado de forma predeterminada y administrado a través de la API y el Agente de AWS SSM.
Será interesante ver si Bottlerocket despega, dado el fracaso de algunas iniciativas similares en el pasado. Por ejemplo, PhotonOS de VMware resultó no reclamado y RedHat compró CoreOS y , quien fue considerado un 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 prefieren Bottlerocket a otras distribuciones como CoreOS o Alpine. El sistema está inicialmente diseñado para funcionar con EKS y ECS, pero repetimos que esto no es necesario. En primer lugar, Bottlerocket puede y utilizarlo, por ejemplo, como una solución alojada. En segundo lugar, los usuarios de EKS y ECS seguirán teniendo la posibilidad de elegir su sistema operativo.
El código fuente de Bottlerocket está publicado en GitHub bajo la licencia Apache 2.0. Los desarrolladores ya .
Sobre los derechos de publicidad
VDSina ofertas . 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!
Fuente: habr.com
