tvrtka Amazon
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
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 /etc
montiran s datotečnim sustavom u RAM-u /etc
nije podržano: za spremanje postavki trebate koristiti API ili premjestiti funkcionalnost u zasebne spremnike.
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
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 (
U sustavu postoji i filter
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
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,"
Jezik hrđe
OS instrumentacija na vrhu kernela uglavnom je napisana u Rustu. Ovaj jezik je po svojoj prirodi
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 (
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
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
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
Izvorni kod Bottlerocketa objavljen je na GitHubu pod licencom Apache 2.0. Programeri su već
O pravima oglašavanja
VDSina ponude
Izvor: www.habr.com