Empresa Amazon
Bottlerocket (per cert, el nom que es dóna als petits coets de pols negre casolans) no és el primer sistema operatiu per a contenidors, però és probable que s'amplifiqui gràcies a la integració predeterminada amb els serveis d'AWS. Tot i que el sistema està enfocat al núvol d'Amazon, el codi font obert permet construir-lo a qualsevol lloc: localment en un servidor, en un Raspberry Pi, en qualsevol núvol competidor i fins i tot en un entorn sense contenidor.
Aquest és un substitut completament digne de la distribució CoreOS que va enterrar Red Hat.
De fet, la divisió d'Amazon Web Services ja té Amazon Linux, que fa poc va sortir en la seva segona versió: és una distribució d'ús general que es pot executar en un contenidor Docker o amb el Linux KVM, Microsoft Hyper-V i VMware. Hipervisors ESXi. Es va optimitzar per funcionar al núvol d'AWS, però amb el llançament de Bottlerocket, s'anima tothom a actualitzar-se a un nou sistema que sigui més segur, modern i que faci servir menys recursos.
AWS va anunciar Bottlerocket
Minimalisme extrem
A Linux no hi ha tot el que no és necessari per executar contenidors. Aquest disseny, segons l'empresa, redueix la superfície d'atac.
Això significa que s'instal·len menys paquets al sistema base, cosa que facilita el manteniment i l'actualització del sistema operatiu, i també redueix la probabilitat de problemes a causa de dependències, reduint l'ús de recursos. Bàsicament, aquí tot funciona dins de contenidors separats i el sistema subjacent està pràcticament nu.
Amazon també ha eliminat tots els intèrprets i intèrprets, eliminant el risc que s'utilitzin o que els usuaris augmenten accidentalment els privilegis. Per motius de minimalisme i seguretat, la imatge base no inclou un intèrpret d'ordres, un servidor SSH o llenguatges interpretats com Python. Les eines de l'administrador es col·loquen en un contenidor de servei independent, que està desactivat per defecte.
El sistema es gestiona de dues maneres: mitjançant l'API i l'orquestració.
En lloc d'un gestor de paquets que actualitza peces individuals de programari, Bottlerocket descarrega una imatge completa del sistema de fitxers i s'hi reinicia. Si una càrrega falla, es retrocedeix automàticament i una fallada de càrrega de treball pot desencadenar una descàrrega manualment (ordre mitjançant API).
Marc /etc
muntat amb el sistema de fitxers a la memòria RAM /etc
no compatible: per desar la configuració, hauríeu d'utilitzar l'API o moure la funcionalitat a contenidors separats.
Esquema d'actualització de l'API
Безопасность
Els contenidors es creen mitjançant mecanismes estàndard del nucli de Linux: cgroups, espais de noms i seccomp, i s'utilitzen com a sistema de control d'accés forçat, és a dir, per a un aïllament addicional
Per defecte, les polítiques estan habilitades per compartir recursos entre els contenidors i el nucli. Els binaris estan protegits amb marques per evitar que els usuaris o programes els executin. I si algú arriba al sistema de fitxers, Bottlerocket ofereix una eina per comprovar i fer un seguiment dels canvis realitzats.
El mode "arrencada verificada" s'implementa mitjançant la funció device-mapper-verity (
També hi ha un filtre al sistema
Model d'execució
Usuari definit
Recopilació
Безопасность
Mode de fallada
Accés als recursos
Usuari
la tasca
sí
qualsevol
drets d'usuari
interrompre l'execució
trucada al sistema, falla
El nucli
la tasca
нет
estàtica
нет
pànic del nucli
directament
BPF
esdeveniment
sí
JIT, CO-RE
verificació, JIT
missatge d'error
ajudants limitats
Com difereix BPF del codi normal d'usuari o de nivell del nucli
AWS va dir que Bottlerocket "empra un model operatiu que millora encara més la seguretat evitant les connexions a servidors de producció amb privilegis administratius" i és "adequat per a sistemes distribuïts grans on el control sobre cada host individual és limitat".
Es proporciona un contenidor d'administrador per als administradors del sistema. Però AWS no creu que un administrador hagi de treballar sovint dins de Bottlerocket: "L'acte d'iniciar sessió en una instància de Bottlerocket separada està pensat per a operacions poc freqüents: depuració avançada i resolució de problemes".
Llenguatge rust
La instrumentació del sistema operatiu a la part superior del nucli està escrita principalment en Rust. Aquesta llengua és per la seva naturalesa
Les banderes s'apliquen per defecte quan es construeixen --enable-default-pie
и --enable-default-ssp
per habilitar l'aleatorització de l'espai d'adreces dels fitxers executables (
Per als paquets C/C++, s'inclouen marques addicionals -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
A més de Rust i C/C++, alguns paquets estan escrits a Go.
Integració amb serveis d'AWS
La diferència amb sistemes operatius de contenidors similars és que Amazon ha optimitzat Bottlerocket per executar-se a AWS i integrar-se amb altres serveis d'AWS.
L'orquestrador de contenidors més popular és Kubernetes, de manera que AWS ha introduït la integració amb el seu propi servei Enterprise Kubernetes (EKS). Les eines d'orquestració vénen en un contenidor de control independent
Serà interessant veure si Bottlerocket s'enlaira, donat el fracàs d'algunes iniciatives similars en el passat. Per exemple, PhotonOS de Vmware va resultar no ser reclamat, i RedHat va comprar CoreOS i
La integració de Bottlerocket als serveis d'AWS fa que aquest sistema sigui únic a la seva manera. Aquesta és potser la raó principal per la qual alguns usuaris poden preferir Bottlerocket a altres distribucions com CoreOS o Alpine. El sistema està dissenyat inicialment per funcionar amb EKS i ECS, però repetim que això no és necessari. En primer lloc, Bottlerocket pot
El codi font de Bottlerocket es publica a GitHub sota la llicència Apache 2.0. Els desenvolupadors ja ho han fet
Sobre els drets de publicitat
VDSina ofertes
Font: www.habr.com