Minimalistička distribucija Linuxa, Bottlerocket, izdana je za pokretanje spremnika. Najvažnija stvar o njemu

Minimalistička distribucija Linuxa, Bottlerocket, izdana je za pokretanje spremnika. Najvažnija stvar o njemu

tvrtka Amazon najavio o konačnom izdanju Flaša za flaše — specijalizirana distribucija za pokretanje kontejnera i učinkovito upravljanje njima.

Bottlerocket (usput, naziv za male rakete s crnim barutom kućne izrade) nije prvi OS za kontejnere, ali je vjerojatno da će postati raširen zahvaljujući zadanoj integraciji s AWS servisima. Iako je sustav fokusiran na Amazonov oblak, otvoreni izvorni kod omogućuje njegovu izgradnju bilo gdje: lokalno na poslužitelju, na Raspberry Pi, u bilo kojem konkurentskom oblaku, pa čak i u okruženju bez spremnika.

Ovo je potpuno dostojna zamjena za CoreOS distribuciju koju je Red Hat pokopao.

Zapravo, odjel Amazon Web Services već ima Amazon Linux, koji je nedavno izašao u svojoj drugoj verziji: to je distribucija opće namjene koja se može pokrenuti u Docker spremniku ili s Linux KVM-om, Microsoft Hyper-V i VMware ESXi hipervizori. Optimiziran je za rad na AWS oblaku, ali s izdavanjem Bottlerocket-a, svi se potiču na nadogradnju na novi sustav koji je sigurniji, moderniji i koristi manje resursa.

AWS je najavio Bottlerocket u ožujku 2020. godine. Odmah je priznala da ovo nije prvi "Linux za kontejnere", navodeći CoreOS, Rancher OS i Project Atomic kao izvore inspiracije. Programeri su napisali da je operativni sustav "rezultat lekcija koje smo naučili iz vođenja proizvodnih usluga na Amazonovoj razini dugo vremena i iskustva koje smo stekli tijekom posljednjih šest godina o tome kako pokrenuti kontejnere."

Ekstremni minimalizam

Linux je lišen svega što nije potrebno za pokretanje spremnika. Ovaj dizajn, prema tvrtki, smanjuje površinu napada.

To znači da je manje paketa instalirano na osnovni sustav, što olakšava održavanje i ažuriranje OS-a, a također smanjuje vjerojatnost problema zbog ovisnosti, smanjujući korištenje resursa. Uglavnom, ovdje sve radi unutar zasebnih spremnika, a temeljni sustav je praktički gol.

Amazon je također uklonio sve ljuske i tumače, eliminirajući rizik od njihove upotrebe ili korisnika slučajnog povećanja privilegija. Radi minimalizma i sigurnosti, osnovna slika ne uključuje naredbenu ljusku, SSH poslužitelj ili interpretirane jezike poput Pythona. Administratorski alati smješteni su u poseban servisni spremnik, koji je prema zadanim postavkama onemogućen.

Sustavom se upravlja na dva načina: putem API-ja i orkestracijom.

Umjesto upravitelja paketa koji ažurira pojedinačne dijelove softvera, Bottlerocket preuzima kompletnu sliku datotečnog sustava i ponovno ga pokreće. Ako učitavanje ne uspije, ono se automatski vraća, a kvar radnog opterećenja može pokrenuti vraćanje ručno (naredba putem API-ja).

Okvir TUF (Okvir ažuriranja) preuzima ažuriranja temeljena na slikama na alternativne ili "nemontirane" particije. Sustavu su dodijeljene dvije particije diska, od kojih jedna sadrži aktivni sustav, a ažuriranje se kopira u drugu. U ovom slučaju, root particija je montirana u načinu rada samo za čitanje, a particija /etc montiran s datotečnim sustavom u RAM-u tmpfs i vraća prvobitno stanje nakon ponovnog pokretanja. Izravna izmjena konfiguracijskih datoteka u /etc nije podržano: za spremanje postavki trebate koristiti API ili premjestiti funkcionalnost u zasebne spremnike.

Minimalistička distribucija Linuxa, Bottlerocket, izdana je za pokretanje spremnika. Najvažnija stvar o njemu
Shema ažuriranja API-ja

sigurnosti

Kontejneri se kreiraju standardnim mehanizmima Linux kernela - cgroups, namespaces i seccomp, a koriste se kao sustav prisilne kontrole pristupa, odnosno za dodatnu izolaciju Uklanjanje poteškoća u načinu "provođenja".

Prema zadanim postavkama, pravila su omogućena za dijeljenje resursa između spremnika i jezgre. Binarne datoteke zaštićene su zastavicama koje sprječavaju korisnike ili programe da ih izvrše. A ako se dođe do datotečnog sustava, Bottlerocket nudi alat za provjeru i praćenje svih napravljenih promjena.

Način "provjerenog pokretanja" implementiran je putem funkcije device-mapper-verity (dm-istina), koji provjerava integritet korijenske particije tijekom pokretanja. AWS opisuje dm-verity kao "značajku Linux kernela koja pruža provjere integriteta kako bi se spriječilo pokretanje zlonamjernog softvera na OS-u, kao što je prepisivanje softvera jezgre sustava."

U sustavu postoji i filter eGMP (prošireni BPF, razvio Alexey Starovoitov), koji omogućuje zamjenu modula jezgre sa sigurnijim BPF programima za rad sustava na niskoj razini.

Model izvedbe
Korisnik definiran
Kompilacija
sigurnosti
Način neuspjeha
Pristup resursima

Korisnik
zadatak
da
bilo koji
prava korisnika
prekinuti izvršenje
sistemski poziv, greška

Jezgra
zadatak
ne
statički
ne
kernel panika
прямой

BPF
događaj
da
JIT, CO-RE
verifikacija, JIT
poruka o pogrešci
ograničeni pomagači

Kako se BPF razlikuje od običnog korisnika ili koda na razini jezgre izvor

AWS je rekao da Bottlerocket "koristi operativni model koji dodatno unapređuje sigurnost sprječavajući veze s produkcijskim poslužiteljima s administrativnim privilegijama" te je "prikladan za velike distribuirane sustave gdje je kontrola nad svakim pojedinačnim hostom ograničena."

Administratorski spremnik je predviđen za administratore sustava. Ali AWS ne misli da će administrator često morati raditi unutar Bottlerocketa: "Čin prijave u zasebnu instancu Bottlerocketa namijenjen je rijetkim operacijama: napredno otklanjanje pogrešaka i rješavanje problema," pisati programeri.

Jezik hrđe

OS instrumentacija na vrhu kernela uglavnom je napisana u Rustu. Ovaj jezik je po svojoj prirodi smanjuje vjerojatnost nesigurnog pristupa memorijiI eliminira uvjete utrke između niti.

Zastavice se prema zadanim postavkama primjenjuju prilikom izgradnje --enable-default-pie и --enable-default-ssp kako bi se omogućila randomizacija adresnog prostora izvršnih datoteka (izvršna datoteka neovisna o poziciji, PIE) i zaštitu od prelijevanja stoga.

Za C/C++ pakete uključene su dodatne oznake -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Osim Rusta i C/C++, neki paketi su napisani u Go-u.

Integracija s AWS uslugama

Razlika u odnosu na slične kontejnerske operativne sustave je u tome što je Amazon optimizirao Bottlerocket za rad na AWS-u i integraciju s drugim AWS servisima.

Najpopularniji kontejnerski orkestrator je Kubernetes, stoga je AWS uveo integraciju s vlastitom Enterprise Kubernetes uslugom (EKS). Alati za orkestraciju dolaze u zasebnom kontrolnom spremniku bottlerocket-control-container, koji je prema zadanim postavkama omogućen i njime se upravlja putem API-ja i AWS SSM agenta.

Bit će zanimljivo vidjeti hoće li Bottlerocket zaživjeti, s obzirom na neuspjeh nekih sličnih inicijativa u prošlosti. Na primjer, pokazalo se da PhotonOS iz Vmwarea nije tražen, a RedHat je kupio CoreOS i zatvorio projekt, koji se smatrao pionirom na tom polju.

Integracija Bottlerocketa u AWS usluge čini ovaj sustav jedinstvenim na svoj način. Ovo je možda glavni razlog zašto neki korisnici preferiraju Bottlerocket u odnosu na druge distribucije kao što su CoreOS ili Alpine. Sustav je inicijalno zamišljen za rad s EKS i ECS, ali ponavljamo da to nije potrebno. Prvo, Bottlerocket može sastavite sami i koristiti ga, na primjer, kao hostirano rješenje. Drugo, korisnici EKS-a i ECS-a i dalje će imati mogućnost odabira OS-a.

Izvorni kod Bottlerocketa objavljen je na GitHubu pod licencom Apache 2.0. Programeri su već odgovarati na izvješća o greškama i zahtjeve za značajkama.

O pravima oglašavanja

VDSina ponude VDS uz dnevno plaćanje. Moguće je instalirati bilo koji operativni sustav, uključujući i vlastitu sliku. Svaki poslužitelj je spojen na internetski kanal od 500 megabita i besplatno je zaštićen od DDoS napada!

Minimalistička distribucija Linuxa, Bottlerocket, izdana je za pokretanje spremnika. Najvažnija stvar o njemu

Izvor: www.habr.com

Dodajte komentar