Salió minimalista LinuxBottlerocket, una distribución para contenedores en funcionamiento. Sus características más importantes

Salió minimalista LinuxBottlerocket, una distribución para contenedores en funcionamiento. Sus características más importantes

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 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 en marzo de 2020Ella 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 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.

Salió minimalista LinuxBottlerocket, una distribución para contenedores en funcionamiento. Sus características más importantes
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 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 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. 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!

Salió minimalista LinuxBottlerocket, una distribución para contenedores en funcionamiento. Sus características más importantes

Fuente: habr.com

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster