
Amazon om den slutgiltiga versionen — en specialiserad distribution för att köra containrar och effektiv hantering av dem.
Bottlerocket (för övrigt är det så som små hemmagjorda raketer med svartkrut benämns) är inte det första operativsystemet för containrar, men det är ganska troligt att det kommer att få omfattande spridning tack vare standardintegrationen med AWS-tjänster. Även om systemet är riktat mot Amazons moln, tillåter den öppna koden att det kan kompileras var som helst: lokalt på en server, på Raspberry Pi, i vilket konkurrerande moln som helst och även i en miljö utan containrar.
Det är en helt värdig ersättning för distributionen CoreOS, som begravdes av Red Hat.
Överhuvudtaget har Amazon Web Services redan Amazon Linux, som nyligen gick in i sin andra version: detta är en allmänt använd distribution som kan köras i en Docker-container eller med Linux KVM, Microsoft Hyper-V och VMware ESXi-hypervisorer. Den har optimerats för att fungera i AWS-molnet, men med lanseringen av Bottlerocket rekommenderas alla att uppgradera till det nya systemet, som är säkrare, modernare och kräver mindre resurser.
AWS tillkännagav Bottlerocket . Det erkände omedelbart att detta inte är den första "Linux för containrar", och nämnde CoreOS, Rancher OS och Project Atomic som inspirationskällor. Utvecklarna skrev att operativsystemet är "resultatet av de lärdomar som vi dragit under långvarigt arbete med produktionsarbetsbelastningar i Amazons storlek, med hänsyn till den erfarenhet vi fått under de senaste sex åren om hur man kör containrar".
Extrem minimalistisk
Linux är rensat från allt som inte behövs för att köra containrar. Denna design, enligt företaget, minskar attackytan.
Detta innebär att färre paket installeras i det grundläggande systemet, vilket förenklar underhåll och uppdateringar av OS, samt minskar risken för problem på grund av beroenden och minskar resursanvändningen. I princip fungerar allt här inne i separata containrar, och det grundläggande systemet är praktiskt taget helt naket.
Amazon har också tagit bort alla skal och tolkar för att eliminera risken för deras användning eller oavsiktlig höjning av privilegier för användare. Den grundläggande bilden saknar kommandoskal, SSH-server och tolkade språk som Python för att uppnå minimalism och säkerhet. Administrationsverktyg har flyttats till en separat tjänstekontainer som är inaktiverad som standard.
Systemhantering är möjligt på två sätt: via API och orkestrering.
Istället för en paketchef som uppdaterar enskilda delar av programvaran, laddar Bottlerocket ner en fullständig filsystemimage och startar om till den. Vid ett startproblem gör det automatiskt en återställning, och ett misslyckande med arbetsbelastningen kan initiera en återställning manuellt (kommando via API).
Ramverk (The Update Framework) laddar uppdateringar baserade på bilder till alternativ eller "avmonterade" partitioner. Systemet tilldelas två diskpartitioner, där den ena innehåller det aktiva systemet och den andra kopieras uppdateringen. Det root-partitionen monteras i skrivskyddat läge, medan partitionen /etc monteras med filsystemet i arbetsminnet och återställer ursprungligt tillstånd efter omstart. Direkt ändring av konfigurationsfiler i /etc stödjs inte: för att spara inställningar bör API användas eller funktionalitet flyttas till separata containrar.

Uppdateringsschemat via API
Säkerhet
Containrar skapas med standardmekanismer i Linux-kärnan — cgroups, namnutrymmen och seccomp, och som system för tvångskontroll används i "enforcing"-läge.
Som standard är policys aktiverade för resursdelning mellan containrar och kärnan. Binärfiler är skyddade med flaggor så att användare eller program inte kan köra dem. Och om någon får tillgång till filsystemet erbjuder Bottlerocket ett verktyg för att kontrollera och spåra eventuella gjorda ändringar.
Läget "verifierad start" implementeras genom funktionen device-mapper-verity (), som kontrollerar integriteten hos rotpartitionen under uppstart. AWS beskriver dm-verity som "en funktion i Linux-kärnan som säkerställer integritet för att förhindra skadlig programvara från att köras i OS, såsom att skriva över det grundläggande systemprogramvaran."
Det finns också ett filter i systemet (extended BPF, ), som tillåter ersättning av kärnmoduler med mer säkra BPF-program för låg nivå systemoperationer.
Körmodell
Användarinställd
Kompilering
Säkerhet
Felsökningsläge
Resursåtkomst
Användare
uppgift
ja
vilken som helst
användarrättigheter
avbrytande av körning
systemanrop, fel
Kärna
uppgift
nej
statisk
nej
kärnapanik
direkt
BPF
händelse
ja
JIT, CO-RE
verifiering, JIT
felmeddelande
begränsade hjälpare
Skillnaden mellan BPF och vanlig användar- eller kärnkod,
AWS har sagt att Bottlerocket "tillämpar en driftmodell som ytterligare ökar säkerheten genom att förhindra anslutningar till produktionsservrar med administratörsprivilegier" och "är tjänlig för stora distribuerade system där kontrollen över varje enskild värd är begränsad."
För systemadministratörer finns en administratörsbehållare. Men AWS anser inte att administratören ofta kommer behöva arbeta inuti Bottlerocket: "Åtkomsten till en enskild instans av Bottlerocket är avsedd för sällsynta operationer: avancerad felsökning och debugging," — utvecklare.
Språket Rust
Operativsystemverktyget ovanpå kärnan är huvudsakligen skrivet i Rust. Detta språk minskar i sin natur , samt .
Vid standardkompilering tillämpas flaggor --enable-default-pie och --enable-default-ssp för att aktivera randomisering av minnesadresser för exekverbara filer (, PIE) och skydd mot stack overflow.
För C/C++-paket tillämpas ytterligare flaggor -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS och -fstack-clash-protection.
Förutom Rust och C/C++, är vissa paket skrivna i Go.
Integration med AWS-tjänster
Skillnaden från liknande containermiljöer är att Amazon har optimerat Bottlerocket för att fungera på AWS och för integration med andra AWS-tjänster.
Den mest populära containermanageraren är Kubernetes, så AWS har infört integration med sin egen Enterprise Kubernetes Service (EKS). Verktyg för orkestrering ingår i en separat hanteringscontainer. , som är aktiverad som standard och hanteras via API och AWS SSM Agent.
Det blir intressant att se om Bottlerocket tar fart, med tanke på misslyckandet av några liknande initiativ tidigare. Till exempel blev PhotonOS från Vmware oförskattad, och RedHat köpte CoreOS och , som ansågs vara en pionjär inom området.
Integrationen av Bottlerocket i AWS-tjänster gör detta system unikt i sitt slag. Kanske är det huvudskälet till varför vissa användare kan föredra Bottlerocket framför andra distributioner som CoreOS eller Alpine. Systemet är ursprungligen designat för att fungera med EKS och ECS, men vi upprepar att detta inte är ett krav. För det första kan Bottlerocket och användas som en till exempel hosted-lösning. För det andra, användare av EKS och ECS kommer fortfarande att ha möjlighet att välja operativsystem.
Källkoden för Bottlerocket har publicerats på GitHub under Apache 2.0-licensen. Utvecklarna reagerar redan .
I reklamens namn
VDSina erbjuder . Du kan installera vilket operativsystem som helst, inklusive från din egen bild. Varje server är ansluten till en internetkanal på 500 Megabit och skyddas gratis mot DDoS-attacker!
Källa: habr.com
