ΠΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠΏΡΡΠΊ Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Bottlerocket 1.2.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:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π΅ΡΠΊΠ°Π» ΡΠ΅Π΅ΡΡΡΠ° ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ°.
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π²Π΅ΡΡΠΈΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ topologyManagerPolicy ΠΈ topologyManagerScope Π΄Π»Ρ kubelet.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΆΠ°ΡΠΈΡ ΡΠ΄ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° zstd.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² VMware di macchine virtuali Π² ΡΠΎΡΠΌΠ°ΡΠ΅ OVA (Open Virtualization Format).
- ΠΠ±Π½ΠΎΠ²Π»ΡΠ½ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° aws-k8s-1.21 c ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Kubernetes 1.21. ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° aws-k8s-1.16.
- Aggiornate le versioni dei pacchetti e le dipendenze per il linguaggio Rust.
Fonte: opennet.ru
