Minimalistyczna dystrybucja Linuksa, Bottlerocket, została wydana do obsługi kontenerów. Najważniejsze o nim

Minimalistyczna dystrybucja Linuksa, Bottlerocket, została wydana do obsługi kontenerów. Najważniejsze o nim

Firma Amazon ogłosił o ostatecznej wersji Butelka — wyspecjalizowana dystrybucja do obsługi kontenerów i efektywnego zarządzania nimi.

Bottlerocket (swoją drogą, nazwa nadana małym, domowym rakietom czarnoprochowym) nie jest pierwszym systemem operacyjnym dla kontenerów, ale prawdopodobnie stanie się powszechny dzięki domyślnej integracji z usługami AWS. Choć system jest nastawiony na chmurę Amazon, otwarty kod źródłowy pozwala na jego zbudowanie w dowolnym miejscu: lokalnie na serwerze, na Raspberry Pi, w dowolnej konkurencyjnej chmurze, a nawet w środowisku bezkontenerowym.

Jest to całkowicie godny zamiennik dystrybucji CoreOS, którą Red Hat zakopał.

Tak naprawdę dział Amazon Web Services ma już Amazon Linux, który niedawno ukazał się w drugiej wersji: jest to dystrybucja ogólnego przeznaczenia, którą można uruchomić w kontenerze Docker lub z Linux KVM, Microsoft Hyper-V i VMware Hiperwizory ESXi. Został zoptymalizowany do działania w chmurze AWS, ale wraz z wydaniem Bottlerocket zachęcamy wszystkich do aktualizacji do nowego systemu, który jest bezpieczniejszy, nowoczesny i zużywa mniej zasobów.

AWS ogłosiło Bottlerocket w marcu 2020 r. Od razu przyznała, że ​​nie jest to pierwszy „Linux dla kontenerów”, jako źródła inspiracji podając CoreOS, Rancher OS i Project Atomic. Twórcy napisali, że system operacyjny jest „wynikiem lekcji, jakie wynieśliśmy z prowadzenia przez długi czas usług produkcyjnych na skalę Amazona oraz doświadczenia, jakie zdobyliśmy przez ostatnie sześć lat w zakresie obsługi kontenerów”.

Skrajny minimalizm

Linux jest pozbawiony wszystkiego, co nie jest potrzebne do uruchamiania kontenerów. Według firmy konstrukcja ta zmniejsza powierzchnię ataku.

Oznacza to, że w systemie bazowym instalowanych jest mniej pakietów, co ułatwia konserwację i aktualizację systemu operacyjnego, a także zmniejsza prawdopodobieństwo problemów wynikających z zależności, zmniejszając zużycie zasobów. Zasadniczo wszystko tutaj działa w oddzielnych kontenerach, a system leżący u podstaw jest praktycznie goły.

Amazon usunął także wszystkie powłoki i interpretery, eliminując ryzyko ich użycia lub przypadkowego zwiększenia uprawnień przez użytkowników. Ze względu na minimalizm i bezpieczeństwo obraz bazowy nie zawiera powłoki poleceń, serwera SSH ani języków interpretowanych, takich jak Python. Narzędzia administratora znajdują się w osobnym kontenerze usług, który jest domyślnie wyłączony.

Zarządzanie systemem odbywa się na dwa sposoby: poprzez API i orkiestrację.

Zamiast menedżera pakietów, który aktualizuje poszczególne elementy oprogramowania, Bottlerocket pobiera kompletny obraz systemu plików i uruchamia się ponownie. Jeśli ładowanie nie powiedzie się, zostanie ono automatycznie przywrócone, a awaria obciążenia może spowodować ręczne wycofanie (polecenie za pośrednictwem interfejsu API).

Struktura TUF (The Update Framework) pobiera aktualizacje oparte na obrazach na alternatywne lub „odmontowane” partycje. Dla systemu przydzielane są dwie partycje dyskowe, z których jedna zawiera aktywny system, a aktualizacja jest kopiowana do drugiej. W tym przypadku partycja główna jest montowana w trybie tylko do odczytu, a partycja /etc montowany z systemem plików w pamięci RAM tmpfs i przywraca pierwotny stan po ponownym uruchomieniu. Bezpośrednia modyfikacja plików konfiguracyjnych w /etc nieobsługiwane: do zapisania ustawień należy skorzystać z API lub przenieść funkcjonalność do osobnych kontenerów.

Minimalistyczna dystrybucja Linuksa, Bottlerocket, została wydana do obsługi kontenerów. Najważniejsze o nim
Schemat aktualizacji API

bezpieczeństwo

Kontenery tworzone są przez standardowe mechanizmy jądra Linuksa – cgroups, namespaces i seccomp i służą jako system wymuszonej kontroli dostępu, czyli dodatkowej izolacji SELinux w trybie „egzekwującym”.

Domyślnie zasady umożliwiają współdzielenie zasobów pomiędzy kontenerami i jądrem. Pliki binarne są chronione flagami, aby uniemożliwić użytkownikom lub programom ich wykonanie. A jeśli uda się dostać do systemu plików, Bottlerocket oferuje narzędzie do sprawdzania i śledzenia wszelkich wprowadzonych zmian.

Tryb „zweryfikowanego rozruchu” jest realizowany poprzez funkcję urządzenia-mapper-verity (dm prawda), który sprawdza integralność partycji root podczas rozruchu. AWS opisuje dm-verity jako „funkcję jądra Linuksa, która zapewnia kontrolę integralności, aby zapobiec uruchomieniu złośliwego oprogramowania w systemie operacyjnym, na przykład nadpisaniu podstawowego oprogramowania systemowego”.

W systemie znajduje się również filtr eGMP (rozszerzony BPF, opracowany przez Aleksieja Starovoitova), co umożliwia wymianę modułów jądra na bezpieczniejsze programy BPF do wykonywania operacji systemowych na niskim poziomie.

Model wykonania
Określony przez użytkownika
Kompilacja
bezpieczeństwo
Tryb awaryjny
Dostęp do zasobów

Użytkownik
zadanie
tak
dowolny
prawa użytkownika
przerwać wykonanie
wywołanie systemowe, błąd

Rdzeń
zadanie
nie
statyczny
nie
panika jądra
prosto

BPF
wydarzenie
tak
JIT, CO-RE
weryfikacja, JIT
Komunikat o błędzie
ograniczeni pomocnicy

Czym BPF różni się od kodu na poziomie zwykłego użytkownika lub jądra źródło

Według AWS Bottlerocket „stosuje model operacyjny, który jeszcze bardziej zwiększa bezpieczeństwo, uniemożliwiając połączenia z serwerami produkcyjnymi posiadającymi uprawnienia administracyjne” i „jest odpowiedni dla dużych systemów rozproszonych, w których kontrola nad każdym pojedynczym hostem jest ograniczona”.

Dla administratorów systemu dostępny jest kontener administratora. Ale AWS nie uważa, że ​​administrator będzie musiał często pracować w Bottlerocket: „Akt zalogowania się do osobnej instancji Bottlerocket jest przeznaczony do rzadkich operacji: zaawansowanego debugowania i rozwiązywania problemów” napisz programiści.

Rdzawy język

Instrumentacja systemu operacyjnego znajdująca się na jądrze jest w większości napisana w języku Rust. Ten język ma swoją naturę zmniejsza prawdopodobieństwo niebezpiecznego dostępu do pamięcia także eliminuje warunki wyścigu między wątkami.

Flagi są domyślnie stosowane podczas budowania --enable-default-pie и --enable-default-ssp aby umożliwić randomizację przestrzeni adresowej plików wykonywalnych (Plik wykonywalny niezależny od pozycji, PIE) i zabezpieczenie przed przepełnieniem stosu.

W przypadku pakietów C/C++ dołączone są dodatkowe flagi -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Oprócz Rusta i C/C++, niektóre pakiety są napisane w Go.

Integracja z usługami AWS

Różnica w stosunku do podobnych kontenerowych systemów operacyjnych polega na tym, że Amazon zoptymalizował Bottlerocket do działania na platformie AWS i integracji z innymi usługami AWS.

Najpopularniejszym orkiestratorem kontenerów jest Kubernetes, dlatego AWS wprowadził integrację z własną usługą Enterprise Kubernetes Service (EKS). Narzędzia do orkiestracji znajdują się w oddzielnym kontenerze sterującym kontener-kontrola-butelki-rakiety, który jest domyślnie włączony i zarządzany poprzez API i agenta AWS SSM.

Ciekawie będzie zobaczyć, czy Bottlerocket odniesie sukces, biorąc pod uwagę niepowodzenie niektórych podobnych inicjatyw w przeszłości. Na przykład PhotonOS od Vmware okazał się nieodebrany, a RedHat kupił CoreOS i zamknął projekt, uważany za pioniera w tej dziedzinie.

Integracja Bottlerocket z usługami AWS czyni ten system wyjątkowym na swój sposób. Jest to być może główny powód, dla którego niektórzy użytkownicy wolą Bottlerocket od innych dystrybucji, takich jak CoreOS lub Alpine. System jest początkowo przeznaczony do współpracy z EKS i ECS, jednak powtarzamy, że nie jest to konieczne. Po pierwsze, Bottlerocket może zmontuj samodzielnie i używaj go na przykład jako rozwiązania hostowanego. Po drugie, użytkownicy EKS i ECS nadal będą mieli możliwość wyboru systemu operacyjnego.

Kod źródłowy Bottlerocket jest publikowany na GitHubie na licencji Apache 2.0. Twórcy już to zrobili odpowiadaj na raporty o błędach i prośby o nowe funkcje.

O prawach reklamy

VDSina oferuje VDS z codzienną płatnością. Istnieje możliwość zainstalowania dowolnego systemu operacyjnego, w tym z własnego obrazu. Każdy serwer jest podłączony do kanału internetowego o przepustowości 500 Megabitów i jest chroniony przed atakami DDoS za darmo!

Minimalistyczna dystrybucja Linuksa, Bottlerocket, została wydana do obsługi kontenerów. Najważniejsze o nim

Źródło: www.habr.com

Dodaj komentarz