Kompania Amazon
Bottlerocket (nga rruga, emri i dhënë për raketat e vogla të bëra vetë me pluhur të zi) nuk është OS i parë për kontejnerë, por ka të ngjarë që ai të bëhet i përhapur falë integrimit të paracaktuar me shërbimet AWS. Edhe pse sistemi është i fokusuar në renë e Amazonës, kodi me burim të hapur e lejon atë të ndërtohet kudo: lokalisht në një server, në një Raspberry Pi, në çdo re konkurruese dhe madje edhe në një mjedis pa kontejnerë.
Ky është një zëvendësim plotësisht i denjë për shpërndarjen CoreOS që varrosi Red Hat.
Në fakt, divizioni i Shërbimeve Ueb të Amazon ka tashmë Amazon Linux, i cili së fundmi doli në versionin e tij të dytë: është një shpërndarje me qëllime të përgjithshme që mund të ekzekutohet në një kontejner Docker ose me Linux KVM, Microsoft Hyper-V dhe VMware. Hipervizorët ESXi. Ai u optimizua për të ekzekutuar në renë AWS, por me lëshimin e Bottlerocket, të gjithë inkurajohen të përmirësohen në një sistem të ri që është më i sigurt, modern dhe përdor më pak burime.
AWS njoftoi Bottlerocket
Minimalizëm ekstrem
Linux është i zhveshur nga gjithçka që nuk është e nevojshme për të drejtuar kontejnerët. Ky dizajn, sipas kompanisë, zvogëlon sipërfaqen e sulmit.
Kjo do të thotë që më pak paketa janë instaluar në sistemin bazë, gjë që e bën më të lehtë mirëmbajtjen dhe përditësimin e sistemit operativ, si dhe zvogëlon mundësinë e problemeve për shkak të varësive, duke reduktuar përdorimin e burimeve. Në thelb, gjithçka këtu funksionon brenda kontejnerëve të veçantë, dhe sistemi themelor është praktikisht i zhveshur.
Amazon ka hequr gjithashtu të gjitha predhat dhe interpretuesit, duke eliminuar rrezikun e përdorimit të tyre ose përshkallëzimin aksidental të privilegjeve nga përdoruesit. Për hir të minimalizmit dhe sigurisë, imazhi bazë nuk përfshin një guaskë komandimi, një server SSH ose gjuhë të interpretuara si Python. Mjetet e administratorit vendosen në një kontejner shërbimi të veçantë, i cili është i çaktivizuar si parazgjedhje.
Sistemi menaxhohet në dy mënyra: përmes API-së dhe orkestrimit.
Në vend të një menaxheri paketash që përditëson pjesë të veçanta të softuerit, Bottlerocket shkarkon një imazh të plotë të sistemit të skedarëve dhe rindizet në të. Nëse një ngarkesë dështon, ajo automatikisht kthehet prapa dhe një dështim i ngarkesës së punës mund të shkaktojë një rikthim me dorë (komandë nëpërmjet API).
Korniza /etc
montuar me sistemin e skedarëve në RAM /etc
nuk mbështetet: për të ruajtur cilësimet, duhet të përdorni API ose ta zhvendosni funksionalitetin në kontejnerë të veçantë.
Skema e përditësimit të API
siguri
Kontejnerët krijohen nga mekanizmat standardë të kernelit Linux - cgroups, hapësirat e emrave dhe seccomp, dhe përdoren si një sistem kontrolli i hyrjes së detyruar, domethënë për izolim shtesë.
Si parazgjedhje, politikat janë të aktivizuara për të ndarë burimet midis kontejnerëve dhe kernelit. Binarët mbrohen me flamuj për të parandaluar përdoruesit ose programet që t'i ekzekutojnë ato. Dhe nëse dikush arrin te sistemi i skedarëve, Bottlerocket ofron një mjet për të kontrolluar dhe gjurmuar çdo ndryshim të bërë.
Modaliteti "boot i verifikuar" zbatohet përmes funksionit device-mapper-verity (
Ekziston edhe një filtër në sistem
Modeli i ekzekutimit
Perdorues i percaktuar
Përpilimi
siguri
Modaliteti i dështimit
Qasja në burime
Përdoruesi
detyrë
po
ndonjë
drejtat e përdoruesit
ndërprerja e ekzekutimit
thirrje sistemi, defekt
Thelbi
detyrë
jo
statike
jo
paniku i bërthamës
drejt
BPF
ngjarje
po
JIT, CO-RE
verifikimi, JIT
mesazh gabimi
ndihmës të kufizuar
Si ndryshon BPF nga kodi i zakonshëm i përdoruesit ose i nivelit të kernelit
AWS tha se Bottlerocket "punon një model operativ që rrit më tej sigurinë duke parandaluar lidhjet me serverët e prodhimit me privilegje administrative" dhe është "i përshtatshëm për sisteme të mëdha të shpërndara ku kontrolli mbi çdo host individual është i kufizuar".
Një kontejner administratori ofrohet për administratorët e sistemit. Por AWS nuk mendon se një administrator shpesh do të duhet të punojë brenda Bottlerocket: "Akti i hyrjes në një shembull të veçantë Bottlerocket është menduar për operacione të rralla: korrigjimi i avancuar dhe zgjidhjen e problemeve."
Gjuha e ndryshkut
Instrumentimi i OS në krye të kernelit është shkruar kryesisht në Rust. Kjo gjuhë është nga natyra e saj
Flamujt aplikohen si parazgjedhje gjatë ndërtimit --enable-default-pie
и --enable-default-ssp
për të mundësuar randomizimin e hapësirës së adresave të skedarëve të ekzekutueshëm (
Për paketat C/C++, përfshihen flamuj shtesë -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
Përveç Rust dhe C/C++, disa paketa janë shkruar në Go.
Integrimi me shërbimet AWS
Dallimi nga sistemet operative të kontejnerëve të ngjashëm është se Amazon ka optimizuar Bottlerocket për të funksionuar në AWS dhe për t'u integruar me shërbime të tjera AWS.
Orkestratori më i popullarizuar i kontejnerëve është Kubernetes, kështu që AWS ka prezantuar integrimin me Shërbimin e vet Kubernetes të Ndërmarrjeve (EKS). Mjetet e orkestrimit vijnë në një enë të veçantë kontrolli
Do të jetë interesante të shihet nëse Bottlerocket do të fillojë, duke pasur parasysh dështimin e disa nismave të ngjashme në të kaluarën. Për shembull, PhotonOS nga Vmware doli të ishte i padeklaruar dhe RedHat bleu CoreOS dhe
Integrimi i Bottlerocket në shërbimet AWS e bën këtë sistem unik në mënyrën e vet. Kjo është ndoshta arsyeja kryesore pse disa përdorues mund të preferojnë Bottlerocket mbi shpërndarjet e tjera si CoreOS ose Alpine. Sistemi fillimisht është krijuar për të punuar me EKS dhe ECS, por ne përsërisim se kjo nuk është e nevojshme. Së pari, Bottlerocket mund
Kodi burimor i Bottlerocket publikohet në GitHub nën licencën Apache 2.0. Zhvilluesit tashmë kanë
Për të Drejtat e Reklamimit
VDSina ofertat
Burimi: www.habr.com