Bottlerocket 1.8 est disponible, une distribution basée sur des conteneurs isolés

La version de la distribution Linux Bottlerocket 1.8.0 a été publiée, développée avec la participation d'Amazon pour exécuter efficacement et en toute sécurité des conteneurs isolés. La boîte à outils et les composants de contrôle de la distribution sont écrits en Rust et distribués sous les licences MIT et Apache 2.0. Il prend en charge l'exécution de Bottlerocket sur les clusters Amazon ECS, VMware et AWS EKS Kubernetes, ainsi que la création de versions et d'éditions personnalisées qui permettent différents outils d'orchestration et d'exécution pour les conteneurs.

La distribution fournit une image système indivisible mise à jour de manière atomique et automatique qui inclut le noyau Linux et un environnement système minimal qui inclut uniquement les composants nécessaires à l'exécution des conteneurs. L'environnement comprend le gestionnaire de système systemd, la bibliothèque Glibc, l'outil de construction Buildroot, le chargeur de démarrage GRUB, le configurateur de réseau méchant, le runtime de conteneur isolé containerd, la plate-forme d'orchestration de conteneur Kubernetes, l'aws-iam-authenticator et l'agent Amazon ECS. .

Les outils d'orchestration de conteneurs sont fournis dans un conteneur de gestion distinct qui est activé par défaut et géré via l'API et l'agent AWS SSM. L'image de base manque d'un shell de commande, d'un serveur SSH et de langages interprétés (par exemple, pas de Python ou de Perl) - les outils d'administration et de débogage sont déplacés vers un conteneur de service séparé, qui est désactivé par défaut.

La principale différence avec des distributions similaires telles que Fedora CoreOS, CentOS/Red Hat Atomic Host est l'objectif principal de fournir une sécurité maximale dans le contexte du renforcement de la protection du système contre d'éventuelles menaces, compliquant l'exploitation des vulnérabilités dans les composants du système d'exploitation et augmentant l'isolation des conteneurs. Les conteneurs sont créés en utilisant les mécanismes habituels du noyau Linux - cgroups, namespaces et seccomp. Pour une isolation supplémentaire, la distribution utilise SELinux en mode "enforcing".

La partition racine est montée en mode lecture seule et la partition avec les paramètres /etc est montée dans tmpfs et restaurée à son état d'origine après un redémarrage. La modification directe des fichiers dans le répertoire /etc, tels que /etc/resolv.conf et /etc/containerd/config.toml, n'est pas prise en charge - pour enregistrer définitivement les paramètres, vous devez utiliser l'API ou déplacer la fonctionnalité vers des conteneurs séparés. Pour la vérification cryptographique de l'intégrité de la partition racine, le module dm-verity est utilisé, et si une tentative de modification des données au niveau du périphérique bloc est détectée, le système redémarre.

La plupart des composants système sont écrits en Rust, qui fournit des outils sécurisés en mémoire pour éviter les vulnérabilités causées par l'adressage d'une zone mémoire après sa libération, le déréférencement des pointeurs nuls et les dépassements de mémoire tampon. Lors de la construction, les modes de compilation "--enable-default-pie" et "--enable-default-ssp" sont utilisés par défaut pour activer la randomisation de l'espace d'adressage des fichiers exécutables (PIE) et la protection contre les débordements de pile via la substitution d'étiquette canary. Pour les packages écrits en C/C++, les drapeaux "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" et "-fstack-clash" sont en plus inclus -protection.

Dans la nouvelle version :

  • Le contenu des conteneurs d'administration et de contrôle a été mis à jour.
  • Le runtime pour les conteneurs isolés a été mis à jour vers la branche containersd 1.6.x.
  • Garantit que les processus en arrière-plan qui coordonnent le fonctionnement des conteneurs sont redémarrés après des modifications apportées au magasin de certificats.
  • Il est possible de définir les paramètres de démarrage du noyau via la section Configuration de démarrage.
  • Activation de l'ignorance des blocs vides lors de la surveillance de l'intégrité de la partition racine à l'aide de dm-verity.
  • La possibilité de lier statiquement les noms d'hôtes dans /etc/hosts a été fournie.
  • La possibilité de générer une configuration réseau à l'aide de l'utilitaire netdog a été fournie (la commande generate-net-config a été ajoutée).
  • De nouvelles options de distribution prenant en charge Kubernetes 1.23 ont été proposées. Le temps de démarrage des pods dans Kubernetes a été réduit en désactivant le mode configMapAndSecretChangeDetectionStrategy. Ajout de nouveaux paramètres kubelet : supplier-id et podPidsLimit.
  • Une nouvelle version du kit de distribution « aws-ecs-1-nvidia » pour Amazon Elastic Container Service (Amazon ECS), fourni avec les pilotes NVIDIA, a été proposée.
  • Ajout de la prise en charge des périphériques de stockage Microchip Smart Storage et MegaRAID SAS. La prise en charge des cartes Ethernet sur les puces Broadcom a été étendue.
  • Versions de packages et dépendances mises à jour pour les langages Go et Rust, ainsi que versions de packages avec des programmes tiers. Le SDK Bottlerocket a été mis à jour vers la version 0.26.0.

Source: opennet.ru

Ajouter un commentaire