Un nouveau micro-distribution Linux Bottlerocket pour le lancement de conteneurs. Ce qu'il faut savoir à son sujet

Un nouveau micro-distribution Linux Bottlerocket pour le lancement de conteneurs. Ce qu'il faut savoir à son sujet

L'entreprise Amazon a annoncé sur la version finale Bottlerocket — une distribution spécialisée pour exécuter des conteneurs et les gérer efficacement.

Bottlerocket (d'ailleurs, c'est ainsi que l'on appelle les petites fusées artisanales à poudre noire) n'est pas le premier système d'exploitation pour conteneurs, mais il est fort probable qu'il connaisse une large adoption grâce à son intégration par défaut avec les services AWS. Bien que le système soit conçu pour le cloud d'Amazon, son code source ouvert permet de l'installer partout : localement sur un serveur, sur Raspberry Pi, sur n'importe quel cloud concurrent, et même dans un environnement sans conteneurs.

C'est un remplacement tout à fait respectable pour la distribution CoreOS, qui a été abandonnée par Red Hat.

En fait, la division Amazon Web Services a déjà Amazon Linux, qui vient récemment de sortir en version 2 : c'est une distribution à usage général qui peut être exécutée dans un conteneur Docker ou avec les hyperviseurs Linux KVM, Microsoft Hyper-V et VMware ESXi. Elle a été optimisée pour fonctionner dans le cloud AWS, mais avec le lancement de Bottlerocket, il est recommandé à tous de migrer vers ce nouveau système, qui est plus sûr, moderne et consomme moins de ressources.

AWS a annoncé Bottlerocket en mars 2020. Ils ont immédiatement reconnu que ce n'était pas le premier « Linux pour conteneurs », mentionnant comme sources d'inspiration CoreOS, Rancher OS et Project Atomic. Les développeurs ont indiqué que le système d'exploitation est le « résultat des leçons que nous avons tirées de nombreuses années de fonctionnement des services à l'échelle d'Amazon, et de l'expérience que nous avons acquise ces six dernières années sur la façon d'exécuter des conteneurs ».

Minimalisme extrême

Linux est épuré de tout ce qui n'est pas nécessaire à l'exécution des conteneurs. Ce design, selon l'entreprise, réduit la surface d'attaque.

Cela signifie que le système de base installe moins de paquets, ce qui simplifie la maintenance et les mises à jour du système d'exploitation, tout en réduisant le risque de problèmes dus aux dépendances et en diminuant l'utilisation des ressources. En principe, tout fonctionne ici à l'intérieur de conteneurs distincts, et le système de base est pratiquement nu.

Amazon a également supprimé tous les shells et interprètes, éliminant le risque de leur utilisation ou d'une élévation accidentelle des privilèges par les utilisateurs. L'image de base est minimaliste et sécurisée, sans shell de commande, serveur SSH ni langages interprétés comme Python. Les outils pour les administrateurs sont déplacés vers un conteneur de service distinct, qui est désactivé par défaut.

La gestion du système est prévue de deux manières : via l'API et l'orchestration.

Au lieu d'un gestionnaire de paquets qui met à jour des parties individuelles du logiciel, Bottlerocket télécharge une image complète du système de fichiers et redémarre avec celle-ci. En cas d'échec de démarrage, il revient automatiquement à l'état précédent, et un échec de charge de travail peut également initier un retour en arrière manuellement (commande via l'API).

Framework TUF (The Update Framework) charge les mises à jour sur la base d'images dans des partitions alternatives ou « démontées ». Deux partitions de disque sont allouées au système, l'une contenant le système actif et l'autre recevant la mise à jour. Pendant ce temps, la partition racine est montée en mode lecture seule, tandis que la partition /etc est montée avec le système de fichiers en mémoire vive tmpfs et restaure l'état d'origine après le redémarrage. La modification directe des fichiers de configuration dans /etc n'est pas prise en charge : pour sauvegarder les paramètres, il faut utiliser l'API ou déplacer la fonctionnalité vers des conteneurs séparés.

Un nouveau micro-distribution Linux Bottlerocket pour le lancement de conteneurs. Ce qu'il faut savoir à son sujet
Le schéma de mise à jour via l'API

Sécurité

Les conteneurs sont créés par les mécanismes natifs du noyau Linux — cgroups, espaces de noms et seccomp, et un système de contrôle d'accès obligatoire est utilisé pour une isolation supplémentaire. SELinux en mode "enforcing".

Par défaut, des politiques sont activées pour la séparation des ressources entre les conteneurs et le noyau. Les binaires sont protégés par des drapeaux afin que les utilisateurs ou les programmes ne puissent pas les exécuter. Et si quelqu'un accède au système de fichiers, Bottlerocket propose un outil pour vérifier et suivre toute modification apportée.

Le mode de « vérification du démarrage » est mis en œuvre via la fonction device-mapper-verity (dm-verity), qui vérifie l'intégrité de la partition racine pendant le démarrage. AWS décrit dm-verity comme « une fonction du noyau Linux garantissant l'intégrité pour empêcher les logiciels malveillants de fonctionner dans le système d'exploitation, comme la réécriture du logiciel système principal ».

Un filtre est également présent dans le système eBPF (extended BPF, développé par Alexey Starovoitov), qui permet de remplacer les modules du noyau par des programmes BPF plus sûrs pour les opérations système de bas niveau.

Modèle d'exécution
Défini par l'utilisateur
Compilation
Sécurité
Mode de défaillance
Accès aux ressources

Utilisateur
tâche
oui
tout
droits des utilisateurs
interruption de l'exécution
appel système, fault

Le noyau
tâche
non
statique
non
panique du noyau
direct

BPF
événement
oui
JIT, CO-RE
vérification, JIT
message d'erreur
helpers limités

La différence entre BPF et le code normal au niveau de l'utilisateur ou du noyau, source

AWS a déclaré que Bottlerocket « applique un modèle opérationnel qui améliore encore la sécurité en empêchant la connexion aux serveurs de production avec des privilèges d'administrateur », et « convient aux grands systèmes répartis où le contrôle sur chaque hôte individuel est limité ».

Un conteneur Administrateur est prévu pour les administrateurs système. Mais AWS ne pense pas que l'administrateur devra souvent travailler à l'intérieur de Bottlerocket : « L'acte de se connecter à une instance Bottlerocket individuelle est destiné à des opérations peu fréquentes : débogage avancé et dépannage », — écrivent les développeurs.

Langage Rust

Les outils du système d'exploitation au-dessus du noyau sont principalement écrits en Rust. Ce langage réduit par nature la probabilité d'accès non sécurisé à la mémoire, ainsi que élimine les conditions de course entre les threads.

Lors de la compilation par défaut, les drapeaux --enable-default-pie et --enable-default-ssp sont appliqués pour activer la randomisation de l'espace d'adressage des exécutables (exécutable indépendant de la position, PIE) et la protection contre le dépassement de pile.

Pour les paquets en C/C++, des drapeaux supplémentaires sont activés -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS et -fstack-clash-protection.

En plus de Rust et C/C++, certains paquets sont écrits en Go.

Intégration avec les services AWS

La différence avec d'autres systèmes d'exploitation conteneurisés est qu'Amazon a optimisé Bottlerocket pour fonctionner sur AWS et s'intégrer à d'autres services AWS.

Le gestionnaire de conteneurs le plus populaire est Kubernetes, c'est pourquoi AWS a intégré son propre service Kubernetes Enterprise (EKS). Les outils d'orchestration sont fournis dans un conteneur de gestion distinct. bottlerocket-control-container, qui est activé par défaut et géré via l'API et l'AWS SSM Agent.

Il sera intéressant de voir si Bottlerocket décolle, compte tenu de l'échec de certaines initiatives similaires par le passé. Par exemple, PhotonOS de VMware s'est avéré peu demandé, et RedHat a acquis CoreOS et a fermé le projet, qui était considéré comme un pionnier dans ce domaine.

L'intégration de Bottlerocket dans les services AWS rend ce système unique en son genre. C'est peut-être la principale raison pour laquelle certains utilisateurs pourraient préférer Bottlerocket à d'autres distributions, telles que CoreOS ou Alpine. Le système est à l'origine conçu pour fonctionner avec EKS et ECS, mais il convient de rappeler que ce n'est pas obligatoire. Tout d'abord, Bottlerocket peut être construit soi-même et utilisé, par exemple, comme solution hébergée. Deuxièmement, les utilisateurs d'EKS et d'ECS conserveront toujours la possibilité de choisir leur OS.

Le code source de Bottlerocket est publié sur GitHub sous la licence Apache 2.0. Les développeurs répondent déjà aux rapports de bogues et aux demandes de fonctionnalités.

En tant que publicité

VDSina propose VDS avec paiement quotidien. Il est possible d'installer n'importe quel système d'exploitation, y compris à partir de votre propre image. Chaque serveur est connecté à un canal Internet de 500 Mégabits et est protégé gratuitement contre les attaques DDoS !

Un nouveau micro-distribution Linux Bottlerocket pour le lancement de conteneurs. Ce qu'il faut savoir à son sujet

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster