Lanzamiento de Bottlerocket 1.2, una distribución basada en contenedores aislados

Ya está disponible el lanzamiento de la distribución Linux Bottlerocket 1.2.0, desarrollada con la participación de Amazon para el lanzamiento eficiente y seguro de contenedores aislados. Las 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 el uso de diversas 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 agregó soporte para espejos de registro de imágenes de contenedores.
  • Se agregó la capacidad de utilizar certificados autofirmados.
  • Opción agregada para configurar el nombre de host.
  • Se actualizó la versión predeterminada del contenedor administrativo.
  • Se agregaron configuraciones de topologyManagerPolicy y topologyManagerScope para kubelet.
  • Se agregó soporte para la compresión del kernel usando el algoritmo zstd.
  • Se proporciona la capacidad de cargar máquinas virtuales en VMware en formato OVA (Open Virtualization Format).
  • La versión de distribución aws-k8s-1.21 se actualizó con soporte para Kubernetes 1.21. Se ha interrumpido la compatibilidad con aws-k8s-1.16.
  • Versiones de paquetes actualizadas y dependencias para el lenguaje Rust.

Fuente: opennet.ru

Añadir un comentario