Lançamento do Bottlerocket 1.2, uma distribuição baseada em containers isolados

Está disponível o lançamento da distribuição Linux Bottlerocket 1.2.0, desenvolvida com a participação da Amazon para o lançamento eficiente e seguro de containers isolados. As ferramentas e componentes de controle da distribuição são escritos em Rust e distribuídos sob as licenças MIT e Apache 2.0. Ele suporta a execução do Bottlerocket em clusters Amazon ECS, VMware e AWS EKS Kubernetes, bem como a criação de compilações e edições personalizadas que permitem o uso de várias ferramentas de orquestração e tempo de execução para contêineres.

A distribuição fornece uma imagem de sistema indivisível atualizada de forma atômica e automática que inclui o kernel do Linux e um ambiente de sistema mínimo que inclui apenas os componentes necessários para executar contêineres. O ambiente inclui o gerenciador de sistema systemd, a biblioteca Glibc, a ferramenta de compilação Buildroot, o carregador de inicialização GRUB, o configurador de rede perverso, o tempo de execução de contêiner isolado containerd, a plataforma de orquestração de contêineres Kubernetes, o aws-iam-authenticator e o agente Amazon ECS .

As ferramentas de orquestração de contêiner vêm em um contêiner de gerenciamento separado que é habilitado por padrão e gerenciado por meio da API e do AWS SSM Agent. A imagem base carece de um shell de comando, um servidor SSH e linguagens interpretadas (por exemplo, sem Python ou Perl) - as ferramentas administrativas e de depuração são movidas para um contêiner de serviço separado, que está desabilitado por padrão.

A principal diferença de distribuições semelhantes, como Fedora CoreOS, CentOS/Red Hat Atomic Host, é o foco principal em fornecer segurança máxima no contexto de fortalecer a proteção do sistema contra possíveis ameaças, complicando a exploração de vulnerabilidades em componentes do sistema operacional e aumentando o isolamento do contêiner. Os contêineres são criados usando os mecanismos regulares do kernel do Linux - cgroups, namespaces e seccomp. Para isolamento adicional, a distribuição usa o SELinux no modo "imposição".

A partição raiz é montada no modo somente leitura e a partição com configurações /etc é montada em tmpfs e restaurada ao seu estado original após uma reinicialização. A modificação direta de arquivos no diretório /etc, como /etc/resolv.conf e /etc/containerd/config.toml, não é suportada - para salvar permanentemente as configurações, você deve usar a API ou mover a funcionalidade para contêineres separados. Para verificação criptográfica da integridade da partição raiz, o módulo dm-verity é usado e, se for detectada uma tentativa de modificar os dados no nível do dispositivo de bloco, o sistema é reinicializado.

A maioria dos componentes do sistema é escrita em Rust, que fornece ferramentas seguras de memória para evitar vulnerabilidades causadas pelo endereçamento de uma área de memória após ela ter sido liberada, desreferenciando ponteiros nulos e saturações de buffer. Ao compilar, os modos de compilação "--enable-default-pie" e "--enable-default-ssp" são usados ​​por padrão para habilitar a randomização do espaço de endereço de arquivos executáveis ​​(PIE) e proteção contra estouros de pilha por meio da substituição de rótulo canário. Para pacotes escritos em C/C++, os sinalizadores "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" e "-fstack-clash" são adicionais incluído -proteção.

Na nova versão:

  • Adicionado suporte para espelhos de registro de imagem de contêiner.
  • Adicionada a capacidade de usar certificados autoassinados.
  • Adicionada opção para configurar o nome do host.
  • A versão padrão do contêiner administrativo foi atualizada.
  • Adicionadas configurações de topologyManagerPolicy e topologyManagerScope para kubelet.
  • Adicionado suporte para compactação de kernel usando o algoritmo zstd.
  • É fornecida a capacidade de carregar máquinas virtuais no VMware no formato OVA (Open Virtualization Format).
  • A versão de distribuição aws-k8s-1.21 foi atualizada com suporte para Kubernetes 1.21. O suporte para aws-k8s-1.16 foi descontinuado.
  • Versões de pacotes e dependências atualizadas para a linguagem Rust.

Fonte: opennet.ru

Adicionar um comentário