Ini-publish ng Amazon ang Bottlerocket 1.0.0, isang pamamahagi ng Linux batay sa mga nakahiwalay na lalagyan

Amazon Company ipinakita unang makabuluhang pagpapalabas ng isang nakatuong pamamahagi ng Linux Bottlerocket 1.0.0, na idinisenyo upang magpatakbo ng mga nakahiwalay na lalagyan nang mahusay at ligtas. Ang mga tool ng pamamahagi at mga bahagi ng kontrol ay nakasulat sa Rust at kumalat sa ilalim ng mga lisensya ng MIT at Apache 2.0. Ang proyekto ay binuo sa GitHub at magagamit para sa pakikilahok ng mga miyembro ng komunidad. Ang imahe ng deployment ng system ay nabuo para sa x86_64 at Aarch64 na mga arkitektura. Ang OS ay iniangkop upang tumakbo sa Amazon ECS at AWS EKS Kubernetes clusters. Ay ibinigay mga tool para sa paggawa ng sarili mong mga assemblies at edisyon, na maaaring gumamit ng iba pang mga tool sa orkestrasyon, kernel at runtime para sa mga container.

Ang pamamahagi ay nagbibigay ng Linux kernel at isang minimal na kapaligiran ng system, kasama lamang ang mga sangkap na kinakailangan upang magpatakbo ng mga lalagyan. Kabilang sa mga package na kasangkot sa proyekto ay ang system manager systemd, ang Glibc library, at ang assembly tools
Buildroot, GRUB bootloader, network configurator masama, runtime para sa mga nakahiwalay na container naglalaman ng, Kubernetes container orchestration platform, aws-iam-authenticator, at Amazon ECS agent.

Ang pamamahagi ay na-update nang atomically at inihahatid sa anyo ng isang hindi mahahati na imahe ng system. Dalawang disk partition ang inilalaan para sa system, ang isa ay naglalaman ng aktibong system, at ang pag-update ay kinopya sa pangalawa. Matapos ma-deploy ang pag-update, magiging aktibo ang pangalawang partisyon, at sa una, hanggang sa dumating ang susunod na pag-update, nai-save ang nakaraang bersyon ng system, kung saan maaari kang bumalik kung may mga problema. Awtomatikong na-install ang mga update nang walang interbensyon ng administrator.

Ang pangunahing pagkakaiba mula sa mga katulad na distribusyon tulad ng Fedora CoreOS, CentOS/Red Hat Atomic Host ay ang pangunahing pokus sa pagbibigay pinakamataas na seguridad sa konteksto ng pagpapalakas ng proteksyon ng system mula sa mga posibleng banta, na ginagawang mas mahirap na pagsamantalahan ang mga kahinaan sa mga bahagi ng OS at pagtaas ng paghihiwalay ng mga lalagyan. Nilikha ang mga lalagyan gamit ang mga karaniwang mekanismo ng kernel ng Linux - cgroup, namespace at seccomp. Para sa karagdagang paghihiwalay, ang pamamahagi ay gumagamit ng SELinux sa "pagpapatupad" na mode, at ang module ay ginagamit para sa cryptographic na pag-verify ng integridad ng root partition dm-katotohanan. Kung may nakitang pagtatangkang baguhin ang data sa antas ng block device, magre-reboot ang system.

Ang root partition ay naka-mount read-only, at ang /etc settings partition ay naka-mount sa tmpfs at naibalik sa orihinal nitong estado pagkatapos ng restart. Ang direktang pagbabago ng mga file sa direktoryo ng /etc, gaya ng /etc/resolv.conf at /etc/containerd/config.toml, ay hindi suportado - upang permanenteng i-save ang mga setting, dapat mong gamitin ang API o ilipat ang functionality sa magkahiwalay na mga container.

Karamihan sa mga bahagi ng system ay nakasulat sa Rust, na nagbibigay ng memory-safe na feature upang maiwasan ang mga kahinaan na dulot ng after-free memory access, mga null pointer dereference, at buffer overruns. Kapag bumubuo bilang default, ang "--enable-default-pie" at "--enable-default-ssp" compilation mode ay ginagamit upang paganahin ang randomization ng address space ng mga executable file (pIE) at stack overflow na proteksyon sa pamamagitan ng canary substitution.
Para sa mga paketeng nakasulat sa C/C++, may kasamang mga karagdagang flag
"-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" at "-fstack-clash-protection".

Ang mga tool sa pag-orkestra ng lalagyan ay ibinibigay nang hiwalay lalagyan ng kontrol, na pinagana bilang default at kinokontrol sa pamamagitan ng API at Ahente ng AWS SSM. Ang batayang imahe ay walang command shell, SSH server at mga na-interpret na wika (halimbawa, walang Python o Perl) - ang mga tool sa administratibo at mga tool sa pag-debug ay matatagpuan sa hiwalay na lalagyan ng serbisyo, na hindi pinagana bilang default.

Pinagmulan: opennet.ru

Magdagdag ng komento