Se ha lanzado una distribución minimalista de Linux, Bottlerocket, para ejecutar contenedores. Lo más importante de él.

Se ha lanzado una distribución minimalista de Linux, Bottlerocket, para ejecutar contenedores. Lo más importante de él.

Amazonas anunció el sobre el lanzamiento final Cohete de botella — 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 de Amazon Web Services ya cuenta con Amazon Linux, que recientemente salió en su segunda versión: se trata de una distribución de propósito general que puede ejecutarse en un contenedor Docker o con Linux KVM, Microsoft Hyper-V y VMware. Hipervisores ESXi. Se optimizó para ejecutarse en la nube de AWS, pero con el lanzamiento de Bottlerocket, se anima a todos a actualizar a un nuevo sistema que sea más seguro, moderno y utilice menos recursos.

AWS anunció Bottlerocket en marzo de 2020. Inmediatamente admitió que este no es el primer “Linux para contenedores”, citando a 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 al ejecutar servicios de producción a la escala de Amazon durante mucho tiempo y la experiencia que hemos adquirido durante los últimos seis años sobre cómo ejecutar contenedores".

Minimalismo extremo

Linux está despojado de todo lo que no es necesario 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, 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 TUF (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 tmpfs 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.

Se ha lanzado una distribución minimalista de Linux, Bottlerocket, para ejecutar contenedores. Lo más importante de él.
Esquema de actualización de API

seguridad

Los contenedores se crean mediante mecanismos estándar del kernel de Linux: cgroups, namespaces y seccomp, y se utilizan como un sistema de control de acceso forzado, es decir, para un aislamiento adicional. SELinux 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 (dm-Verity), que comprueba la integridad de la partición raíz durante el arranque. AWS describe dm-verity como "una característica del kernel de Linux que proporciona comprobaciones de integridad para evitar que se ejecute malware en el sistema operativo, como por ejemplo sobrescribir el software central del sistema".

También hay un filtro en el sistema. eGMP (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
seguridad
Modo de fallo
Acceso a recursos

Usuario
desafío

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

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 fuente

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". escribir desarrolladores

lenguaje oxidado

La instrumentación del sistema operativo encima del kernel está escrita principalmente en Rust. Este lenguaje es por su naturaleza. reduce la probabilidad de acceso inseguro a la memoriay elimina las condiciones de carrera entre hilos.

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 (ejecutable independiente de la posición, 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. botella-contenedor-de-control-de-cohetes, 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 cerró el proyecto, 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 montarlo usted mismo 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 responder a informes de errores y solicitudes de funciones.

Sobre los derechos de publicidad

VDSina ofertas 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!

Se ha lanzado una distribución minimalista de Linux, Bottlerocket, para ejecutar contenedores. Lo más importante de él.

Fuente: habr.com

Añadir un comentario