È disponibile Bottlerocket 1.8, una distribuzione basata su contenitori isolati

È stato pubblicato il rilascio della distribuzione Linux Bottlerocket 1.8.0, sviluppata con la partecipazione di Amazon per il lancio efficiente e sicuro di contenitori isolati. Gli strumenti e i componenti di controllo della distribuzione sono scritti in Rust e distribuiti sotto le licenze MIT e Apache 2.0. Supporta l'esecuzione di Bottlerocket su cluster Amazon ECS, VMware e AWS EKS Kubernetes, oltre alla creazione di build ed edizioni personalizzate che consentono l'uso di vari strumenti di orchestrazione e runtime per i contenitori.

La distribuzione fornisce un'immagine di sistema indivisibile aggiornata atomicamente e automaticamente che include il kernel Linux e un ambiente di sistema minimo, inclusi solo i componenti necessari per eseguire i contenitori. L'ambiente include il gestore di sistema systemd, la libreria Glibc, lo strumento di compilazione Buildroot, il boot loader GRUB, il configuratore di rete Wicked, il runtime containerd per contenitori isolati, la piattaforma di orchestrazione dei contenitori Kubernetes, aws-iam-authenticator e Amazon Agente ECS.

Gli strumenti di orchestrazione dei container sono forniti in un container di gestione separato, abilitato per impostazione predefinita e gestito tramite l'API e l'agente AWS SSM. L'immagine di base è priva di shell dei comandi, server SSH e linguaggi interpretati (ad esempio, niente Python o Perl): gli strumenti di amministrazione e di debug sono collocati in un contenitore di servizi separato, che è disabilitato per impostazione predefinita.

La differenza fondamentale rispetto a distribuzioni simili come Fedora CoreOS, CentOS/Red Hat Atomic Host è l'obiettivo principale di fornire la massima sicurezza nel contesto del rafforzamento della protezione del sistema da possibili minacce, rendendo più difficile sfruttare le vulnerabilità nei componenti del sistema operativo e aumentando l'isolamento dei contenitori . I contenitori vengono creati utilizzando i meccanismi standard del kernel Linux: cgroup, spazi dei nomi e seccomp. Per ulteriore isolamento, la distribuzione utilizza SELinux in modalità “enforcing”.

La partizione root è montata in sola lettura e la partizione delle impostazioni /etc è montata in tmpfs e ripristinata al suo stato originale dopo un riavvio. La modifica diretta dei file nella directory /etc, come /etc/resolv.conf e /etc/containerd/config.toml, non è supportata: per salvare in modo permanente le impostazioni, è necessario utilizzare l'API o spostare la funzionalità in contenitori separati. Il modulo dm-verity viene utilizzato per verificare crittograficamente l'integrità della partizione root e, se viene rilevato un tentativo di modificare i dati a livello del dispositivo a blocchi, il sistema si riavvia.

La maggior parte dei componenti di sistema sono scritti in Rust, che fornisce funzionalità di sicurezza della memoria per evitare vulnerabilità causate da accessi successivi alla memoria libera, dereferenziazioni di puntatori nulli e sovraccarichi del buffer. Durante la compilazione per impostazione predefinita, le modalità di compilazione "-enable-default-pie" e "-enable-default-ssp" vengono utilizzate per abilitare la randomizzazione dello spazio degli indirizzi dei file eseguibili (PIE) e la protezione contro gli overflow dello stack tramite la sostituzione canary. Per i pacchetti scritti in C/C++, i flag “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” e “-fstack-clash” sono inoltre protezione abilitata".

Nella nuova versione:

  • Il contenuto dei contenitori amministrativi e di controllo è stato aggiornato.
  • Il runtime per i contenitori isolati è stato aggiornato al ramo containerd 1.6.x.
  • Garantisce che i processi in background che coordinano il funzionamento dei contenitori vengano riavviati dopo le modifiche all'archivio certificati.
  • È possibile impostare i parametri di avvio del kernel tramite la sezione Boot Configuration.
  • Abilitato ignorando i blocchi vuoti durante il monitoraggio dell'integrità della partizione root utilizzando dm-verity.
  • È stata fornita la possibilità di associare staticamente i nomi host in /etc/hosts.
  • È stata fornita la possibilità di generare una configurazione di rete utilizzando l'utilità netdog (è stato aggiunto il comando generate-net-config).
  • Sono state proposte nuove opzioni di distribuzione con supporto per Kubernetes 1.23. Il tempo di avvio per i pod in Kubernetes è stato ridotto disabilitando la modalità configMapAndSecretChangeDetectionStrategy. Aggiunte nuove impostazioni kubelet: provider-id e podPidsLimit.
  • È stata proposta una nuova versione del kit di distribuzione "aws-ecs-1-nvidia" per Amazon Elastic Container Service (Amazon ECS), fornito con driver NVIDIA.
  • Aggiunto il supporto per i dispositivi di archiviazione Microchip Smart Storage e MegaRAID SAS. Il supporto per le schede Ethernet sui chip Broadcom è stato ampliato.
  • Versioni e dipendenze dei pacchetti aggiornate per le lingue Go e Rust, nonché versioni dei pacchetti con programmi di terze parti. Bottlerocket SDK è stato aggiornato alla versione 0.26.0.

Fonte: opennet.ru

Aggiungi un commento