Une distribution Linux minimaliste Bottlerocket a été publiée pour exécuter des conteneurs. La chose la plus importante à son sujet

Une distribution Linux minimaliste Bottlerocket a été publiée pour exécuter des conteneurs. La chose la plus importante à son sujet

Amazone annoncé le à propos de la version finale Fusée en bouteille — une distribution spécialisée pour gérer les conteneurs et les gérer efficacement.

Bottlerocket (d'ailleurs le nom donné aux 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 grâce à l'intégration par défaut avec les services AWS. Bien que le système soit axé sur le cloud Amazon, le code open source 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.

Il s'agit d'un remplacement tout à fait digne de la distribution CoreOS que Red Hat a enterrée.

En fait, la division Amazon Web Services dispose déjà d'Amazon Linux, 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 Linux KVM, Microsoft Hyper-V et VMware. Hyperviseurs ESXi. Il a été optimisé pour fonctionner sur le cloud AWS, mais avec la sortie de Bottlerocket, tout le monde est encouragé à passer à un nouveau système plus sécurisé, plus moderne et utilisant moins de ressources.

AWS a annoncé Bottlerocket en mars 2020 de l'année. Elle a immédiatement admis qu'il ne s'agissait pas du 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 tirées de l'exécution de services de production à l'échelle d'Amazon pendant une longue période, 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 est débarrassé 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, et réduit également le risque de problèmes dus aux dépendances, réduisant ainsi l'utilisation des ressources. Fondamentalement, tout ici fonctionne dans des conteneurs séparés et le système sous-jacent est pratiquement nu.

Amazon a également supprimé tous les shells et interprètes, éliminant ainsi le risque qu'ils soient utilisés ou que les utilisateurs élèvent accidentellement leurs privilèges. Par souci de minimalisme et de sécurité, l'image de base n'inclut pas de shell de commande, de serveur SSH ou de langages interprétés comme Python. Les outils d'administration sont placés dans un conteneur de services distinct, qui est désactivé par défaut.

Le système est géré 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 y redémarre. Si un chargement échoue, il revient automatiquement en arrière, et un échec de charge de travail peut déclencher une restauration manuelle (commande via API).

Cadre TUF (The Update Framework) télécharge les mises à jour basées sur des images sur 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 monté avec le système de fichiers en RAM tmpfs et restaure l'état d'origine après un redémarrage. Modification directe des fichiers de configuration dans /etc non pris en charge : pour enregistrer les paramètres, vous devez utiliser l'API ou déplacer la fonctionnalité dans des conteneurs séparés.

Une distribution Linux minimaliste Bottlerocket a été publiée pour exécuter des conteneurs. La chose la plus importante à son sujet
Schéma de mise à jour de l'API

sécurité

Les conteneurs sont créés par des mécanismes standard du noyau Linux - cgroups, espaces de noms et seccomp, et sont utilisés comme système de contrôle d'accès forcé, c'est-à-dire pour une isolation supplémentaire SELinux en mode « application ».

Par défaut, les stratégies sont activées pour partager les 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 l'on accède 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 lors du démarrage. AWS décrit dm-verity comme « une fonctionnalité du noyau Linux qui fournit des contrôles 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 principal ».

Il y a aussi un filtre dans le système eGMP (BPF étendu, développé par Alexey Starovoitov), qui permet de remplacer les modules du noyau par des programmes BPF plus sécurisés 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
défi
oui
Tout
droits de l'utilisateur
interrompre l'exécution
appel système, erreur

noyau
défi
aucun
statique
aucun
panique du noyau
прямой

FPB
événement
oui
JIT, CO-RE
vérification, JIT
Message d'erreur
aides limitées

En quoi BPF diffère du code au niveau de l'utilisateur ou du noyau standard source

AWS a déclaré que Bottlerocket "utilise un modèle d'exploitation qui améliore encore la sécurité en empêchant les connexions aux serveurs de production avec des privilèges administratifs" et est "adapté aux grands systèmes distribués où le contrôle sur chaque hôte individuel est limité".

Un conteneur administrateur est fourni pour les administrateurs système. Mais AWS ne pense pas qu'un administrateur aura souvent besoin de travailler au sein de Bottlerocket : « Le fait de se connecter à une instance distincte de Bottlerocket est destiné à des opérations peu fréquentes : débogage et dépannage avancés. » пишут développeurs.

Langue rouille

L'instrumentation du système d'exploitation au-dessus du noyau est principalement écrite en Rust. Cette langue est par nature réduit la probabilité d’un accès mémoire non sécuriséet élimine les conditions de concurrence entre les threads.

Les drapeaux sont appliqués par défaut lors de la construction --enable-default-pie и --enable-default-ssp pour permettre la randomisation de l'espace d'adressage des fichiers exécutables (exécutable indépendant de la position, PIE) et protection contre le débordement de pile.

Pour les packages C/C++, des indicateurs supplémentaires sont inclus -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Outre Rust et C/C++, certains packages sont écrits en Go.

Intégration avec les services AWS

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

L'orchestrateur de conteneurs le plus populaire est Kubernetes, c'est pourquoi AWS a introduit l'intégration avec son propre service Enterprise Kubernetes (EKS). Les outils d'orchestration sont fournis dans un conteneur de contrôle séparé conteneur-de-contrôle-de-bouteille, 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 décolle, compte tenu de l’échec de certaines initiatives similaires dans le passé. Par exemple, PhotonOS de Vmware s'est avéré non réclamé et RedHat a acheté CoreOS et clôturé le 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 principale raison pour laquelle certains utilisateurs peuvent préférer Bottlerocket à d'autres distributions telles que CoreOS ou Alpine. Le système est initialement conçu pour fonctionner avec EKS et ECS, mais nous répétons que cela n'est pas nécessaire. Premièrement, Bottlerocket peut assembler vous-même et utilisez-le, par exemple, comme solution hébergée. Deuxièmement, les utilisateurs d'EKS et d'ECS auront toujours la possibilité de choisir leur système d'exploitation.

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

Comme la publicité

VDSina offre VDS avec paiement journalier. 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 !

Une distribution Linux minimaliste Bottlerocket a été publiée pour exécuter des conteneurs. La chose la plus importante à son sujet

Source: habr.com

Ajouter un commentaire