Amazon Kompanio
Bottlerocket (cetere, la nomo donita al malgrandaj memfaritaj nigraj pulvoraj raketoj) ne estas la unua OS por ujoj, sed verŝajne ĝi disvastiĝos danke al defaŭlta integriĝo kun AWS-servoj. Kvankam la sistemo estas koncentrita sur la Amazon-nubo, la malferma fontkodo permesas ĝin konstrui ie ajn: loke sur servilo, sur Raspberry Pi, en iu ajn konkuranta nubo, kaj eĉ en senenhava medio.
Ĉi tio estas tute inda anstataŭaĵo por la CoreOS-distribuo, kiun Red Hat enterigis.
Fakte, la Amazon Web Services-dividado jam havas Amazon Linukson, kiu ĵus eliris en sia dua versio: ĝi estas ĝeneraluzebla distribuo, kiu povas esti rulita en Docker-ujo aŭ per la Linukso KVM, Microsoft Hyper-V kaj VMware. ESXi-hiperviziiloj. Ĝi estis optimumigita por funkcii en la AWS-nubo, sed kun la liberigo de Bottlerocket, ĉiuj estas kuraĝigitaj ĝisdatigi al nova sistemo, kiu estas pli sekura, moderna kaj uzas malpli da rimedoj.
AWS anoncis Bottlerocket
Ekstrema minimalismo
Linukso estas senigita de ĉio, kio ne necesas por ruli ujojn. Ĉi tiu dezajno, laŭ la kompanio, reduktas la ataksurfacon.
Ĉi tio signifas, ke malpli da pakaĵoj estas instalitaj sur la baza sistemo, kio faciligas konservi kaj ĝisdatigi la OS, kaj ankaŭ reduktas la verŝajnecon de problemoj pro dependecoj, reduktante la uzadon de rimedoj. Esence, ĉio ĉi tie funkcias ene de apartaj ujoj, kaj la subesta sistemo estas preskaŭ nuda.
Amazon ankaŭ forigis ĉiujn ŝelojn kaj interpretistojn, forigante la riskon de ili esti uzataj aŭ de uzantoj hazarde eskaladi privilegiojn. Por minimumismo kaj sekureco, la baza bildo ne inkluzivas komandan ŝelon, SSH-servilon aŭ interpretitajn lingvojn kiel Python. Administranto-iloj estas metitaj en apartan servujon, kiu estas malebligita defaŭlte.
La sistemo estas administrita laŭ du manieroj: per la API kaj instrumentado.
Anstataŭ pakaĵmanaĝero kiu ĝisdatigas individuajn programojn, Bottlerocket elŝutas kompletan dosiersistembildon kaj rekomencas en ĝi. Se ŝarĝo malsukcesas, ĝi aŭtomate retroiras, kaj malsukceso de laborŝarĝo povas ekigi malfunkcion permane (komando per API).
Kadro /etc
muntita kun la dosiersistemo en RAM /etc
ne subtenata: por konservi agordojn vi devus uzi la API aŭ movi la funkciojn en apartajn ujojn.
API-ĝisdatigoskemo
Sekureco
Ujoj estas kreitaj per normaj mekanismoj de la Linukso-kerno - cgroups, nomspacoj kaj seccomp, kaj estas uzataj kiel deviga alirkontrolsistemo, tio estas, por plia izolado.
Defaŭlte, politikoj estas ebligitaj por dividi rimedojn inter ujoj kaj la kerno. Binaroj estas protektitaj per flagoj por malhelpi uzantojn aŭ programojn ekzekuti ilin. Kaj se oni atingas la dosiersistemon, Bottlerocket ofertas ilon por kontroli kaj spuri ajnajn ŝanĝojn faritajn.
La "kontrolita lanĉo" reĝimo estas efektivigita per la aparato-mapper-verity funkcio (
Ankaŭ estas filtrilo en la sistemo
Ekzekuta Modelo
Uzanto difinita
Kompilo
Sekureco
Malsukcesa reĝimo
Aliro al rimedoj
Uzanto
la tasko
jes
iu ajn
uzantrajtoj
interrompi la ekzekuton
sistemvoko, misfaro
La kerno
la tasko
neniu
statika
neniu
kerno paniko
rektaj
GMP
evento
jes
JIT, CO-RE
konfirmo, JIT
erarmesaĝo
limigitaj helpantoj
Kiel BPF diferencas de regula uzanto aŭ kernnivela kodo
AWS diris, ke Bottlerocket "utiligas mastruman modelon kiu plue plibonigas sekurecon malhelpante ligojn al produktaj serviloj kun administraj privilegioj" kaj estas "taŭga por grandaj distribuitaj sistemoj kie kontrolo de ĉiu individua gastiganto estas limigita."
Administra ujo estas provizita por sistemaj administrantoj. Sed AWS ne opinias, ke administranto ofte devos labori ene de Bottlerocket: "La ago ensaluti en apartan petskribon de Bottlerocket estas destinita por maloftaj operacioj: altnivela sencimigado kaj solvo de problemoj,"
Rusta lingvo
La OS-instrumentado supre de la kerno estas plejparte skribita en Rust. Ĉi tiu lingvo estas laŭ sia naturo
Flagoj estas aplikataj defaŭlte dum konstruado --enable-default-pie
и --enable-default-ssp
por ebligi hazardigon de la adrespaco de ruleblaj dosieroj (
Por C/C++-pakaĵoj, pliaj flagoj estas inkluzivitaj -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
Krom Rust kaj C/C++, kelkaj pakaĵoj estas skribitaj en Go.
Integriĝo kun AWS-servoj
La diferenco de similaj kontenaj operaciumoj estas, ke Amazon optimumigis Bottlerocket por funkcii per AWS kaj integriĝi kun aliaj AWS-servoj.
La plej populara kontenerorkestro estas Kubernetes, do AWS enkondukis integriĝon kun sia propra Enterprise Kubernetes Service (EKS). Orkestraj iloj venas en aparta kontrolujo
Estos interese vidi ĉu Bottlerrocket ekflugas, pro la fiasko de iuj similaj iniciatoj en la pasinteco. Ekzemple, PhotonOS de Vmware montriĝis nepostulita, kaj RedHat aĉetis CoreOS kaj
La integriĝo de Bottlerocket al AWS-servoj igas ĉi tiun sistemon unika laŭ sia propra maniero. Ĉi tio eble estas la ĉefa kialo, kial iuj uzantoj eble preferas Bottlerocket ol aliaj distroj kiel CoreOS aŭ Alpine. La sistemo estas komence desegnita por labori kun EKS kaj ECS, sed ni ripetas, ke tio ne estas necesa. Unue, Bottlerocket povas
La fontkodo de Bottlerocket estas publikigita sur GitHub sub la permesilo Apache 2.0. La programistoj jam havas
Pri la Rajtoj de Reklamado
VDSina ofertas
fonto: www.habr.com