Amazonas
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
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 /etc
montado con el sistema de archivos en la RAM /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 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.
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 (
También hay un filtro en el sistema.
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".
lenguaje oxidado
La instrumentación del sistema operativo encima del kernel está escrita principalmente en Rust. Este lenguaje es por su naturaleza.
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 (
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.
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
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
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
Fuente: habr.com