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

Ang paglabas ng Bottlerocket 1.3.0 Linux distribution ay nai-publish, na binuo kasama ang partisipasyon ng Amazon upang epektibo at ligtas na magpatakbo ng mga nakahiwalay na lalagyan. Ang toolkit at mga bahagi ng kontrol ng pamamahagi 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 para sa 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:

  • Inayos ang mga kahinaan sa docker at runtime containerd tool (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) na nauugnay sa maling setting ng mga karapatan sa pag-access, na nagbigay-daan sa mga walang pribilehiyong user na lumampas sa mga baseng user direktoryo at magsagawa ng mga panlabas na programa.
  • Ang suporta sa IPv6 ay naidagdag sa kubelet at pluto.
  • Posibleng i-restart ang container pagkatapos baguhin ang mga setting nito.
  • Ang suporta para sa mga instance ng Amazon EC2 M6i ay idinagdag sa eni-max-pods package.
  • Ang Open-vm-tools ay nagdagdag ng suporta para sa mga filter ng device, batay sa Cilium toolkit.
  • Para sa x86_64 platform, isang hybrid boot mode ang ipinatupad (na may suporta para sa EFI at BIOS).
  • Mga na-update na bersyon ng package at dependency para sa Rust na wika.
  • Ang suporta para sa variant ng pamamahagi na aws-k8s-1.17 batay sa Kubernetes 1.17 ay hindi na ipinagpatuloy. Inirerekomenda na gamitin ang bersyon ng aws-k8s-1.21 na may suporta para sa Kubernetes 1.21. Ginagamit ng mga k8s variant ang mga setting ng cgroup runtime.slice at system.slice.

Pinagmulan: opennet.ru

Magdagdag ng komento