Sortie de Bottlerocket 1.2, une distribution basée sur des conteneurs isolés

La version de la distribution Linux Bottlerocket 1.2.0 est disponible, développée avec la participation d'Amazon pour le lancement efficace et sécurisé de conteneurs isolés. Les outils et 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 dans les clusters Amazon ECS, VMware et AWS EKS Kubernetes, ainsi que la création de versions et d'éditions personnalisées qui permettent l'utilisation de divers 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 :

  • Ajout de la prise en charge des miroirs de registre d'images de conteneurs.
  • Ajout de la possibilité d'utiliser des certificats auto-signés.
  • Option ajoutée pour configurer le nom d'hôte.
  • La version par défaut du conteneur administratif a été mise à jour.
  • Ajout des paramètres topologyManagerPolicy et topologyManagerScope pour kubelet.
  • Ajout de la prise en charge de la compression du noyau à l'aide de l'algorithme zstd.
  • La possibilité de charger des machines virtuelles dans VMware au format OVA (Open Virtualization Format) est fournie.
  • La version de distribution aws-k8s-1.21 a été mise à jour avec la prise en charge de Kubernetes 1.21. La prise en charge d'aws-k8s-1.16 a été interrompue.
  • Versions de package et dépendances mises à jour pour le langage Rust.

Source: opennet.ru

Ajouter un commentaire