
L'entreprise Amazon sur la version finale — 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 . 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 (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 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.

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. 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 (), 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 (extended BPF, ), 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,
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 », — 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 , ainsi que .
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 (, 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. , 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 , 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 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à .
En tant que publicité
VDSina propose . 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 !
Source : habr.com
