ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Bottlerocket 1.8.0, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Amazon Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ MIT ΠΈ Apache 2.0. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π·Π°ΠΏΡΡΠΊ Bottlerocket Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ Amazon ECS, VMware ΠΈ AWS EKS Kubernetes, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΉ, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠΊΠ΅ΡΡΡΠΎΠ²ΠΊΠΈ ΠΈ runtime Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
La distribuzione fornisce un'immagine di sistema atomica, indissolubile e automaticamente aggiornata, che include il kernel Linux e un ambiente di sistema minimale, contenente solo i componenti necessari per l'avvio dei container. Nel suo ambiente sono coinvolti il manager di sistema systemd, la libreria Glibc, l'ambiente di build Buildroot, il bootloader GRUB, il configuratore di rete wicked, il runtime per container isolati containerd, la piattaforma di orchestrazione dei container Kubernetes, l'autenticatore aws-iam-authenticator e l'agente Amazon ECS.
Gli strumenti per l'orchestrazione dei contenitori sono forniti in un contenitore di gestione separato, che Γ¨ abilitato per impostazione predefinita e gestito tramite API e AWS SSM Agent. L'immagine di base non include una shell di comando, un server SSH e linguaggi interpretati (ad esempio, non ci sono Python o Perl) β gli strumenti per l'amministratore e gli strumenti di debug sono stati spostati in un contenitore di servizio separato, che Γ¨ disabilitato per impostazione predefinita.
La principale differenza rispetto a distribuzioni simili come Fedora CoreOS e CentOS/Red Hat Atomic Host Γ¨ l'orientamento primario verso la massima sicurezza, in un contesto di potenziamento della protezione del sistema da potenziali minacce, complicando l'exploitation delle vulnerabilitΓ nei componenti del sistema operativo e aumentando l'isolamento dei contenitori. I contenitori vengono creati utilizzando i meccanismi standard del kernel Linux β cgroups, namespace e seccomp. Per un'ulteriore isolamento, il supporto SELinux Γ¨ abilitato in modalitΓ 'enforcing'.
La partizione principale viene montata in modalitΓ di sola lettura, mentre la partizione delle impostazioni /etc viene montata in tmpfs e ripristina lo stato originale dopo il riavvio. Le modifiche dirette ai file nella cartella /etc, come /etc/resolv.conf e /etc/containerd/config.toml, non sono supportate: per il salvataggio permanente delle impostazioni Γ¨ necessario utilizzare l'API o trasferire la funzionalitΓ in contenitori separati. Per la verifica crittografica dell'integritΓ della partizione principale Γ¨ attivato il modulo dm-verity, e in caso venga rilevato un tentativo di modifica dei dati a livello di dispositivo a blocchi, il sistema si riavvia.
La maggior parte dei componenti di sistema sono scritti in Rust, un linguaggio che fornisce strumenti per una gestione della memoria sicura, evitando cosΓ¬ vulnerabilitΓ dovute all'accesso a memoria liberata, dereferenziazione di puntatori nulli e overflow del buffer. Durante la compilazione predefinita, vengono applicati i flag di compilazione Β«βenable-default-pieΒ» e Β«βenable-default-sspΒ» per attivare la randomizzazione dello spazio degli indirizzi dei file eseguibili (PIE) e per fornire protezione contro l'overflow dello stack tramite la sostituzione di etichette canarie. Per i pacchetti scritti in C/C++, vengono inclusi ulteriori flag Β«-WallΒ», Β«-Werror=format-securityΒ», Β«-Wp,-D_FORTIFY_SOURCE=2Β», Β«-Wp,-D_GLIBCXX_ASSERTIONSΒ» e Β«-fstack-clash-protectionΒ».
Nel nuovo rilascio:
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
- Runtime Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ Π΄ΠΎ Π²Π΅ΡΠΊΠΈ containerd 1.6.x.
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠΎΠ½ΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΡΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ².
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΄ΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΊΡΠΈΡ Boot Configuration.
- ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΡΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ dm-verity.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΈΠΌΡΠ½ Ρ ΠΎΡΡΠΎΠ² Π² /etc/hosts.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ netdog (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° generate-net-config).
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° c ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Kubernetes 1.23. Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° pod-ΠΎΠ² Π² Kubernetes Π·Π° ΡΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° configMapAndSecretChangeDetectionStrategy. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ kubelet-ΠΎΠ²: provider-id ΠΈ podPidsLimit.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Β«aws-ecs-1-nvidiaΒ» Π΄Π»Ρ Amazon Elastic Container Service (Amazon ECS), ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ NVIDIA.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΡΡΠΎΠΉΡΡΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Microchip Smart Storage ΠΈ MegaRAID SAS. Π Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Ethernet-ΠΊΠ°ΡΡ Π½Π° ΡΠΈΠΏΠ°Ρ Broadcom.
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² Go ΠΈ Rust, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ. Bottlerocket SDK ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 0.26.0.
Fonte: opennet.ru
