Está disponible el lanzamiento de la distribución de Linux Bottlerocket 1.2.0, desarrollada en colaboración con Amazon para un despliegue eficiente y seguro de contenedores aislados. Las herramientas y componentes de gestión de la distribución están escritas en Rust y se distribuyen bajo licencias MIT y Apache 2.0. Bottlerocket es compatible con clústeres de Amazon ECS, VMware y AWS EKS Kubernetes, así como con la creación de compilaciones y ediciones personalizadas que permiten el uso de diversas herramientas de orquestación y runtime para contenedores.
La distribución proporciona una imagen del sistema atómica y actualizable automáticamente, que incluye el núcleo de Linux y un entorno de sistema mínimo, conteniendo solo los componentes necesarios para ejecutar contenedores. En el entorno se utilizan el gestor de sistemas systemd, la biblioteca Glibc, la herramienta de construcción Buildroot, el cargador de arranque GRUB, el configurador de red wicked, el runtime para contenedores aislados containerd, la plataforma de orquestación de contenedores Kubernetes, el autenticador aws-iam-authenticator y el agente de Amazon ECS.
Las herramientas para la orquestación de contenedores se suministran en un contenedor de gestión separado, que está habilitado por defecto y se gestiona a través de la API y AWS SSM Agent. La imagen base no incluye un intérprete de comandos. servidor SSH y lenguajes interpretados (por ejemplo, no hay Python o Perl) — las herramientas para administradores y las herramientas de depuración se han trasladado a un contenedor de servicio separado, que está deshabilitado por defecto.
La principal diferencia con otras distribuciones similares, como Fedora CoreOS y CentOS/Red Hat Atomic Host, es la orientación primaria hacia la maximización de la seguridad en el contexto de fortalecer la protección del sistema contra posibles amenazas, complicar la explotación de vulnerabilidades en los componentes del sistema operativo y aumentar la aislamiento de los contenedores. Los contenedores se crean mediante los mecanismos estándar del núcleo de Linux: cgroups, espacios de nombres y seccomp. Para una mayor isolación, la distribución utiliza SELinux en modo "enforcing".
La partición raíz se monta en modo solo lectura, y la partición de configuración /etc se monta en tmpfs y se restablece a su estado original después de un reinicio. No se admite la modificación directa de archivos en el directorio /etc, como /etc/resolv.conf y /etc/containerd/config.toml; para guardar configuraciones de manera persistente, se deben utilizar las API o trasladar la funcionalidad a contenedores separados. Se utiliza el módulo dm-verity para la verificación criptográfica de la integridad de la partición raíz, y si se detecta un intento de modificar datos a nivel de dispositivo de bloque, el sistema se reinicia.
La mayoría de los componentes del sistema están escritos en Rust, que proporciona herramientas para trabajar de manera segura con la memoria, evitando vulnerabilidades causadas por el acceso a áreas de memoria después de haber sido liberadas, la desreferenciación de punteros nulos y sobrepasar los límites del búfer. Al compilar por defecto, se utilizan los modos de compilación "--enable-default-pie" y "--enable-default-ssp" para habilitar la aleatorización del espacio de direcciones de archivos ejecutables (PIE) y protección contra desbordamientos de pila mediante la inserción de marcas canarias. Para paquetes escritos en C/C++, se incluyen además las banderas "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" y "-fstack-clash-protection".
En esta nueva versión:
- Se agregó soporte para espejos del registro de imágenes de contenedores.
- Se agregó la capacidad de usar certificados autofirmados.
- Se añadió un parámetro para configurar el nombre del host.
- Se actualizó la versión del contenedor administrativo ofrecido por defecto.
- Se agregaron configuraciones topologyManagerPolicy y topologyManagerScope para kubelet.
- Se añadió soporte para compresión del núcleo utilizando el algoritmo zstd.
- Se proporciona la capacidad de carga en VMware máquinas virtuales en formato OVA (Open Virtualization Format).
- Se ha actualizado la variante del distribuidor aws-k8s-1.21 con soporte para Kubernetes 1.21. Se ha dejado de dar soporte a aws-k8s-1.16.
- Se han actualizado las versiones de los paquetes y dependencias para el lenguaje Rust.
Fuente: opennet.ru
