Paglabas ng Bottlerocket 1.2, isang pamamahagi batay sa mga nakahiwalay na lalagyan

Ang paglabas ng Linux distribution Bottlerocket 1.2.0 ay magagamit, na binuo kasama ng paglahok ng Amazon para sa mahusay at secure na paglulunsad ng mga nakahiwalay na lalagyan. Ang mga tool ng pamamahagi at mga bahagi ng kontrol ay nakasulat sa Rust at ipinamahagi sa ilalim ng mga lisensya ng MIT at Apache 2.0. Sinusuportahan nito ang pagpapatakbo ng Bottlerocket sa mga cluster ng Amazon ECS, VMware at AWS EKS Kubernetes, pati na rin ang paglikha ng mga custom na build at edisyon na nagbibigay-daan sa paggamit ng iba't ibang mga tool sa orkestrasyon at runtime para sa mga container.

Ang pamamahagi ay nagbibigay ng atomically at awtomatikong na-update na hindi mahahati na imahe ng system na kinabibilangan ng Linux kernel at isang minimal na kapaligiran ng system na kinabibilangan lamang ng mga sangkap na kailangan para magpatakbo ng mga container. Kasama sa kapaligiran ang systemd system manager, ang Glibc library, ang Buildroot build tool, ang GRUB bootloader, ang masamang network configurator, ang containerd isolated container runtime, ang Kubernetes container orchestration platform, ang aws-iam-authenticator, at ang Amazon ECS agent .

Ang mga tool sa orchestration ng container ay nasa isang hiwalay na lalagyan ng pamamahala na naka-enable bilang default at pinamamahalaan sa pamamagitan ng API at AWS SSM Agent. Ang batayang imahe ay walang command shell, isang SSH server, at mga na-interpret na wika (halimbawa, walang Python o Perl) - ang mga tool sa administratibo at pag-debug ay inililipat sa isang hiwalay na lalagyan ng serbisyo, na hindi pinagana bilang default.

Ang pangunahing pagkakaiba sa mga katulad na distribusyon gaya ng Fedora CoreOS, CentOS/Red Hat Atomic Host ay ang pangunahing pagtutok sa pagbibigay ng maximum na seguridad sa konteksto ng pagpapalakas ng proteksyon ng system laban sa mga posibleng banta, pagpapakumplikado sa pagsasamantala ng mga kahinaan sa mga bahagi ng OS at pagtaas ng pagkakahiwalay ng container. Ang mga lalagyan ay nilikha gamit ang mga regular na mekanismo ng Linux kernel - cgroups, namespaces at seccomp. Para sa karagdagang paghihiwalay, ang pamamahagi ay gumagamit ng SELinux sa "pagpapatupad" na mode.

Ang root partition ay naka-mount sa read-only na mode, at ang partition na may mga setting ng /etc 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 hiwalay na mga container. Para sa cryptographic na pag-verify ng integridad ng root partition, ginagamit ang dm-verity module, at kung may nakitang pagtatangkang baguhin ang data sa block device level, magre-reboot ang system.

Karamihan sa mga bahagi ng system ay nakasulat sa Rust, na nagbibigay ng mga tool na ligtas sa memorya upang maiwasan ang mga kahinaan na dulot ng pagtugon sa isang lugar ng memorya pagkatapos itong mapalaya, pag-derefer ng mga null pointer, at pag-overrun ng buffer. Kapag bumubuo, ang mga compilation mode na "--enable-default-pie" at "--enable-default-ssp" ay ginagamit bilang default para paganahin ang executable address space randomization (PIE) at proteksyon laban sa mga stack overflow sa pamamagitan ng canary label substitution. Para sa mga package na nakasulat sa C/C++, ang mga flag na "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" at "-fstack-clash" kasama -proteksyon.

Sa bagong release:

  • Nagdagdag ng suporta para sa mga salamin sa pagpapatala ng imahe ng lalagyan.
  • Idinagdag ang kakayahang gumamit ng mga self-signed certificate.
  • Nagdagdag ng opsyon para i-configure ang hostname.
  • Na-update na ang default na bersyon ng administrative container.
  • Nagdagdag ng mga setting ng topologyManagerPolicy at topologyManagerScope para sa kubelet.
  • Nagdagdag ng suporta para sa kernel compression gamit ang zstd algorithm.
  • Ang kakayahang mag-load ng mga virtual machine sa VMware sa format na OVA (Open Virtualization Format) ay ibinigay.
  • Ang bersyon ng pamamahagi na aws-k8s-1.21 ay na-update na may suporta para sa Kubernetes 1.21. Ang suporta para sa aws-k8s-1.16 ay hindi na ipinagpatuloy.
  • Mga na-update na bersyon ng package at dependency para sa Rust na wika.

Pinagmulan: opennet.ru

Magdagdag ng komento