Disponible Bottlerocket 1.8, una distribución basada en contenedores aislados

Se ha publicado el lanzamiento de la distribución Linux Bottlerocket 1.8.0, desarrollada con la participación de Amazon para ejecutar contenedores aislados de forma eficaz y segura. El kit de herramientas y los componentes de control de la distribución están escritos en Rust y distribuidos bajo las licencias MIT y Apache 2.0. Admite la ejecución de Bottlerocket en clústeres de Amazon ECS, VMware y AWS EKS Kubernetes, así como la creación de compilaciones y ediciones personalizadas que permiten diferentes herramientas de orquestación y tiempo de ejecución para contenedores.

La distribución proporciona una imagen indivisible del sistema actualizada de forma atómica y automática que incluye el kernel de Linux y un entorno de sistema mínimo que incluye solo los componentes necesarios para ejecutar contenedores. El entorno incluye el administrador del sistema systemd, la biblioteca Glibc, la herramienta de compilación Buildroot, el cargador de arranque GRUB, el configurador de red malvado, el tiempo de ejecución de contenedor aislado en contenedor, la plataforma de orquestación de contenedores Kubernetes, el autenticador aws-iam y el agente de Amazon ECS. .

Las herramientas de orquestación de contenedores vienen en un contenedor de administración independiente que está habilitado de forma predeterminada y administrado a través de la API y el Agente de AWS SSM. La imagen base carece de un shell de comandos, un servidor SSH y lenguajes interpretados (por ejemplo, no hay Python o Perl); las herramientas administrativas y de depuración se mueven a un contenedor de servicios separado, que está deshabilitado de forma predeterminada.

La diferencia clave con distribuciones similares como Fedora CoreOS, CentOS/Red Hat Atomic Host es el enfoque principal en proporcionar la máxima seguridad en el contexto de fortalecer la protección del sistema contra posibles amenazas, complicando la explotación de vulnerabilidades en los componentes del sistema operativo y aumentando el aislamiento de los contenedores. Los contenedores se crean utilizando los mecanismos habituales del kernel de Linux: cgroups, espacios de nombres y seccomp. Para un aislamiento adicional, la distribución utiliza SELinux en modo "impuesto".

La partición raíz se monta en modo de solo lectura y la partición con la configuración /etc se monta en tmpfs y se restaura a su estado original después de reiniciar. No se admite la modificación directa de archivos en el directorio /etc, como /etc/resolv.conf y /etc/containerd/config.toml; para guardar la configuración de forma permanente, debe usar la API o mover la funcionalidad a contenedores separados. Para la verificación criptográfica de la integridad de la partición raíz, se utiliza el módulo dm-verity y, si se detecta un intento de modificar datos en el nivel del dispositivo de bloque, el sistema se reinicia.

La mayoría de los componentes del sistema están escritos en Rust, que proporciona herramientas seguras para la memoria para evitar vulnerabilidades causadas por direccionar un área de memoria después de haber sido liberada, desreferenciar punteros nulos y desbordamientos del búfer. Al compilar, los modos de compilación "--enable-default-pie" y "--enable-default-ssp" se utilizan de forma predeterminada para habilitar la aleatorización del espacio de direcciones de los archivos ejecutables (PIE) y la protección contra desbordamientos de pila mediante la sustitución de etiquetas canarias. Para paquetes escritos en C/C++, los indicadores "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" y "-fstack-clash" son adicionales incluido -protección.

En el nuevo lanzamiento:

  • Se ha actualizado el contenido de los contenedores administrativos y de control.
  • El tiempo de ejecución para contenedores aislados se actualizó a la rama containerd 1.6.x.
  • Los procesos en segundo plano que coordinan el trabajo de los contenedores se reinician después de cambios en el almacén de certificados.
  • Se proporciona la capacidad de configurar los parámetros de arranque del kernel a través de la sección Configuración de arranque.
  • Habilitado para ignorar bloques vacíos al verificar la integridad de la partición raíz usando dm-verity.
  • Proporcionó la capacidad de vincular estáticamente nombres de host en /etc/hosts.
  • Se ha proporcionado la capacidad de generar una configuración de red utilizando la utilidad netdog (se ha agregado el comando generate-net-config).
  • Se proponen nuevas opciones de distribución con soporte para Kubernetes 1.23. Se redujo el tiempo de inicio de los pods en Kubernetes al deshabilitar el modo configMapAndSecretChangeDetectionStrategy. Se agregaron nuevas configuraciones de kubelet: ID de proveedor y podPidsLimit.
  • Se ha propuesto una nueva distribución 'aws-ecs-1-nvidia' para Amazon Elastic Container Service (Amazon ECS) que viene con controladores NVIDIA.
  • Se agregó soporte para dispositivos de almacenamiento Microchip Smart Storage y MegaRAID SAS. Soporte ampliado para tarjetas Ethernet basadas en chips Broadcom.
  • Versiones actualizadas de paquetes y dependencias para los lenguajes Go y Rust, así como versiones de paquetes con programas de terceros. El SDK de Bottlerocket se ha actualizado a la versión 0.26.0.

Fuente: opennet.ru

Añadir un comentario