En minimalistisk Linux-distribution Bottlerocket er blevet frigivet til at køre containere. Det vigtigste ved ham

En minimalistisk Linux-distribution Bottlerocket er blevet frigivet til at køre containere. Det vigtigste ved ham

Amazon annonceret om den endelige udgivelse Flaskelomme — en specialiseret distribution til at køre containere og effektivt styre dem.

Bottlerocket (i øvrigt navnet givet til små hjemmelavede sortkrudtraketter) er ikke det første operativsystem til containere, men det er sandsynligt, at det vil blive udbredt takket være standardintegration med AWS-tjenester. Selvom systemet er fokuseret på Amazon-skyen, tillader den åbne kildekode, at den kan bygges hvor som helst: lokalt på en server, på en Raspberry Pi, i enhver konkurrerende sky og endda i et containerløst miljø.

Dette er en fuldstændig værdig erstatning for CoreOS-distributionen, som Red Hat begravede.

Faktisk har Amazon Web Services-divisionen allerede Amazon Linux, som for nylig udkom i sin anden version: det er en distribution til generelle formål, der kan køres i en Docker-container eller med Linux KVM, Microsoft Hyper-V og VMware ESXi hypervisorer. Det var optimeret til at køre på AWS-skyen, men med udgivelsen af ​​Bottlerocket opfordres alle til at opgradere til et nyt system, der er mere sikkert, moderne og bruger færre ressourcer.

AWS annoncerede Bottlerocket i marts 2020. Hun indrømmede straks, at dette ikke er den første "Linux til containere", og citerede CoreOS, Rancher OS og Project Atomic som inspirationskilder. Udviklerne skrev, at operativsystemet er "resultatet af de erfaringer, vi har lært af at drive produktionstjenester på Amazons skala i lang tid, og den erfaring, vi har fået i løbet af de sidste seks år om, hvordan man kører containere."

Ekstrem minimalisme

Linux er frataget alt, hvad der ikke er nødvendigt for at køre containere. Dette design reducerer ifølge virksomheden angrebsoverfladen.

Det betyder, at der installeres færre pakker på basissystemet, hvilket gør det nemmere at vedligeholde og opdatere OS, og også reducerer sandsynligheden for problemer på grund af afhængigheder, hvilket reducerer ressourceforbruget. Som udgangspunkt fungerer alt her i separate beholdere, og det underliggende system er praktisk talt blottet.

Amazon har også fjernet alle skaller og tolke, hvilket eliminerer risikoen for, at de bliver brugt, eller at brugere ved et uheld eskalerer privilegier. Af hensyn til minimalisme og sikkerhed inkluderer basisbilledet ikke en kommandoskal, en SSH-server eller fortolkede sprog som Python. Administratorværktøjer placeres i en separat servicebeholder, som er deaktiveret som standard.

Systemet styres på to måder: gennem API'et og orkestrering.

I stedet for en pakkehåndtering, der opdaterer individuelle stykker software, downloader Bottlerocket et komplet filsystembillede og genstarter i det. Hvis en belastning mislykkes, ruller den automatisk tilbage, og en arbejdsbelastningsfejl kan udløse en tilbagerulning manuelt (kommando via API).

Ramme TUF (Update Framework) downloader billedbaserede opdateringer til alternative eller "afmonterede" partitioner. To diskpartitioner er allokeret til systemet, hvoraf den ene indeholder det aktive system, og opdateringen kopieres til den anden. I dette tilfælde er rodpartitionen monteret i skrivebeskyttet tilstand, og partitionen /etc monteret med filsystemet i RAM tmpfs og gendanner den oprindelige tilstand efter en genstart. Direkte ændring af konfigurationsfiler i /etc ikke understøttet: For at gemme indstillinger skal du bruge API'en eller flytte funktionaliteten til separate beholdere.

En minimalistisk Linux-distribution Bottlerocket er blevet frigivet til at køre containere. Det vigtigste ved ham
API-opdateringsskema

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

Containere er skabt af standardmekanismerne i Linux-kernen - cgroups, namespaces og seccomp, og bruges som et tvungen adgangskontrolsystem, det vil sige til yderligere isolering SELinux i "håndhævende" tilstand.

Som standard er politikker aktiveret til at dele ressourcer mellem containere og kernen. Binære filer er beskyttet med flag for at forhindre brugere eller programmer i at udføre dem. Og hvis man kommer til filsystemet, tilbyder Bottlerocket et værktøj til at kontrollere og spore eventuelle ændringer.

Den "verificerede boot"-tilstand implementeres gennem enhed-mapper-verity-funktionen (dm-verity), som kontrollerer integriteten af ​​rodpartitionen under opstart. AWS beskriver dm-verity som "en funktion i Linux-kernen, der giver integritetstjek for at forhindre malware i at køre på operativsystemet, såsom overskrivning af kernesystemsoftware."

Der er også et filter i systemet eGMP (udvidet BPF, udviklet af Alexey Starovoitov), som gør det muligt at erstatte kernemoduler med mere sikre BPF-programmer til systemoperationer på lavt niveau.

Udførelsesmodel
Brugerdefineret
Samling
Безопасность
Fejl tilstand
Adgang til ressourcer

Bruger
opgaven
ja
nogen
brugerrettigheder
afbryde udførelsen
systemkald, fejl

Kernen
opgaven
ingen
statisk
ingen
kerne panik
прямой

BPF
begivenhed
ja
JIT, CO-RE
verifikation, JIT
fejl besked
begrænsede hjælpere

Hvordan BPF adskiller sig fra almindelig bruger- eller kerneniveaukode kilde

AWS sagde, at Bottlerocket "anvender en driftsmodel, der yderligere forbedrer sikkerheden ved at forhindre forbindelser til produktionsservere med administrative rettigheder" og er "egnet til store distribuerede systemer, hvor kontrol over hver enkelt vært er begrænset."

Der er en administratorbeholder til systemadministratorer. Men AWS mener ikke, at en administrator ofte behøver at arbejde inde i Bottlerocket: "At logge på en separat Bottlerocket-instans er beregnet til sjældne operationer: avanceret fejlfinding og fejlfinding." skrive udviklere.

Rust sprog

OS-instrumenteringen oven på kernen er for det meste skrevet i Rust. Dette sprog er i sagens natur reducerer sandsynligheden for usikker hukommelsesadgangog eliminerer løbsforhold mellem gevind.

Flag anvendes som standard, når der bygges --enable-default-pie и --enable-default-ssp for at muliggøre randomisering af adresserummet for eksekverbare filer (positionsuafhængig eksekverbar, PIE) og stak overløbsbeskyttelse.

For C/C++-pakker er yderligere flag inkluderet -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Udover Rust og C/C++ er nogle pakker skrevet i Go.

Integration med AWS-tjenester

Forskellen fra lignende containeroperativsystemer er, at Amazon har optimeret Bottlerocket til at køre på AWS og integrere med andre AWS-tjenester.

Den mest populære containerorkestrator er Kubernetes, så AWS har introduceret integration med sin egen Enterprise Kubernetes Service (EKS). Orkestreringsværktøjer kommer i en separat kontrolbeholder bottlerocket-kontrol-container, som er aktiveret som standard og administreres gennem API og AWS SSM Agent.

Det bliver interessant at se, om Bottlerocket tager fart, da nogle lignende initiativer tidligere har været fiasko. For eksempel viste PhotonOS fra Vmware sig at være uanmeldt, og RedHat købte CoreOS og lukkede projektet, der blev betragtet som en pioner på området.

Bottlerockets integration i AWS-tjenester gør dette system unikt på sin egen måde. Dette er måske hovedårsagen til, at nogle brugere måske foretrækker Bottlerocket frem for andre distros såsom CoreOS eller Alpine. Systemet er i første omgang designet til at fungere med EKS og ECS, men vi gentager, at det ikke er nødvendigt. For det første kan Bottlerocket samle selv og bruge det for eksempel som en hostet løsning. For det andet vil EKS- og ECS-brugere stadig have mulighed for at vælge deres OS.

Bottlerocket-kildekoden er udgivet på GitHub under Apache 2.0-licensen. Det har udviklerne allerede svare på fejlrapporter og funktionsanmodninger.

Om reklamernes rettigheder

VDSina tilbud VDS med daglig betaling. Det er muligt at installere et hvilket som helst operativsystem, også fra dit eget billede. Hver server er forbundet til en internetkanal på 500 megabit og er gratis beskyttet mod DDoS-angreb!

En minimalistisk Linux-distribution Bottlerocket er blevet frigivet til at køre containere. Det vigtigste ved ham

Kilde: www.habr.com

Tilføj en kommentar