Amazon Company
Bottlerocket (forresten navnet gitt til små hjemmelagde svartkruttraketter) er ikke det første operativsystemet for containere, men det er sannsynlig at det vil bli utbredt takket være standardintegrasjon med AWS-tjenester. Selv om systemet er fokusert på Amazon-skyen, lar den åpne kildekoden den bygges hvor som helst: lokalt på en server, på en Raspberry Pi, i en hvilken som helst konkurrerende sky, og til og med i et containerløst miljø.
Dette er en fullstendig verdig erstatning for CoreOS-distribusjonen som Red Hat begravde.
Faktisk har Amazon Web Services-divisjonen allerede Amazon Linux, som nylig kom ut i sin andre versjon: det er en generell distribusjon som kan kjøres i en Docker-beholder eller med Linux KVM, Microsoft Hyper-V og VMware ESXi hypervisorer. Det ble optimalisert for å kjøre på AWS-skyen, men med utgivelsen av Bottlerocket oppfordres alle til å oppgradere til et nytt system som er sikrere, moderne og bruker færre ressurser.
AWS annonserte Bottlerocket
Ekstrem minimalisme
Linux er strippet for alt som ikke er nødvendig for å kjøre containere. Denne designen, ifølge selskapet, reduserer angrepsflaten.
Dette betyr at færre pakker er installert på basissystemet, noe som gjør det enklere å vedlikeholde og oppdatere OS, og reduserer også sannsynligheten for problemer på grunn av avhengigheter, noe som reduserer ressursbruken. I utgangspunktet fungerer alt her inne i separate beholdere, og det underliggende systemet er praktisk talt bart.
Amazon har også fjernet alle skjell og tolker, og eliminert risikoen for at de blir brukt eller at brukere ved et uhell eskalerer privilegier. Av hensyn til minimalisme og sikkerhet, inkluderer ikke basisbildet et kommandoskall, en SSH-server eller tolkede språk som Python. Administratorverktøy er plassert i en egen tjenestebeholder, som er deaktivert som standard.
Systemet administreres på to måter: gjennom API og orkestrering.
I stedet for en pakkebehandling som oppdaterer individuelle programvaredeler, laster Bottlerocket ned et komplett filsystembilde og starter det på nytt. Hvis en belastning mislykkes, ruller den automatisk tilbake, og en arbeidsbelastningsfeil kan utløse en tilbakerulling manuelt (kommando via API).
Rammeverk /etc
montert med filsystemet i RAM /etc
støttes ikke: for å lagre innstillinger bør du bruke API eller flytte funksjonaliteten til separate beholdere.
API-oppdateringsskjema
Безопасность
Beholdere er opprettet av standardmekanismene til Linux-kjernen - cgroups, namespaces og seccomp, og brukes som et tvungen tilgangskontrollsystem, det vil si for ytterligere isolasjon
Som standard er policyer aktivert for å dele ressurser mellom containere og kjernen. Binærfiler er beskyttet med flagg for å forhindre at brukere eller programmer kjører dem. Og hvis man kommer til filsystemet, tilbyr Bottlerocket et verktøy for å sjekke og spore eventuelle endringer som er gjort.
"Verified boot"-modusen implementeres gjennom enhet-mapper-verity-funksjonen (
Det er også et filter i systemet
Utførelsesmodell
Brukerdefinert
Samling
Безопасность
Feil modus
Tilgang til ressurser
Bruker
oppgaven
ja
noen
brukerrettigheter
avbryte utførelsen
systemanrop, feil
Kjernen
oppgaven
ikke
statisk
ikke
kjernepanikk
rett
BPF
event
ja
JIT, CO-RE
verifisering, JIT
feilmelding
begrensede hjelpere
Hvordan BPF skiller seg fra vanlig bruker- eller kjernenivåkode
AWS sa at Bottlerocket "bruker en driftsmodell som ytterligere forbedrer sikkerheten ved å forhindre tilkoblinger til produksjonsservere med administrative rettigheter" og er "egnet for store distribuerte systemer der kontroll over hver enkelt vert er begrenset."
En administratorbeholder er tilgjengelig for systemadministratorer. Men AWS tror ikke en administrator ofte trenger å jobbe inne i Bottlerocket: "At logge på en separat Bottlerocket-instans er beregnet på sjeldne operasjoner: avansert feilsøking og feilsøking."
Rustspråk
OS-instrumenteringen på toppen av kjernen er stort sett skrevet i Rust. Dette språket er i sin natur
Flagg brukes som standard når du bygger --enable-default-pie
и --enable-default-ssp
for å aktivere randomisering av adresseområdet til kjørbare filer (
For C/C++-pakker er ekstra flagg inkludert -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
Foruten Rust og C/C++, er noen pakker skrevet i Go.
Integrasjon med AWS-tjenester
Forskjellen fra lignende containeroperativsystemer er at Amazon har optimalisert Bottlerocket for å kjøre på AWS og integrere med andre AWS-tjenester.
Den mest populære containerorkestratoren er Kubernetes, så AWS har introdusert integrasjon med sin egen Enterprise Kubernetes Service (EKS). Orkestreringsverktøy kommer i en egen kontrollbeholder
Det vil være interessant å se om Bottlerocket tar av, gitt feilen til noen lignende initiativer tidligere. PhotonOS fra Vmware viste seg for eksempel å være uavhentet, og RedHat kjøpte CoreOS og
Bottlerockets integrasjon i AWS-tjenester gjør dette systemet unikt på sin egen måte. Dette er kanskje hovedgrunnen til at noen brukere kanskje foretrekker Bottlerocket fremfor andre distroer som CoreOS eller Alpine. Systemet er i utgangspunktet designet for å fungere med EKS og ECS, men vi gjentar at dette ikke er nødvendig. For det første kan Bottlerocket
Bottlerocket-kildekoden er publisert på GitHub under Apache 2.0-lisensen. Utviklerne har allerede
Om rettighetene til annonsering
VDSina tilbud
Kilde: www.habr.com