
Kompania Amazon pĂ«r publikimin pĂ«rfundimtar â njĂ« distribucion i specializuar pĂ«r ekzekutimin e kontejnerĂ«ve dhe menaxhimin e tyre nĂ« mĂ«nyrĂ« efikase.
Bottlerocket (pĂ«r rastin, kĂ«shtu quhen raketat e vogla tĂ« bĂ«ra nĂ« shtĂ«pi me barut tymi) â nuk Ă«shtĂ« sistemi i parĂ« operativ pĂ«r kontejnerĂ«, por ka shumĂ« gjasa qĂ« tĂ« fitojĂ« pĂ«rhapje tĂ« madhe falĂ« integrimit tĂ« tij tĂ« paracaktuar me shĂ«rbimet AWS. MegjithĂ«se sistemi Ă«shtĂ« orientuar pĂ«r re Amazon, kodi i hapur lejon qĂ« tĂ« ndĂ«rtohet kudo: lokal nĂ« server, nĂ« Raspberry Pi, nĂ« çdo re konkuruese dhe madje edhe nĂ« njĂ« mjedis pa kontejnerĂ«.
Kjo është një zëvendësim shumë i denjë për distribucionin CoreOS, të cilin Red Hat e shpalli të vdekur.
Në fakt, departamenti i Amazon Web Services tashmë ka Amazon Linux, i cili sapo ka dalë në versionin e tij të dytë: është një distribucion i përgjithshëm që mund të ekzekutohet në një kontejner Docker ose me hipervizorët Linux KVM, Microsoft Hyper-V dhe VMware ESXi. Ai është optimizuar për funksionimin në re AWS, por me daljen e Bottlerocket gjithkujt i rekomandohet të bëjë përditësimin në sistemin e ri, i cili është më i sigurt, modern dhe konsumon më pak burime.
AWS e shpalli Bottlerocket . Ajo e pranoi menjëherë se kjo nuk është "Linux për kontejnerë" i parë, duke përmendur si burime frymëzimi CoreOS, Rancher OS dhe Project Atomic. Zhvilluesit shkruan se sistemi operativ është "rezultati i mësimeve që kemi nxjerrë gjatë një periudhe të gjatë pune me shërbime prodhimi në shkallë të madhe në Amazon, dhe me përvojën që kemi fituar gjatë gjashtë viteve të fundit mbi se si të ekzekutojmë kontejnerë."
Minimalizmi ekstrem
Linux është pastruar nga gjithçka që nuk është e nevojshme për ekzekutimin e kontejnerëve. Ky dizajn, sipas kompanisë, redukton sipërfaqen e sulmit.
Kjo do të thotë se në sistemin bazë instalohen më pak paketa, gjë që thjeshton mbështetje dhe përditësimin e sistemit operativ, si dhe ul probabilitetin e ndodhisë së problemeve për shkak të varësive, duke zvogëluar përdorimin e burimeve. Në thelb, gjithçka funksionon brenda kontejnerëve të veçantë, ndërsa sistemi bazë është pothuajse i zbrazët.
Amazon gjithashtu e ka hequr çdo shell dhe interpretor, duke përjashtuar rrezikun e përdorimit të tyre ose rritjen aksidentale të privilegjeve nga përdoruesit. Në imazhin bazë, për shkak të minimalizmit dhe sigurisë, nuk ka një shell komandash, server SSH dhe gjuhë interpretuese si Python. Mjetet për administratorin janë transferuar në një kontejner shërbimi të veçantë, i cili është i çaktivizuar nga parazgjedhja.
Menaxhimi i sistemit parashikohet në dy mënyra: përmes API-së dhe orkestrimit.
Në vend të menaxherit të paketave, i cili përditëson pjesë të veçanta të softuerit, Bottlerocket shkarkon një imazh të plotë të sistemit të skedarëve dhe ridërrgon në të. Në rast të dështimit të ngarkesës, ai automatikisht kthehet pas, dhe dështimi i ngarkesës mund të inicojë rikthimin manual (komandë përmes API-së).
Korniza (The Update Framework) shkarkon përditësime të bazuara në imazhe në seksione alternative ose "të shkëputura". Në sistem parashikohet dy seksione të diskut, njëra prej të cilave përmban sistemin aktiv, ndërsa tjetra kopjon përditësimin. Në këtë rast, seksioni rrënjor montohet në mënyrë vetëm për lexim, ndërsa seksioni /etc montohet me sistemin e skedarëve në memorjen e përkohshme dhe rikthen gjendjen origjinale pas rifillimit. Ndryshimi direkt i skedarëve të konfigurimit në /etc nuk mbështetet: për të ruajtur cilësimet duhet të përdoren API ose të transferohet funksionaliteti në kontejnerë të veçantë.

Shtesa e përditësimit përmes API-së
Siguria
KontejnerĂ«t krijohen me mekanizmat standard tĂ« bĂ«rthamĂ«s Linux â cgroups, hapĂ«sira emrash dhe seccomp, dhe si sistem tĂ« kontrollit tĂ« detyrueshĂ«m pĂ«r qasjen, pra pĂ«r izolim tĂ« mĂ«tejshĂ«m pĂ«rdoret nĂ« modin "enforcing".
Si rregull, politikat për ndarjen e burimeve midis kontejnerëve dhe bërthamës janë të aktivizuara. Binarët janë të mbrojtur me flagje, që përdoruesit ose programet të mos mund t'i ekzekutojnë. Dhe nëse dikush arrin të hyjë në sistemin e skedarëve, Bottlerocket ofron një mjet për të kontrolluar dhe mbajtur ndjekjen e çdo ndryshimi të bërë.
Rezhimi "i verifikuar" zbatohet përmes funksionit device-mapper-verity (), i cili kontrollon integritetin e seksionit rrënjor gjatë ngarkesës. AWS e përshkruan dm-verity si "një funksion të bërthamës Linux, i cili siguron verifikimin e integritetit për të parandaluar ekzekutimin e malware-it në sistemin operativ, si rishkrimin e softuerit kryesor të sistemit."
Gjithashtu, në sistem gjendet një filtrues (extended BPF, ), i cili lejon zëvendësimin e moduleve të bërthamës me programe më të sigurta BPF për operacione sistemike me nivele të ulta.
Modeli i ekzekutimit
Caktohet nga përdoruesi
Kompilimi
Siguria
Rezhimi i dështimit
Qasja në burime
Përdorues
detyra
po
çdo
të drejtat e përdoruesve
ndërprerja e ekzekutimit
thirrje sistemore, gabim
Nuk është
detyra
jo
statike
jo
panika e kernel-it
drejtë
BPF
ngjarje
po
JIT, CO-RE
verifikimi, JIT
mesazh gabimi
ndihmës të kufizuar
Dallimi midis BPF dhe kodit të zakonshëm të nivelit të përdoruesit ose kernel-it,
AWS deklaroi se Bottlerocket "aplikon një model operativ që e rrit edhe më shumë sigurinë, duke penguar lidhjet me serverët e prodhimit me privilegje administratori", dhe "është e përshtatshme për sisteme të mëdha të shpërndara, ku kontrolli mbi çdo streho të veçantë është i kufizuar".
PĂ«r administratorĂ«t e sistemeve, Ă«shtĂ« parashikuar njĂ« kontenier administratori. Por AWS nuk mendon se administratori do tĂ« punojĂ« shpesh brenda Bottlerocket: "Aktiviteti i lidhjes me njĂ« instancĂ« tĂ« veçantĂ« Bottlerocket Ă«shtĂ« i destinuar pĂ«r operacione tĂ« pakta: debuggim tĂ« avancuar dhe çmontim tĂ« problemeve", â zhvilluesit.
Gjuha Rust
Instrumenti i OS mbi kernel kryesisht është shkruar në Rust. Ky gjuhë natyrisht , dhe gjithashtu .
Gjatë ndërtimit të parazgjedhur aplikohen flamujt --enable-default-pie dhe --enable-default-ssp për të aktivizuar rastësimin e hapësirës adresore të skedarëve ekzekutivë (, PIE) dhe mbrojtjen nga mbipërmbajtja e stack-ut.
Për paketat në C/C++ gjithashtu aktivizohen flamujt -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS dhe -fstack-clash-protection.
Përveç Rust dhe C/C++, disa paketa janë shkruar në gjuhën Go.
Integrimi me shërbimet AWS
Dallimi nga sistemet operative të ngjashme të kontenierëve është se Amazon e optimizoi Bottlerocket për ta bërë atë të punojë me AWS dhe të integrohet me shërbime të tjera AWS.
Orkestratori më i popullarizuar i kontenierëve është Kubernetes, prandaj AWS implementoi integrimin me shërbimin e vet Enterprise Kubernetes (EKS). Veglat për orkestrimin vijnë në një kontenier administrues të veçantë , i cili përfshihet si parazgjedhje dhe menaxhohet përmes API dhe AWS SSM Agent.
Do të jetë interesante të shihet nëse Bottlerocket do të ngrihet, duke marrë parasysh dështimin e disa iniciativave të ngjashme në të kaluarën. Për shembull, PhotonOS nga Vmware u pa si e papërjetuar, dhe RedHat bleu CoreOS dhe , i cili konsiderohej si pionier në këtë fushë.
Integrimi i Bottlerocket me shërbimet AWS e bën këtë sistem unik në llojin e tij. Ndoshta kjo është arsyeja kryesore pse disa përdorues mund të preferojnë Bottlerocket ndaj distribucioneve të tjera, si CoreOS ose Alpine. Sistemi është projektuar fillimisht për të punuar me EKS dhe ECS, por ta përsërisim, kjo nuk është e domosdoshme. Së pari, Bottlerocket mund të përdoret gjithashtu, për shembull, si një zgjidhje të hostuar. Së dyti, përdoruesit e EKS dhe ECS prapë do të ruajnë mundësinë për zgjedhjen e OS-së.
Kodi burimor i Bottlerocket është publikuar në GitHub nën licencën Apache 2.0. Zhvilluesit tashmë .
Si reklamë
VDSina ofron . ShtĂ« e mundur tĂ« instaloni çdo sistem operativ, pĂ«rfshirĂ« nga imazhi juaj. Ădo server Ă«shtĂ« i lidhur me njĂ« kanal interneti prej 500 Megabit dhe Ă«shtĂ« falas i mbrojtur nga sulmet DDoS!
Burimi: habr.com
