Amazon
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
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 /etc
monteret med filsystemet i RAM /etc
ikke understøttet: For at gemme indstillinger skal du bruge API'en eller flytte funktionaliteten til separate beholdere.
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
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 (
Der er også et filter i systemet
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
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."
Rust sprog
OS-instrumenteringen oven på kernen er for det meste skrevet i Rust. Dette sprog er i sagens natur
Flag anvendes som standard, når der bygges --enable-default-pie
и --enable-default-ssp
for at muliggøre randomisering af adresserummet for eksekverbare filer (
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
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
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
Bottlerocket-kildekoden er udgivet på GitHub under Apache 2.0-licensen. Det har udviklerne allerede
Om reklamernes rettigheder
VDSina tilbud
Kilde: www.habr.com