O distribuție Linux minimalistă, Bottlerocket, a fost lansată pentru rularea containerelor. Cel mai important lucru la el

O distribuție Linux minimalistă, Bottlerocket, a fost lansată pentru rularea containerelor. Cel mai important lucru la el

Compania Amazon a anunțat despre lansarea finală Buzunar — o distribuție specializată pentru rularea containerelor și gestionarea eficientă a acestora.

Bottlerocket (apropo, numele dat micilor rachete cu pulbere neagră de casă) nu este primul sistem de operare pentru containere, dar este probabil să devină răspândit datorită integrării implicite cu serviciile AWS. Deși sistemul este axat pe cloud-ul Amazon, codul open source îi permite să fie construit oriunde: local pe un server, pe un Raspberry Pi, în orice cloud concurent și chiar într-un mediu fără container.

Acesta este un înlocuitor complet demn pentru distribuția CoreOS pe care Red Hat a îngropat-o.

De fapt, divizia Amazon Web Services are deja Amazon Linux, care a apărut recent în a doua sa versiune: este o distribuție de uz general care poate fi rulată într-un container Docker sau cu Linux KVM, Microsoft Hyper-V și VMware hipervizoare ESXi. A fost optimizat pentru a rula pe cloud AWS, dar odată cu lansarea Bottlerocket, toată lumea este încurajată să facă upgrade la un nou sistem care este mai sigur, mai modern și care utilizează mai puține resurse.

AWS a anunțat Bottlerocket în martie 2020. Ea a recunoscut imediat că acesta nu este primul „Linux pentru containere”, citând CoreOS, Rancher OS și Project Atomic drept surse de inspirație. Dezvoltatorii au scris că sistemul de operare este „rezultatul lecțiilor pe care le-am învățat din rularea serviciilor de producție la scara Amazon pentru o lungă perioadă de timp și al experienței pe care am dobândit-o în ultimii șase ani despre cum să rulăm containerele”.

Minimalism extrem

Linux este lipsit de tot ceea ce nu este necesar pentru a rula containere. Acest design, conform companiei, reduce suprafața de atac.

Aceasta înseamnă că pe sistemul de bază sunt instalate mai puține pachete, ceea ce facilitează întreținerea și actualizarea sistemului de operare și, de asemenea, reduce probabilitatea apariției problemelor din cauza dependențelor, reducând utilizarea resurselor. Practic, totul funcționează aici în containere separate, iar sistemul de bază este practic gol.

De asemenea, Amazon a eliminat toate shell-urile și interpreții, eliminând riscul ca acestea să fie folosite sau ca utilizatorii să escaladeze accidental privilegiile. De dragul minimalismului și securității, imaginea de bază nu include un shell de comandă, un server SSH sau limbaje interpretate precum Python. Instrumentele de administrare sunt plasate într-un container de servicii separat, care este dezactivat implicit.

Sistemul este gestionat în două moduri: prin API și orchestrare.

În loc de un manager de pachete care actualizează componente individuale de software, Bottlerocket descarcă o imagine completă a sistemului de fișiere și repornește în ea. Dacă o încărcare eșuează, se derulează automat, iar o eroare a sarcinii de lucru poate declanșa o derulare manuală (comandă prin API).

Cadru TUF (The Update Framework) descarcă actualizări bazate pe imagini pe partiții alternative sau „demontate”. Două partiții de disc sunt alocate pentru sistem, dintre care una conține sistemul activ, iar actualizarea este copiată pe a doua. În acest caz, partiția rădăcină este montată în modul numai citire, iar partiția /etc montat cu sistemul de fișiere în RAM tmpfs și restabilește starea inițială după o repornire. Modificarea directă a fișierelor de configurare în /etc nu este acceptat: pentru a salva setările, ar trebui să utilizați API-ul sau să mutați funcționalitatea în containere separate.

O distribuție Linux minimalistă, Bottlerocket, a fost lansată pentru rularea containerelor. Cel mai important lucru la el
Schema de actualizare API

Безопасность

Containerele sunt create prin mecanisme standard ale nucleului Linux - cgroups, namespaces și seccomp și sunt utilizate ca sistem de control al accesului forțat, adică pentru izolarea suplimentară SELinux în modul „aplicare”.

În mod implicit, politicile sunt activate pentru a partaja resurse între containere și nucleu. Binarele sunt protejate cu steaguri pentru a împiedica utilizatorii sau programele să le execute. Și dacă cineva ajunge la sistemul de fișiere, Bottlerocket oferă un instrument pentru a verifica și urmări orice modificări efectuate.

Modul „pornire verificată” este implementat prin intermediul funcției device-mapper-verity (dm-adevăr), care verifică integritatea partiției rădăcină în timpul pornirii. AWS descrie dm-verity ca „o caracteristică a nucleului Linux care oferă verificări de integritate pentru a preveni rularea malware-ului pe sistemul de operare, cum ar fi suprascrierea software-ului de bază al sistemului”.

Există și un filtru în sistem eGMP (BPF extins, dezvoltat de Alexey Starovoitov), care permite înlocuirea modulelor nucleului cu programe BPF mai sigure pentru operațiuni de sistem de nivel scăzut.

Model de execuție
Definit de utilizator
Compilare
Безопасность
Modul de eșec
Accesul la resurse

utilizator
sarcină
da
orice
drepturi de utilizator
întrerupe executarea
apel de sistem, defecțiune

Miezul
sarcină
nu
static
nu
panica nucleului
drept

BPF
eveniment
da
JIT, CO-RE
verificare, JIT
mesaj de eroare
ajutoare limitate

Cum diferă BPF de codul de utilizator obișnuit sau la nivel de kernel sursă

AWS a declarat că Bottlerocket „folosește un model de operare care îmbunătățește și mai mult securitatea prin prevenirea conexiunilor la serverele de producție cu privilegii administrative” și este „potrivit pentru sistemele mari distribuite în care controlul asupra fiecărei gazde individuale este limitat”.

Un container de administrator este furnizat pentru administratorii de sistem. Dar AWS nu crede că un administrator va trebui să lucreze adesea în interiorul Bottlerocket: „Actul de a te conecta la o instanță separată de Bottlerocket este destinat operațiunilor rare: depanare avansată și depanare.” scrie dezvoltatori.

Limbajul ruginii

Instrumentarea sistemului de operare din partea superioară a nucleului este scrisă în mare parte în Rust. Acest limbaj este prin natura sa reduce probabilitatea accesului nesigur la memorieși elimină condițiile de cursă între fire.

Steaguri sunt aplicate implicit la construirea --enable-default-pie и --enable-default-ssp pentru a permite randomizarea spațiului de adrese al fișierelor executabile (executabil independent de poziție, PIE) și protecție împotriva depășirii stivei.

Pentru pachetele C/C++, sunt incluse steaguri suplimentare -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Pe lângă Rust și C/C++, unele pachete sunt scrise în Go.

Integrare cu serviciile AWS

Diferența față de sistemele de operare container similare este că Amazon a optimizat Bottlerocket pentru a rula pe AWS și a se integra cu alte servicii AWS.

Cel mai popular orchestrator de containere este Kubernetes, așa că AWS a introdus integrarea cu propriul serviciu Enterprise Kubernetes (EKS). Instrumentele de orchestrare vin într-un container de control separat sticla-racheta-control-container, care este activat implicit și gestionat prin API și AWS SSM Agent.

Va fi interesant de văzut dacă Bottlerocket decolează, având în vedere eșecul unor inițiative similare din trecut. De exemplu, PhotonOS de la Vmware s-a dovedit a fi nerevendicat, iar RedHat a cumpărat CoreOS și a închis proiectul, care a fost considerat un pionier în domeniu.

Integrarea Bottlerocket în serviciile AWS face ca acest sistem să fie unic în felul său. Acesta este probabil motivul principal pentru care unii utilizatori pot prefera Bottlerocket în detrimentul altor distribuții, cum ar fi CoreOS sau Alpine. Sistemul este proiectat inițial să funcționeze cu EKS și ECS, dar repetăm ​​că acest lucru nu este necesar. În primul rând, Bottlerocket poate asamblați singur și să-l folosească, de exemplu, ca soluție găzduită. În al doilea rând, utilizatorii EKS și ECS vor avea în continuare posibilitatea de a-și alege sistemul de operare.

Codul sursă Bottlerocket este publicat pe GitHub sub licența Apache 2.0. Dezvoltatorii au făcut deja răspunde la rapoartele de erori și la solicitările de caracteristici.

Despre drepturile de publicitate

VDSina ofertele VDS cu plata zilnica. Este posibil să instalați orice sistem de operare, inclusiv din propria imagine. Fiecare server este conectat la un canal de Internet de 500 Megabiți și este protejat gratuit de atacurile DDoS!

O distribuție Linux minimalistă, Bottlerocket, a fost lansată pentru rularea containerelor. Cel mai important lucru la el

Sursa: www.habr.com

Adauga un comentariu