Um kit de distribuição minimalista do Linux Bottlerocket para a execução de contêineres foi lançado. A coisa mais importante sobre ele





A Amazon anunciou o lançamento final do Bottlerocket , uma distribuição especializada para executar e gerenciar contêineres com eficiência.



Bottlerocket (a propósito, é assim que eles chamam de pequenos foguetes de pólvora) não é o primeiro sistema operacional para contêineres, mas é provável que se espalhe devido à integração padrão com os serviços da AWS. Embora o sistema seja focado na nuvem da Amazon, o código aberto permite que você construa em qualquer lugar: localmente em um servidor, em um Raspberry Pi, em qualquer nuvem concorrente e até mesmo em um ambiente sem contêiner.



É um substituto bastante válido para a distribuição CoreOS que a Red Hat enterrou.



Em geral, a Amazon Web Services já tem o Amazon Linux, que saiu recentemente em sua segunda versão: é uma distribuição de uso geral que pode ser executada em um contêiner Docker ou com hipervisores Linux KVM, Microsoft Hyper-V e VMware ESXi. Ele foi otimizado para ser executado na nuvem AWS, mas com o Bottlerocket, todos são incentivados a atualizar para um novo sistema que seja mais seguro, mais moderno e use menos recursos.



AWS anuncia Bottlerocket em março de 2020... Ela imediatamente reconheceu que este não era o primeiro "Linux para contêineres", citando CoreOS, Rancher OS e Project Atomic como fontes de inspiração. Os desenvolvedores escreveram que o sistema operacional é "o resultado das lições que aprendemos ao longo dos serviços de produção na escala da Amazon e da experiência que ganhamos nos últimos seis anos sobre como executar contêineres".



Minimalismo extremo



O Linux foi retirado de tudo que não é necessário para executar contêineres. Esse projeto, de acordo com a empresa, reduz a superfície de ataque.



Isso significa que menos pacotes são instalados no sistema básico, o que torna mais fácil manter e atualizar o sistema operacional, e também reduz a probabilidade de problemas devido a dependências e reduz o uso de recursos. Basicamente, tudo aqui funciona dentro de contêineres separados, e o sistema básico está praticamente vazio.



A Amazon também removeu todos os shells e intérpretes, eliminando o risco de os usuários os usarem ou escalar privilégios acidentalmente. A imagem base carece de um shell de comando, servidor SSH e linguagens interpretadas como Python para fins de minimalismo e segurança. As ferramentas do administrador foram movidas para um container de serviço separado, que está desabilitado por padrão.



O gerenciamento do sistema é fornecido de duas maneiras: via API e orquestração.



Em vez de um gerenciador de pacotes que atualiza partes individuais do software, o Bottlerocket baixa uma imagem completa do sistema de arquivos e recarrega nela. Se o download falhar, ele será revertido automaticamente e uma falha de carga de trabalho pode acionar um rollback manual (comando via API).



O TUF (The Update Framework) baixa atualizações baseadas em imagens para partições alternativas ou "desmontadas". Duas partições de disco são alocadas para o sistema, uma das quais contém o sistema ativo e a atualização é copiada para a segunda. Nesse caso, a partição raiz é montada no modo somente leitura e a partição /etcé montada com o sistema de arquivos na RAM tmpfse restaura seu estado original após reiniciar. A modificação direta dos arquivos de configuração /etcnão é suportada: para salvar as configurações, use a API ou mova a funcionalidade para contêineres separados.





Esquema de atualização de API



Segurança



Os contêineres são criados por mecanismos do kernel Linux padrão - cgroups, namespaces e seccomp, e o SELinux é usado no modo " forçado " como um sistema de controle de acesso forçado, ou seja, para isolamento adicional .



Por padrão, as políticas são habilitadas para compartilhar recursos entre contêineres e o kernel. Os binários são protegidos por sinalizadores para evitar que usuários ou programas os executem. E se alguém conseguiu entrar no sistema de arquivos, Bottlerocket oferece uma ferramenta para verificar e rastrear todas as alterações feitas.



O modo de "inicialização verificada" é implementado através da função device-mapper-verity ( dm-verity), que verifica a integridade da partição raiz no momento da inicialização. A AWS descreve o dm-verity como "um recurso do kernel Linux que fornece verificação de integridade para evitar que malware seja executado no sistema operacional, como sobrescrever o software do sistema subjacente".



O sistema também possui um eBPF (BPF estendido, desenvolvido por Alexey Starovoitov ), que permite a substituição dos módulos do kernel por programas BPF mais seguros para operações de sistema de baixo nível.



Modelo de execução Usuário definido Compilação Segurança Modo de falha Acesso a recursos
Do utilizador tarefa sim qualquer direitos de uso interromper a execução chamada de sistema, falha
Testemunho tarefa não estático não núcleo de pânico direto
BPF evento sim JIT, CO-RE verificação, JIT mensagem de erro ajudantes limitados


Diferentemente do BPF do código normal no nível do usuário ou no nível do kernel, uma fonte da



AWS afirmou que Bottlerocket “adota um modelo operacional que aumenta ainda mais a segurança ao impedir que privilégios de administrador se conectem a servidores de produção” e “é adequado para grandes sistemas distribuídos onde o controle é limitado. acima de cada hospedeiro individual ".



Para administradores de sistema, um contêiner de administrador é fornecido. Mas a AWS não acha que os administradores muitas vezes terão que trabalhar dentro do Bottlerocket: “O ato de fazer login em uma instância separada do Bottlerocket se destina a operações raras: depuração avançada e solução de problemas”, escrevem os desenvolvedores.



A linguagem Rust



O conjunto de ferramentas do SO no topo do kernel é escrito principalmente em Rust. Essa linguagem, por natureza, reduz as chances de acesso inseguro à memória e também elimina condições de corrida entre threads .



Se os sinalizadores de construção padrão forem aplicados --enable-default-piee --enable-default-ssppermitir a randomização do espaço de endereço dos arquivos executáveis ​​( independente da posição do executável , PIE) e proteção contra estouro de pilha.



Para os pacotes para C / C ++ inclui ainda bandeiras -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONSe -fstack-clash-protection.



Além de Rust e C / C ++, alguns pacotes são escritos na linguagem Go.



Integração com serviços AWS



A diferença de sistemas operacionais de contêiner semelhantes é que a Amazon otimizou o Bottlerocket para executar na AWS e se integrar a outros serviços da AWS.



O orquestrador de contêineres mais popular é o Kubernetes, portanto, a AWS implementou a integração com seu próprio Enterprise Kubernetes Service (EKS). As ferramentas de orquestração vêm em um container bottlerocket-control-control , que é habilitado por padrão e gerenciado por meio da API e do Agente SSM da AWS.



Será interessante ver se Bottlerocket decolou devido ao fracasso de algumas dessas iniciativas no passado. Por exemplo, o PhotonOS da Vmware fechou, e a RedHat comprou o CoreOS e encerrou um projeto que era considerado um pioneiro no campo.



A integração do Bottlerocket nos serviços da AWS torna este sistema único em sua própria maneira. Esta é talvez a principal razão pela qual alguns usuários podem preferir Bottlerocket a outras distribuições, como CoreOS ou Alpine. O sistema foi originalmente projetado para funcionar com EKS e ECS, mas, novamente, isso não é necessário. Primeiro, Bottlerocket pode ser construído de forma independente e usado, por exemplo, como uma solução hospedada. Em segundo lugar, os usuários de EKS e ECS ainda terão a opção de sistema operacional.



O código-fonte do Bottlerocket é publicado no GitHub sob a licença Apache 2.0. Os desenvolvedores já estão respondendo a relatórios de bugs e solicitações de recursos .






Publicidade



A VDSina oferece VDS com pagamento diário . É possível instalar qualquer sistema operacional, inclusive de sua própria imagem. Cada servidor está conectado a um canal de Internet de 500 Megabits e é protegido contra ataques DDoS gratuitamente!






All Articles