Wydanie Bottlerocket 1.1, dystrybucji opartej na izolowanych kontenerach

Dostępna jest wersja dystrybucji Linuksa Bottlerocket 1.1.0, opracowana przy udziale firmy Amazon w celu wydajnego i bezpiecznego uruchamiania izolowanych kontenerów. Narzędzia i komponenty sterujące tej dystrybucji są napisane w języku Rust i rozpowszechniane na licencjach MIT i Apache 2.0. Obsługuje uruchamianie Bottlerocket w klastrach Amazon ECS i AWS EKS Kubernetes, a także tworzenie niestandardowych kompilacji i edycji, które umożliwiają korzystanie z różnych narzędzi do orkiestracji i środowiska wykonawczego dla kontenerów.

Dystrybucja zapewnia atomowo i automatycznie aktualizowany, niepodzielny obraz systemu, który zawiera jądro Linuksa i minimalne środowisko systemowe, zawierające jedynie komponenty niezbędne do uruchomienia kontenerów. Środowisko obejmuje menedżera systemu systemd, bibliotekę Glibc, narzędzie do budowania Buildroot, program ładujący GRUB, niegodziwy konfigurator sieci, środowisko wykonawcze Containerd dla izolowanych kontenerów, platformę do orkiestracji kontenerów Kubernetes, aws-iam-authenticator i Amazon Agent ECS.

Narzędzia do orkiestracji kontenerów znajdują się w oddzielnym kontenerze zarządzania, który jest domyślnie włączony i zarządzany za pośrednictwem interfejsu API i agenta AWS SSM. W obrazie bazowym brakuje powłoki poleceń, serwera SSH i języków interpretowanych (np. Pythona czy Perla) – narzędzia administracyjne i narzędzia do debugowania umieszczono w osobnym kontenerze usług, który domyślnie jest wyłączony.

Kluczową różnicą w stosunku do podobnych dystrybucji, takich jak Fedora CoreOS, CentOS/Red Hat Atomic Host, jest skupienie się na zapewnieniu maksymalnego bezpieczeństwa w kontekście wzmocnienia ochrony systemu przed możliwymi zagrożeniami, utrudnienia wykorzystania luk w komponentach systemu operacyjnego i zwiększenia izolacji kontenerów . Kontenery tworzone są przy użyciu standardowych mechanizmów jądra Linuksa - cgroups, przestrzeni nazw i seccomp. W celu dodatkowej izolacji dystrybucja wykorzystuje SELinux w trybie „wymuszającym”.

Partycja główna jest montowana w trybie tylko do odczytu, a partycja ustawień /etc jest montowana w tmpfs i przywracana do pierwotnego stanu po ponownym uruchomieniu. Bezpośrednia modyfikacja plików w katalogu /etc, takich jak /etc/resolv.conf i /etc/containerd/config.toml nie jest obsługiwana - aby trwale zapisać ustawienia, należy skorzystać z API lub przenieść funkcjonalność do osobnych kontenerów. Moduł dm-verity służy do kryptograficznej weryfikacji integralności partycji root, a w przypadku wykrycia próby modyfikacji danych na poziomie urządzenia blokowego system uruchamia się ponownie.

Większość komponentów systemu jest napisana w języku Rust, który zapewnia funkcje bezpieczne dla pamięci, aby uniknąć luk w zabezpieczeniach spowodowanych dostępem do pamięci po zwolnieniu, wyłuskaniem wskaźnika zerowego i przepełnieniem bufora. Podczas budowania domyślnie używane są tryby kompilacji „-enable-default-pie” i „-enable-default-ssp”, aby umożliwić randomizację przestrzeni adresowej pliku wykonywalnego (PIE) i ochronę przed przepełnieniem stosu poprzez podstawienie kanaryjskie. Dla pakietów napisanych w języku C/C++ dodatkowo są dostępne flagi „-Wall”, „-Werror=format-security”, „-Wp,-D_FORTIFY_SOURCE=2”, „-Wp,-D_GLIBCXX_ASSERTIONS” i „-fstack-clash”. włączona -ochrona”.

W nowym wydaniu:

  • Zaproponowano dwie nowe opcje dystrybucji aws-k8s-1.20 i vmware-k8s-1.20 ze wsparciem dla Kubernetes 1.20. Te warianty, a także zaktualizowana wersja aws-ecs-1, korzystają z nowej wersji jądra Linuksa 5.10. Tryb blokady jest domyślnie ustawiony na „integralność” (możliwości umożliwiające wprowadzanie zmian w działającym jądrze z przestrzeni użytkownika są zablokowane). Zakończono wsparcie dla wariantu aws-k8s-1.15 opartego na Kubernetes 1.15.
  • Amazon ECS obsługuje tryb sieciowy awsvpc, który umożliwia przydzielanie oddzielnych interfejsów sieciowych i wewnętrznych adresów IP dla każdego zadania.
  • Dodano ustawienia umożliwiające kontrolę różnych parametrów Kubernetes, w tym QPS, limity puli i możliwość łączenia się z dostawcami usług w chmurze innymi niż AWS.
  • Kontener bootstrap zapewnia ograniczenie dostępu do danych użytkownika przy użyciu SELinux.
  • Dodano narzędzie resize2fs.

Źródło: opennet.ru

Dodaj komentarz