Rilascio di Bottlerocket 1.2, una distribuzione basata su contenitori isolati

È disponibile il rilascio della distribuzione Linux Bottlerocket 1.2.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:

  • Aggiunto supporto per i mirror del registro delle immagini del contenitore.
  • Aggiunta la possibilità di utilizzare certificati autofirmati.
  • Aggiunta opzione per configurare il nome host.
  • La versione predefinita del contenitore amministrativo è stata aggiornata.
  • Aggiunte le impostazioni topologyManagerPolicy e topologyManagerScope per kubelet.
  • Aggiunto il supporto per la compressione del kernel utilizzando l'algoritmo zstd.
  • Viene fornita la possibilità di caricare macchine virtuali in VMware nel formato OVA (Open Virtualization Format).
  • La versione di distribuzione aws-k8s-1.21 è stata aggiornata con il supporto per Kubernetes 1.21. Il supporto per aws-k8s-1.16 è stato interrotto.
  • Versioni dei pacchetti e dipendenze aggiornate per il linguaggio Rust.

Fonte: opennet.ru

Aggiungi un commento