En minimalistisk Linux-distribusjon, Bottlerocket, har blitt utgitt for å kjøre containere. Det viktigste med ham

En minimalistisk Linux-distribusjon, Bottlerocket, har blitt utgitt for å kjøre containere. Det viktigste med ham

Amazon Company kunngjort om den endelige utgivelsen Flaskehylse — en spesialisert distribusjon for å kjøre containere og effektivt administrere dem.

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 i mars 2020. Hun innrømmet umiddelbart at dette ikke er den første "Linux for containere", og siterte CoreOS, Rancher OS og Project Atomic som inspirasjonskilder. Utviklerne skrev at operativsystemet er «resultatet av leksjonene vi har lært fra å drive produksjonstjenester på Amazons skala i lang tid, og erfaringen vi har fått de siste seks årene om hvordan man kjører containere».

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 TUF (Oppdateringsrammeverket) laster ned bildebaserte oppdateringer til alternative eller "avmonterte" partisjoner. To diskpartisjoner er tildelt systemet, hvorav den ene inneholder det aktive systemet, og oppdateringen kopieres til den andre. I dette tilfellet er rotpartisjonen montert i skrivebeskyttet modus, og partisjonen /etc montert med filsystemet i RAM tmpfs og gjenoppretter den opprinnelige tilstanden etter en omstart. Direkte endring av konfigurasjonsfiler i /etc støttes ikke: for å lagre innstillinger bør du bruke API eller flytte funksjonaliteten til separate beholdere.

En minimalistisk Linux-distribusjon, Bottlerocket, har blitt utgitt for å kjøre containere. Det viktigste med ham
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 SELinux i "håndhevende" modus.

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 (dm-verity), som sjekker integriteten til rotpartisjonen under oppstart. AWS beskriver dm-verity som "en funksjon i Linux-kjernen som gir integritetssjekker for å forhindre skadelig programvare fra å kjøre på operativsystemet, for eksempel overskriving av kjernesystemprogramvare."

Det er også et filter i systemet eGMP (utvidet BPF, utviklet av Alexey Starovoitov), som gjør at kjernemoduler kan erstattes med sikrere BPF-programmer for systemoperasjoner på lavt nivå.

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 kilde

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." skrive utviklere.

Rustspråk

OS-instrumenteringen på toppen av kjernen er stort sett skrevet i Rust. Dette språket er i sin natur reduserer sannsynligheten for usikker minnetilgangOg eliminerer løpsforhold mellom gjenger.

Flagg brukes som standard når du bygger --enable-default-pie и --enable-default-ssp for å aktivere randomisering av adresseområdet til kjørbare filer (posisjonsuavhengig kjørbar, PIE) og stabeloverløpsbeskyttelse.

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 bottlerocket-kontroll-container, som er aktivert som standard og administreres gjennom API og AWS SSM Agent.

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 avsluttet prosjektet, som ble ansett som en pioner på området.

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 sette sammen selv og bruk den for eksempel som en vertsløsning. For det andre vil EKS- og ECS-brukere fortsatt ha muligheten til å velge operativsystem.

Bottlerocket-kildekoden er publisert på GitHub under Apache 2.0-lisensen. Utviklerne har allerede svare på feilrapporter og funksjonsforespørsler.

Om rettighetene til annonsering

VDSina tilbud VDS med daglig betaling. Det er mulig å installere hvilket som helst operativsystem, inkludert fra ditt eget bilde. Hver server er koblet til en Internett-kanal på 500 megabit og er gratis beskyttet mot DDoS-angrep!

En minimalistisk Linux-distribusjon, Bottlerocket, har blitt utgitt for å kjøre containere. Det viktigste med ham

Kilde: www.habr.com

Legg til en kommentar