
Amazon om den endelige udgivelse — en specialiseret distribution til kørsel af containere og effektiv administration af dem.
Bottlerocket (for øvrigt navnet på små hjemmelavede raketter med sortkrudt) er ikke det første OS til containere, men det er sandsynligt, at det vil få bred udbredelse på grund af standardintegration med AWS-tjenester. Selvom systemet er målrettet mod Amazon Cloud, gør den åbne kildekode det muligt at bygge det hvor som helst: lokalt på serveren, på Raspberry Pi, i enhver konkurrerende cloud, og endda i et miljø uden containere.
Dette er en værdig erstatning for distributionen CoreOS, som Red Hat har nedlagt.
Generelt har Amazon Web Services division allerede Amazon Linux, som for nylig er udgivet i version 2: en distributionsplatform til generelt brug, der kan køres i Docker-containere eller med Linux KVM-, Microsoft Hyper-V- og VMware ESXi-hypervisorer. Den er optimeret til brug i AWS-cloud, men med lanceringen af Bottlerocket anbefales det, at alle opgraderer til det nye system, som er mere sikkert, moderne og kræver færre ressourcer.
AWS annoncerede Bottlerocket . De erkendte straks, at dette ikke er det første "Linux til containere", og nævnte som inspirationskilder CoreOS, Rancher OS og Project Atomic. Udviklerne skrev, at operativsystemet er "resultatet af de lektioner, vi har lært fra mange års drift af produktionsservices i Amazon-størrelse og baseret på den erfaring, vi har haft i de seneste seks år med at køre containere."
Ekstrem minimalisme
Linux er renset for alt, hvad der ikke er nødvendigt for at køre containere. Denne design, ifølge virksomheden, reducerer angrebsoverfladen.
Det betyder, at der installeres færre pakker i basisystemet, hvilket forenkler vedligeholdelse og opdatering af OS, samt reducerer sandsynligheden for problemer på grund af afhængigheder, mindsker ressourceforbruget. Grundlæggende set fungerer alt her i separate containere, og basisystemet er stort set bart.
Amazon har også fjernet alle skaller og fortolkere for at eliminere risikoen for deres brug eller utilsigtet forhøjelse af privilegier for brugerne. I basisbilledet, for minimalismens og sikkerhedens skyld, er der ingen kommandoskaller, SSH-server eller fortolknings sprog som Python. Værktøjerne til administratoren er flyttet til en separat servicecontainer, som er deaktiveret som standard.
Systemadministration er muligt på to måder: gennem API og orkestrering.
I stedet for en pakkeadministrator, der opdaterer dele af softwaren, downloader Bottlerocket et komplet billede af filsystemet og genstarter ind i det. I tilfælde af opstartsfejl ruller den automatisk tilbage, og en arbejdsbelastningsfejl kan manuelt initieres til at rulle tilbage (kommando via API).
Rammeværk (The Update Framework) downloader opdateringer baseret på billeder til alternative eller "afmonterede" partitioner. Et system er tildelt to diskpartitioner, hvoraf den ene indeholder det aktive system, mens opdateringen kopieres til den anden. Herudover er rodpartitionen monteret i skrivebeskyttet tilstand, mens partitionen /etc er monteret med filsystemet i RAM og gendanner den oprindelige tilstand efter genstart. Direkte ændringer af konfigurationsfiler i /etc understøttes ikke: For at gemme indstillinger skal API'en bruges eller funktionaliteten flyttes til separate containere.

Opdateringsskema via API
Sikkerhed
Containere oprettes af de indbyggede mekanismer i Linux-kernen — cgroups, navnerum og seccomp, og som en kontrol- adgangen til systemet, dvs. for ekstra isolation bruges i "enforcing" tilstand.
Som standard er politikker aktiveret for at adskille ressourcer mellem containere og kernen. Binærfiler er beskyttet med flag, så brugere eller programmer ikke kan udføre dem. Og hvis nogen får adgang til filsystemet, tilbyder Bottlerocket et værktøj til at kontrollere og spore eventuelle ændringer, der er foretaget.
Funktionen "verified boot" er implementeret gennem device-mapper-verity-funktionen (), som kontrollerer integriteten af rodpartitionen under opstart. AWS beskriver dm-verity som "en Linux-kernemulighed, der sikrer integritetskontrol for at forhindre ondsindet software i at køre i OS, såsom overskrivning af de grundlæggende systemprogrammer."
Der er også et filter i systemet (udvidet BPF, ), som gør det muligt at erstatte kerne-moduler med mere sikre BPF-programmer til lavniveau systemoperationer.
Køremodel
Defineret af brugeren
Kompilering
Sikkerhed
Fejltilstand
Adgang til ressourcer
Bruger
task
ja
enhver
Brugerrettigheder
afbryde udførelsen
systemopkald, fejl
Kernel
task
nej
statisk
nej
kernepanik
direkte
BPF
begivenhed
ja
JIT, CO-RE
verifikation, JIT
fejlmeddelelse
begrænsede hjælpere
Forskellen mellem BPF og almindelig bruger- eller kernkode,
AWS har meldt, at Bottlerocket "anvender en driftsmodel, der yderligere forbedrer sikkerheden ved at forhindre forbindelser til produktionsservere med administratorrettigheder", og "er velegnet til store distribuerede systemer, hvor kontrollen over hver enkelt vært er begrænset."
Der er en administratorcontainer til systemadministratorer. Men AWS mener ikke, at administratoren ofte skal arbejde inde i Bottlerocket: "Adgangen til en enkelt Bottlerocket-instans er beregnet til sjældne operationer: udvidet fejlfinding og debugging", – udviklerne.
Rust-sproget
OS-værktøjerne oven på kernen er hovedsageligt skrevet i Rust. Dette sprog , samt .
Standardbygninger anvender flag --enable-default-pie og --enable-default-ssp for at aktivere randomisering af adresserummet for eksekverbare filer (, PIE) og beskyttelse mod stakoverløb.
For C/C++-pakker tilføjes der yderligere flags -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS og -fstack-clash-protection.
Udover Rust og C/C++ er nogle pakker skrevet i Go-sproget.
Integration med AWS-tjenester
Forskellen fra lignende containeroperativsystemer er, at Amazon har optimeret Bottlerocket til at arbejde på AWS og integrere med andre AWS-tjenester.
Den mest populære containerorkestrator er Kubernetes, så AWS har implementeret integration med sin egen Enterprise Kubernetes Service (EKS). Værktøjer til orkestrering leveres i en separat kontrolcontainer , som er inkluderet som standard og styres via API og AWS SSM Agent.
Det vil være interessant at se, om Bottlerocket får succes, især i lyset af nogle tidligere mislykkede initiativer. For eksempel blev PhotonOS fra Vmware uinteressant, og RedHat købte CoreOS og , som blev anset for at være en pioner inden for dette område.
Integration af Bottlerocket i AWS-tjenesterne gør dette system unikt. Måske er det hovedårsagen til, at nogle brugere kan foretrække Bottlerocket frem for andre distributioner som CoreOS eller Alpine. Systemet er oprindeligt designet til at arbejde med EKS og ECS, men lad os gentage, at dette ikke er nødvendigt. For det første kan Bottlerocket også anvendes som en hosted-løsning. For det andet har brugere af EKS og ECS stadig mulighed for at vælge OS.
Kildekoden til Bottlerocket er offentliggjort på GitHub under Apache 2.0-licensen. Udviklere reagerer allerede .
Annoncering
VDSina tilbyder . Det er muligt at installere ethvert operativsystem, også fra eget billede. Hver server er tilsluttet en internetforbindelse på 500 Megabit og er gratis beskyttet mod DDoS-angreb!
Kilde: habr.com
