
Amazon over de definitieve release — een gespecialiseerde distributie voor het draaien van containers en het efficiënt beheren ervan.
Bottlerocket (overigens zo genoemd naar kleine zelfgemaakte raketten met zwartkruit) is niet het eerste besturingssysteem voor containers, maar het heeft er alle kans op om breed verspreid te raken dankzij de standaardintegratie met AWS-diensten. Hoewel het systeem gericht is op de Amazon-cloud, maakt de open source-code het mogelijk om het overal te bouwen: lokaal op een server, op een Raspberry Pi, in een concurrerende cloud en zelfs in een omgeving zonder containers.
Dit is een waardige vervanger voor de CoreOS-distributie, die door Red Hat is opgedoekt.
Eigenlijk heeft de afdeling Amazon Web Services al Amazon Linux, dat onlangs in de tweede versie is uitgebracht: dit is een algemene distributie die kan worden uitgevoerd in een Docker-container of met Linux KVM-, Microsoft Hyper-V- en VMware ESXi-hypervisors. Het is geoptimaliseerd voor gebruik in de AWS-cloud, maar met de uitgave van Bottlerocket wordt iedereen aangeraden om te upgraden naar dit nieuwe systeem, dat veiliger, moderner is en minder middelen verbruikt.
AWS kondigde Bottlerocket aan . Het erkende onmiddellijk dat dit niet de eerste "Linux voor containers" is, en noemde CoreOS, Rancher OS en Project Atomic als inspiratiebronnen. De ontwikkelaars gaven aan dat het besturingssysteem het "resultaat is van lessen die we hebben geleerd uit jarenlang werken aan productiebedrijven op grote schaal bij Amazon, en rekening houdend met de ervaring die we in de afgelopen zes jaar hebben opgedaan in het draaien van containers."
Extreme minimalisme
Linux is ontdaan van alles wat niet nodig is voor het draaien van containers. Dit ontwerp, volgens het bedrijf, vermindert de aanvalsoppervlakte.
Dit betekent dat er minder pakketten in het basissysteem zijn geïnstalleerd, wat het onderhoud en de update van het besturingssysteem vergemakkelijkt en de kans op problemen door afhankelijkheden verkleint, waardoor het gebruik van middelen afneemt. In principe werkt hier alles binnen aparte containers, terwijl het basissysteem vrijwel kaal is.
Amazon heeft ook alle shells en interpreters verwijderd om het risico van gebruik of ongevalmatige privilegeverhoging door gebruikers uit te sluiten. In de basisafbeelding ontbreken de opdrachtregelinterface, de SSH-server en geïnterpreteerde talen zoals Python omwille van minimalisme en veiligheid. Beheertools zijn in een aparte servicecontainer geplaatst die standaard is uitgeschakeld.
Systeembeheer is op twee manieren mogelijk: via een API en orkestratie.
In plaats van een pakketbeheerder die afzonderlijke delen van software bijwerkt, downloadt Bottlerocket een volledige afbeelding van het bestandssysteem en herstart naar deze afbeelding. In geval van een opstartfout keert het automatisch terug, en een fout in de workload kan handmatig een rollback initiëren (opdracht via de API).
Framework (The Update Framework) laadt updates op basis van afbeeldingen naar alternatieve of "ontkoppelde" partities. Er zijn twee schijfpartities toegewezen aan het systeem, waarvan er één het actieve systeem bevat en de andere de update kopieert. Hierbij wordt de root-partitie in de alleen-lezen modus gemonteerd, terwijl de partitie /etc wordt gemonteerd met een bestandssysteem in het werkgeheugen en herstelt de oorspronkelijke staat na een herstart. Directe wijzigingen aan configuratiebestanden in /etc worden niet ondersteund: om instellingen op te slaan moet de API worden gebruikt of functionaliteit in afzonderlijke containers worden geplaatst.

Update-schema via API
Beveiliging
Containers worden gemaakt met behulp van de ingebouwde mechanismen van de Linux-kernel - cgroups, namespaces en seccomp, terwijl als systeem voor afdwinging van toegangscontrole, dat wil zeggen voor extra isolatie, wordt gebruikt in de "enforcing"-modus.
Standaard zijn er beleidsregels ingeschakeld voor het scheiden van middelen tussen containers en de kernel. Binaire bestanden zijn beveiligd met vlaggen, zodat gebruikers of programma's ze niet kunnen uitvoeren. En als iemand toegang krijgt tot het bestandssysteem, biedt Bottlerocket een tool voor het controleren en opvolgen van eventuele aangebrachte wijzigingen.
De "beveiligde opstartmodus" is geïmplementeerd via de device-mapper-verity-functie (), die de integriteit van de root-partitie tijdens het opstarten controleert. AWS beschrijft dm-verity als "een functie van de Linux-kernel die integriteitscontrole biedt om te voorkomen dat malware in het besturingssysteem werkt, zoals het herschrijven van de kern systeemsoftware."
Er is ook een filter in het systeem aanwezig (extended BPF, ), die het mogelijk maakt om kernelmodules te vervangen door veiligere BPF-programma's voor low-level systeemoperaties.
Uitvoeringsmodel
Door de gebruiker ingesteld
Compilatie
Beveiliging
Faalmodus
Toegang tot bronnen
Gebruiker
taak
ja
elke
gebruikersrechten
onderbreking van de uitvoering
systeemaanroep, fault
Kernel
taak
nee
statisch
nee
kernel paniek
direct
BPF
evenement
ja
JIT, CO-RE
verificatie, JIT
foutmelding
beperkte helpers
Het verschil tussen BPF en gewone code van gebruikers- of kernelniveau,
AWS verklaarde dat Bottlerocket "een operationeel model toepast dat de veiligheid verder verbetert door de toegang tot productie-servers met beheerdersprivileges te voorkomen", en "geschikt is voor grote gedistribueerde systemen waar controle over elke afzonderlijke host beperkt is."
Voor systeembeheerders is er een beheerderscontainer. Maar AWS denkt niet dat een beheerder vaak binnen Bottlerocket zal werken: "De toegang tot een afzonderlijk Bottlerocket-instantie is bedoeld voor ongewone taken: uitgebreide debugging en probleemoplossing", - ontwikkelaars.
De programmeertaal Rust
De OS-toolkit bovenop de kernel is voornamelijk geschreven in Rust. Deze taal vermindert van nature , evenals .
Bij de standaardbuild worden de vlaggen toegepast --enable-default-pie en --enable-default-ssp om adresrandomisatie voor uitvoerbare bestanden in te schakelen (, PIE) en stack overflow-bescherming.
Voor C/C++-pakketten worden bovendien de vlaggen ingeschakeld -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS en -fstack-clash-protection.
Naast Rust en C/C++, zijn sommige pakketten geschreven in de programmeertaal Go.
Integratie met AWS-diensten
Het verschil met soortgelijke containerbesturingssystemen is dat Amazon Bottlerocket heeft geoptimaliseerd voor gebruik op AWS en integratie met andere AWS-services.
De meest populaire containerorkestrator is Kubernetes, daarom heeft AWS integratie geïmplementeerd met de eigen Enterprise Kubernetes Service (EKS). De orkestratietools bevinden zich in een aparte beheerscontainer , die standaard is ingeschakeld en wordt beheerd via de API en de AWS SSM Agent.
Het zal interessant zijn om te zien of Bottlerocket het gaat maken, gezien het falen van enkele soortgelijke initiatieven in het verleden. Bijvoorbeeld, PhotonOS van Vmware bleek onbruikbaar te zijn, terwijl RedHat CoreOS heeft gekocht en , dat als een pionier op dit gebied werd beschouwd.
De integratie van Bottlerocket in de AWS-diensten maakt dit systeem uniek in zijn soort. Misschien is dit de belangrijkste reden waarom sommige gebruikers Bottlerocket kunnen verkiezen boven andere distributies, zoals CoreOS of Alpine. Het systeem is oorspronkelijk ontworpen voor gebruik met EKS en ECS, maar nogmaals, dat is niet verplicht. Ten eerste kan Bottlerocket en bijvoorbeeld worden gebruikt als een hosted-oplossing. Ten tweede behouden EKS- en ECS-gebruikers de keuze over het besturingssysteem.
De broncode van Bottlerocket is gepubliceerd op GitHub onder de Apache 2.0-licentie. Ontwikkelaars reageren al .
Adverteervermelding
VDSina Wat betreft de tweede IT-gigant, hun . Je kunt elk besturingssysteem installeren, ook van je eigen afbeelding. Elke server is aangesloten op een internetverbinding van 500 megabit en is gratis beschermd tegen DDoS-aanvallen!
Bron: habr.com
