Μια μινιμαλιστική διανομή Linux Bottlerocket κυκλοφόρησε για την εκτέλεση κοντέινερ. Το πιο σημαντικό για αυτόν

Μια μινιμαλιστική διανομή Linux Bottlerocket κυκλοφόρησε για την εκτέλεση κοντέινερ. Το πιο σημαντικό για αυτόν

Αμαζόνα ανακοινώθηκε σχετικά με την τελική κυκλοφορία Μπουκάλι — μια εξειδικευμένη διανομή για τη λειτουργία εμπορευματοκιβωτίων και την αποτελεσματική διαχείριση τους.

Το Bottlerocket (παρεμπιπτόντως, το όνομα που δόθηκε στους μικρούς αυτοσχέδιους πυραύλους μαύρης σκόνης) δεν είναι το πρώτο λειτουργικό σύστημα για κοντέινερ, αλλά είναι πιθανό να γίνει ευρέως διαδεδομένο χάρη στην προεπιλεγμένη ενσωμάτωση με τις υπηρεσίες AWS. Παρόλο που το σύστημα εστιάζει στο cloud του Amazon, ο ανοιχτός κώδικας του επιτρέπει να δημιουργηθεί οπουδήποτε: τοπικά σε διακομιστή, σε Raspberry Pi, σε οποιοδήποτε ανταγωνιστικό cloud, ακόμη και σε περιβάλλον χωρίς κοντέινερ.

Αυτή είναι μια απολύτως άξια αντικατάσταση της διανομής CoreOS που έθαψε η Red Hat.

Στην πραγματικότητα, το τμήμα Amazon Web Services διαθέτει ήδη το Amazon Linux, το οποίο πρόσφατα κυκλοφόρησε στη δεύτερη έκδοσή του: είναι μια διανομή γενικής χρήσης που μπορεί να εκτελεστεί σε κοντέινερ Docker ή με το Linux KVM, το Microsoft Hyper-V και το VMware Υπερεπόπτες ESXi. Βελτιστοποιήθηκε για να εκτελείται στο σύννεφο AWS, αλλά με την κυκλοφορία του Bottlerocket, όλοι ενθαρρύνονται να αναβαθμίσουν σε ένα νέο σύστημα που είναι πιο ασφαλές, σύγχρονο και χρησιμοποιεί λιγότερους πόρους.

Η AWS ανακοίνωσε το Bottlerocket τον Μάρτιο του 2020. Αμέσως παραδέχτηκε ότι αυτό δεν είναι το πρώτο «Linux για κοντέινερ», αναφέροντας ως πηγές έμπνευσης το CoreOS, το Rancher OS και το Project Atomic. Οι προγραμματιστές έγραψαν ότι το λειτουργικό σύστημα είναι «το αποτέλεσμα των διδαγμάτων που έχουμε μάθει από την εκτέλεση υπηρεσιών παραγωγής στην κλίμακα της Amazon για μεγάλο χρονικό διάστημα και της εμπειρίας που έχουμε αποκτήσει τα τελευταία έξι χρόνια σχετικά με τον τρόπο λειτουργίας των κοντέινερ».

Ακραίος μινιμαλισμός

Το Linux έχει αφαιρεθεί από όλα όσα δεν χρειάζονται για την εκτέλεση κοντέινερ. Αυτός ο σχεδιασμός, σύμφωνα με την εταιρεία, μειώνει την επιφάνεια επίθεσης.

Αυτό σημαίνει ότι λιγότερα πακέτα εγκαθίστανται στο βασικό σύστημα, γεγονός που διευκολύνει τη συντήρηση και την ενημέρωση του λειτουργικού συστήματος και επίσης μειώνει την πιθανότητα προβλημάτων λόγω εξαρτήσεων, μειώνοντας τη χρήση πόρων. Βασικά, όλα εδώ λειτουργούν μέσα σε ξεχωριστά δοχεία και το υποκείμενο σύστημα είναι πρακτικά γυμνό.

Η Amazon έχει επίσης αφαιρέσει όλα τα κελύφη και τους διερμηνείς, εξαλείφοντας τον κίνδυνο χρήσης τους ή τυχαίας κλιμάκωσης των προνομίων από τους χρήστες. Για λόγους μινιμαλισμού και ασφάλειας, η βασική εικόνα δεν περιλαμβάνει κέλυφος εντολών, διακομιστή SSH ή ερμηνευμένες γλώσσες όπως η Python. Τα εργαλεία διαχειριστή τοποθετούνται σε ξεχωριστό κοντέινερ υπηρεσιών, το οποίο είναι απενεργοποιημένο από προεπιλογή.

Η διαχείριση του συστήματος γίνεται με δύο τρόπους: μέσω του API και της ενορχήστρωσης.

Αντί για έναν διαχειριστή πακέτων που ενημερώνει μεμονωμένα κομμάτια λογισμικού, το Bottlerocket κατεβάζει μια πλήρη εικόνα συστήματος αρχείων και κάνει επανεκκίνηση σε αυτό. Εάν μια φόρτωση αποτύχει, επανέρχεται αυτόματα και μια αποτυχία φόρτου εργασίας μπορεί να προκαλέσει μη αυτόματη επαναφορά (εντολή μέσω API).

Δομή TUF (Το πλαίσιο ενημέρωσης) πραγματοποιεί λήψη ενημερώσεων που βασίζονται σε εικόνα σε εναλλακτικά ή "μη προσαρτημένα" διαμερίσματα. Δύο διαμερίσματα δίσκου έχουν εκχωρηθεί για το σύστημα, ένα από τα οποία περιέχει το ενεργό σύστημα και η ενημέρωση αντιγράφεται στο δεύτερο. Σε αυτήν την περίπτωση, το διαμέρισμα ρίζας προσαρτάται σε λειτουργία μόνο για ανάγνωση και το διαμέρισμα /etc προσαρτημένο με το σύστημα αρχείων στη μνήμη RAM tmpfs και επαναφέρει την αρχική κατάσταση μετά από επανεκκίνηση. Άμεση τροποποίηση των αρχείων διαμόρφωσης /etc δεν υποστηρίζεται: για να αποθηκεύσετε τις ρυθμίσεις θα πρέπει να χρησιμοποιήσετε το API ή να μετακινήσετε τη λειτουργικότητα σε ξεχωριστά κοντέινερ.

Μια μινιμαλιστική διανομή Linux Bottlerocket κυκλοφόρησε για την εκτέλεση κοντέινερ. Το πιο σημαντικό για αυτόν
Σχέδιο ενημέρωσης API

Ασφάλεια

Τα κοντέινερ δημιουργούνται από τυπικούς μηχανισμούς του πυρήνα Linux - cgroups, namespace και seccomp, και χρησιμοποιούνται ως σύστημα ελέγχου υποχρεωτικής πρόσβασης, δηλαδή για πρόσθετη απομόνωση SELinux σε λειτουργία "επιβολής".

Από προεπιλογή, οι πολιτικές είναι ενεργοποιημένες για κοινή χρήση πόρων μεταξύ κοντέινερ και πυρήνα. Τα δυαδικά αρχεία προστατεύονται με σημαίες για να εμποδίζουν τους χρήστες ή τα προγράμματα να τα εκτελούν. Και αν κάποιος φτάσει στο σύστημα αρχείων, το Bottlerocket προσφέρει ένα εργαλείο για τον έλεγχο και την παρακολούθηση τυχόν αλλαγών που έγιναν.

Η λειτουργία "επαληθευμένη εκκίνηση" υλοποιείται μέσω της λειτουργίας συσκευής-mapper-verity (dm-αλήθεια), το οποίο ελέγχει την ακεραιότητα του ριζικού διαμερίσματος κατά την εκκίνηση. Το AWS περιγράφει το dm-verity ως «ένα χαρακτηριστικό του πυρήνα Linux που παρέχει ελέγχους ακεραιότητας για να αποτρέψει την εκτέλεση κακόβουλου λογισμικού στο λειτουργικό σύστημα, όπως η αντικατάσταση λογισμικού του πυρήνα του συστήματος».

Υπάρχει επίσης ένα φίλτρο στο σύστημα eGMP (εκτεταμένο BPF, που αναπτύχθηκε από τον Alexey Starovoitov), το οποίο επιτρέπει την αντικατάσταση μονάδων πυρήνα με πιο ασφαλή προγράμματα BPF για λειτουργίες συστήματος χαμηλού επιπέδου.

Μοντέλο Εκτέλεσης
Ορισμένο από τον χρήστη
Σύνταξη
Ασφάλεια
Λειτουργία αποτυχίας
Πρόσβαση σε πόρους

Χρήστης
την εργασία
да
οποιαδήποτε
δικαιώματα χρήστη
διακοπή εκτέλεσης
κλήση συστήματος, σφάλμα

Ο πυρήνας
την εργασία
όχι
στατικός
όχι
πανικός πυρήνα
прямой

BPF
συμβάν
да
JIT, CO-RE
επαλήθευση, JIT
μήνυμα λάθους
περιορισμένους βοηθούς

Πώς διαφέρει το BPF από τον κώδικα σε επίπεδο κανονικού χρήστη ή πυρήνα πηγή

Η AWS είπε ότι η Bottlerocket "χρησιμοποιεί ένα μοντέλο λειτουργίας που ενισχύει περαιτέρω την ασφάλεια αποτρέποντας τις συνδέσεις με διακομιστές παραγωγής με δικαιώματα διαχειριστή" και είναι "κατάλληλο για μεγάλα κατανεμημένα συστήματα όπου ο έλεγχος σε κάθε μεμονωμένο κεντρικό υπολογιστή είναι περιορισμένος".

Παρέχεται ένα κοντέινερ διαχειριστή για τους διαχειριστές συστήματος. Αλλά το AWS δεν πιστεύει ότι ένας διαχειριστής θα χρειάζεται συχνά να εργάζεται μέσα στο Bottlerocket: "Η πράξη της σύνδεσης σε μια ξεχωριστή παρουσία του Bottlerocket προορίζεται για σπάνιες λειτουργίες: προηγμένο εντοπισμό σφαλμάτων και αντιμετώπιση προβλημάτων." γράφω προγραμματιστές.

Γλώσσα σκουριάς

Τα όργανα του λειτουργικού συστήματος στην κορυφή του πυρήνα είναι κυρίως γραμμένα σε Rust. Αυτή η γλώσσα είναι από τη φύση της μειώνει την πιθανότητα μη ασφαλούς πρόσβασης στη μνήμηΚαι εξαλείφει τις συνθήκες κούρσας μεταξύ των νημάτων.

Οι σημαίες εφαρμόζονται από προεπιλογή κατά την κατασκευή --enable-default-pie и --enable-default-ssp για να ενεργοποιήσετε την τυχαιοποίηση του χώρου διευθύνσεων των εκτελέσιμων αρχείων (εκτελέσιμο ανεξάρτητο από τη θέση, PIE) και προστασία υπερχείλισης στοίβας.

Για πακέτα C/C++, περιλαμβάνονται πρόσθετες σημαίες -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Εκτός από το Rust και το C/C++, ορισμένα πακέτα είναι γραμμένα στο Go.

Ενοποίηση με υπηρεσίες AWS

Η διαφορά από παρόμοια λειτουργικά συστήματα κοντέινερ είναι ότι η Amazon έχει βελτιστοποιήσει το Bottlerocket ώστε να λειτουργεί σε AWS και να ενσωματώνεται με άλλες υπηρεσίες AWS.

Ο πιο δημοφιλής ενορχηστρωτής κοντέινερ είναι ο Kubernetes, επομένως η AWS εισήγαγε την ενοποίηση με τη δική της Υπηρεσία Enterprise Kubernetes (EKS). Τα εργαλεία ενορχήστρωσης διατίθενται σε ξεχωριστό δοχείο ελέγχου bottlerocket-control-container, το οποίο είναι ενεργοποιημένο από προεπιλογή και διαχειρίζεται μέσω του API και του AWS SSM Agent.

Θα είναι ενδιαφέρον να δούμε αν η Bottlerocket απογειωθεί, δεδομένης της αποτυχίας κάποιων παρόμοιων πρωτοβουλιών στο παρελθόν. Για παράδειγμα, το PhotonOS από τη Vmware αποδείχθηκε ότι δεν είχε διεκδικηθεί και η RedHat αγόρασε το CoreOS και έκλεισε το έργο, που θεωρούνταν πρωτοπόρος στον χώρο.

Η ενσωμάτωση του Bottlerocket στις υπηρεσίες AWS κάνει αυτό το σύστημα μοναδικό με τον δικό του τρόπο. Αυτός είναι ίσως ο κύριος λόγος για τον οποίο ορισμένοι χρήστες μπορεί να προτιμούν το Bottlerocket έναντι άλλων διανομών όπως το CoreOS ή το Alpine. Το σύστημα έχει σχεδιαστεί αρχικά για να λειτουργεί με EKS και ECS, αλλά επαναλαμβάνουμε ότι αυτό δεν είναι απαραίτητο. Πρώτον, το Bottlerocket μπορεί συναρμολογήστε μόνοι σας και χρησιμοποιήστε το, για παράδειγμα, ως φιλοξενούμενη λύση. Δεύτερον, οι χρήστες EKS και ECS θα εξακολουθούν να έχουν τη δυνατότητα να επιλέξουν το λειτουργικό τους σύστημα.

Ο πηγαίος κώδικας Bottlerocket δημοσιεύεται στο GitHub με την άδεια Apache 2.0. Οι προγραμματιστές έχουν ήδη απαντήστε σε αναφορές σφαλμάτων και αιτήματα για λειτουργίες.

Σχετικά με τα Δικαιώματα Διαφήμισης

VDSina προσφέρει VDS με ημερήσια πληρωμή. Είναι δυνατή η εγκατάσταση οποιουδήποτε λειτουργικού συστήματος, ακόμη και από τη δική σας εικόνα. Κάθε διακομιστής είναι συνδεδεμένος σε ένα κανάλι Διαδικτύου 500 Megabit και προστατεύεται από επιθέσεις DDoS δωρεάν!

Μια μινιμαλιστική διανομή Linux Bottlerocket κυκλοφόρησε για την εκτέλεση κοντέινερ. Το πιο σημαντικό για αυτόν

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο