Amazon a annoncé la sortie finale de Bottlerocket , une distribution spécialisée pour exécuter et gérer efficacement les conteneurs.
Bottlerocket (au fait, c'est ainsi qu'ils appellent de petites fusées à poudre noire faites maison) n'est pas le premier système d'exploitation pour conteneurs, mais il est probable qu'il se généralisera en raison de l'intégration par défaut avec les services AWS. Bien que le système se concentre sur le cloud d'Amazon, l'open source vous permet de le construire n'importe où: localement sur un serveur, sur un Raspberry Pi, dans n'importe quel cloud concurrent, et même dans un environnement sans conteneur.
C'est un bon remplacement pour la distribution CoreOS que Red Hat a enterrée.
En général, Amazon Web Services dispose déjà d'Amazon Linux, qui est récemment sorti dans sa deuxième version: il s'agit d'une distribution à usage général qui peut être exécutée dans un conteneur Docker ou avec des hyperviseurs KVM Linux, Microsoft Hyper-V et VMware ESXi. Il a été optimisé pour fonctionner sur le cloud AWS, mais avec Bottlerocket, tout le monde est encouragé à passer à un nouveau système plus sûr, plus moderne et utilisant moins de ressources.
AWS annonce Bottlerocket en mars 2020... Elle a immédiatement reconnu que ce n'était pas le premier "Linux pour conteneurs", citant CoreOS, Rancher OS et Project Atomic comme sources d'inspiration. Les développeurs ont écrit que le système d'exploitation est "le résultat des leçons que nous avons apprises au fil des services de production à l'échelle d'Amazon, et de l'expérience que nous avons acquise au cours des six dernières années sur la façon d'exécuter des conteneurs".
Minimalisme extrême
Linux a été dépouillé de tout ce qui n'est pas nécessaire pour exécuter des conteneurs. Cette conception, selon l'entreprise, réduit la surface d'attaque.
Cela signifie que moins de packages sont installés sur le système de base, ce qui facilite la maintenance et la mise à jour du système d'exploitation, réduit également la probabilité de problèmes dus aux dépendances et réduit l'utilisation des ressources. Fondamentalement, tout ici fonctionne dans des conteneurs séparés et le système de base est pratiquement nu.
Amazon a également supprimé tous les shells et interprètes, éliminant le risque que les utilisateurs les utilisent ou augmentent accidentellement les privilèges. L'image de base manque d'un shell de commande, d'un serveur SSH et de langages interprétés comme Python pour des raisons de minimalisme et de sécurité. Les outils d'administration ont été déplacés vers un conteneur de services distinct, qui est désactivé par défaut.
La gestion du système est fournie de deux manières: via l'API et l'orchestration.
Au lieu d'un gestionnaire de packages qui met à jour des logiciels individuels, Bottlerocket télécharge une image complète du système de fichiers et la recharge. Si le téléchargement échoue, il est automatiquement annulé et une panne de charge de travail peut déclencher une annulation manuelle (commande via l'API).
Le TUF (The Update Framework) télécharge des mises à jour basées sur des images vers des partitions alternatives ou «non montées». Deux partitions de disque sont allouées au système, dont l'une contient le système actif, et la mise à jour est copiée sur la seconde. Dans ce cas, la partition racine est montée en mode lecture seule et la partition
/etc
est montée avec le système de fichiers dans la RAM tmpfset restaure son état d'origine après le redémarrage. La modification directe des fichiers de configuration n'est /etc
pas prise en charge: pour enregistrer les paramètres, utilisez l'API ou déplacez la fonctionnalité dans des conteneurs séparés.
Schéma de mise à jour de l'API
sécurité
Les conteneurs sont créés par les mécanismes standards du noyau Linux - cgroups, namespaces et seccomp, et SELinux est utilisé en mode "enforcing" comme système de contrôle d'accès forcé, c'est-à-dire pour une isolation supplémentaire .
Par défaut, les stratégies sont activées pour le partage des ressources entre les conteneurs et le noyau. Les binaires sont protégés par des indicateurs pour empêcher les utilisateurs ou les programmes de les exécuter. Et si quelqu'un a accédé au système de fichiers, Bottlerocket propose un outil pour vérifier et suivre les modifications apportées.
Le mode "démarrage vérifié" est implémenté via la fonction device-mapper-verity ( dm-verity), qui vérifie l'intégrité de la partition racine au moment du démarrage. AWS décrit dm-verity comme «une fonctionnalité du noyau Linux qui fournit une vérification d'intégrité pour empêcher les logiciels malveillants de s'exécuter sur le système d'exploitation, comme l'écrasement du logiciel système sous-jacent».
Le système dispose également d'un eBPF (BPF étendu, 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 de l'utilisateur | interrompre l'exécution | appel système, défaut |
Coeur | tâche | non | statique | non | noyau de panique | tout droit |
BPF | un événement | Oui | JIT, CO-RE | vérification, JIT | Message d'erreur | assistants limités |
Différent du BPF du code standard au niveau utilisateur ou au niveau du noyau, une source
AWS a déclaré que Bottlerocket «adopte un modèle d'exploitation qui améliore encore la sécurité en empêchant les privilèges d'administrateur de se connecter aux serveurs de production» et «convient aux grands systèmes distribués où le contrôle est limité. au-dessus de chaque hôte individuel ".
Un conteneur administrateur est fourni aux administrateurs système. Mais AWS ne pense pas que les administrateurs devront souvent travailler à l'intérieur de Bottlerocket: "L'acte de se connecter à une instance de Bottlerocket distincte est destiné aux opérations peu fréquentes: débogage et dépannage avancés", écrivent les développeurs.
La langue Rust
Les outils du système d'exploitation au-dessus du noyau sont principalement écrits en Rust. Ce langage de par sa nature réduit les chances d'accès mémoire non sécurisé et élimine également les conditions de concurrence entre les threads .
Si les indicateurs de construction par défaut sont appliqués
--enable-default-pie
et --enable-default-ssp
pour activer la randomisation de l'espace d'adressage des fichiers exécutables ( indépendamment de la position de l'exécutable , PIE) et la protection contre le débordement de pile.
Pour les paquets à C / C ++ comprend en outre des drapeaux
-Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
et -fstack-clash-protection
.
Outre Rust et C / C ++, certains packages sont écrits dans le langage Go.
Intégration avec les services AWS
La différence par rapport aux systèmes d'exploitation de conteneurs similaires est qu'Amazon a optimisé Bottlerocket pour s'exécuter sur AWS et s'intégrer à d'autres services AWS.
L'orchestrateur de conteneurs le plus populaire est Kubernetes. AWS a donc mis en œuvre l'intégration avec son propre service Enterprise Kubernetes (EKS). Les outils d'orchestration sont fournis dans un conteneur de contrôle de prise de bouteille séparé , qui est activé par défaut et géré via l'API et l'agent AWS SSM.
Il sera intéressant de voir si Bottlerocket prend son envol étant donné l'échec de certaines de ces initiatives dans le passé. Par exemple, PhotonOS de Vmware a cessé ses activités et RedHat a acheté CoreOS et a mis fin à un projet considéré comme un pionnier dans le domaine.
L'intégration de Bottlerocket dans les services AWS rend ce système unique à sa manière. C'est peut-être la raison principale pour laquelle certains utilisateurs peuvent préférer Bottlerocket à d'autres distributions telles que CoreOS ou Alpine. Le système a été conçu à l'origine pour fonctionner avec EKS et ECS, mais encore une fois, ce n'est pas nécessaire. Premièrement, Bottlerocket peut être construit indépendamment et utilisé, par exemple, en tant que solution hébergée. Deuxièmement, les utilisateurs EKS et ECS auront toujours le choix du système d'exploitation.
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 .
La 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é des attaques DDoS gratuitement!