Visão geral da segurança

Nesta página, você encontra uma visão geral dos recursos de segurança do Container-Optimized OS em execução no Google Cloud Platform.

Segurança do SO

Baseado no Chromium OS, o Container-Optimized OS do Google implementa vários princípios de design de segurança para fornecer uma plataforma bem configurada para a execução de serviços de produção.

Tamanho mínimo do SO

Esse é um fator essencial para a segurança do Container-Optimized OS. Como ele é otimizado para executar contêineres e esses contêineres têm dependências próprias, podemos excluir pacotes desnecessários. Assim, é possível minimizar a superfície de ataque do sistema operacional.

Sistema de arquivos raiz imutável e inicialização verificada

O sistema de arquivos raiz do Container-Optimized OS é sempre ativado como somente leitura. Além disso, a soma de verificação é calculada no momento da criação e verificada pelo kernel em cada inicialização. Esse mecanismo evita que invasores "tomem o controle" do computador por meio de mudanças locais permanentes. Além disso, várias outras ativações não são executáveis por padrão. Consulte Sistema de arquivos para detalhes.

Configuração sem estado

Embora ter um sistema de arquivos raiz somente leitura seja bom para a segurança, isso torna o sistema difícil de usar. Por exemplo, precisamos da capacidade de criar e adicionar usuários para fazer login no sistema. Para resolver isso, nós personalizamos o sistema de arquivos raiz de modo que /etc/ seja gravável, mas sem estado. Isso permite gravar configurações em tempo de execução, mas essas configurações não persistem durante as reinicializações. Assim, toda vez que um node do Container-Optimized OS for reinicializado, ele será iniciado a partir de um modelo limpo. Certos dados, como diretórios iniciais dos usuários, registros e imagens do Docker, persistem durante as reinicializações, porque não fazem parte do sistema de arquivos raiz.

Kernel com segurança aprimorada

O Container-Optimized OS dispõe de vários recursos de kernel que fortalecem a segurança, incluindo arquitetura de medição de integridade (IMA, na sigla em inglês), auditoria, isolamento de tabelas da página do kernel (KPTI, na sigla em inglês) e alguns módulos de segurança do Linux (LSMs, na sigla em inglês) do Chromium OS. Além disso, ele é compatível com recursos de segurança, como seccomp e AppArmor, com que é possível aplicar políticas de segurança mais detalhadas.

Padrões centrados em segurança

O Container-Optimized OS oferece outro nível de proteção ao fornecer valores padrão orientados à segurança para vários recursos. Isso inclui configurações de sysctl que desabilitam ptrace e BPF sem privilégios, bloqueio do firewall, e assim por diante. Esses padrões, quando aplicados automaticamente a uma frota de instâncias, ajudam a proteger todo o cluster, o projeto e a organização.

Atualizações automáticas

O recurso de atualizações automáticas do Container-Optimized OS permite o oferecimento rápido de patches de segurança para VMs em execução. Quando o Container-Optimized OS é gerenciado pelo Kubernetes Engine, as atualizações automáticas de nodes encontram um equilíbrio entre segurança e estabilidade.

Sistema de arquivos

Na lista a seguir, mostramos os caminhos no sistema de arquivos de imagem do node do Container-Optimized OS, juntamente com as propriedades e o uso recomendado:

Caminho Propriedades Finalidade
/
  • somente leitura
  • executável
O sistema de arquivos raiz é ativado como somente leitura para manter a integridade. O kernel verifica a integridade do sistema de arquivos raiz durante a inicialização e se recusa a inicializar em caso de erros.
/home
/var
  • gravável
  • não executável
  • com estado
Esses caminhos visam armazenar dados que permanecem durante todo o período do disco de inicialização. Eles são ativados em /mnt/stateful_partition.
/var/lib/google
/var/lib/cloud
/var/lib/docker
/var/lib/kubelet
/var/lib/toolbox
  • gravável
  • executável
  • com estado
Esses caminhos são diretórios de trabalho para pacotes do Compute Engine (por exemplo, serviço de gerente de contas), cloud-init, Docker, Kubelet e Toolbox, respectivamente.
/etc
  • gravável
  • não executável
  • sem estado
  • tmpfs
Em /etc, geralmente é mantida a configuração, por exemplo, os serviços systemd definidos por meio do cloud-init. É recomendável capturar o estado desejado das instâncias no cloud-init. O cloud-init é aplicado quando uma instância é criada do zero e também quando ela é reiniciada.
/tmp
  • gravável
  • não executável
  • sem estado
  • tmpfs
/tmp é normalmente usado como um espaço de rascunho. Não o use para armazenar dados persistentes.
/mnt/disks
  • gravável
  • executável
  • sem estado
  • tmpfs
É possível montar discos permanentes nos diretórios em /mnt/disks.

Firewall

Por padrão, o Container-Optimized OS é configurado para recusar todas as conexões TCP/UDP de entrada, exceto SSH na porta 22. Consulte Como configurar o firewall do host para ver como alterar o padrão para abrir mais portas.

Acesso a instâncias

Por padrão, o Container-Optimized OS não tem contas de usuário acessíveis. Contas de usuário e chaves SSH são gerenciadas por meio dos metadados da instância ou do projeto. As versões mais recentes do Container-Optimized OS (marco 66 e acima) permitem que você gerencie o acesso a imagens usando o IAM. Isso permite um controle de acesso mais refinado (sudo versus não sudo), chaves SSH identificáveis e uma política de login organizacional. Consulte Como gerenciar o acesso à instância com o login do sistema operacional para ver mais detalhes.

O daemon SSH é configurado para não permitir a autenticação baseada em senha, e nenhum login de raiz é permitido.

Segurança de infraestrutura

Além de vários recursos de proteção no próprio sistema operacional, a equipe do Container-Optimized OS também usa práticas recomendadas para desenvolver, construir e implantar imagens, com base em anos de experiência do Chromium OS e do Google em geral.

Desenvolvido a partir do código-fonte no Google

Cada pacote no Container-Optimized OS, incluindo o próprio kernel do Linux, é desenvolvido a partir dos repositórios de código-fonte do ChromiumOS. Isso significa que sabemos exatamente o que entra no sistema operacional, quem fez a verificação, em qual versão o recurso foi introduzido etc. Isso também nos permite corrigir e atualizar rapidamente qualquer pacote caso uma vulnerabilidade seja descoberta, em qualquer nível.

Varredura e resposta de vulnerabilidade contínua (CVE, na sigla em inglês)

Um sistema de varredura de CVE nos alerta sempre que uma vulnerabilidade é descoberta no kernel ou em qualquer pacote do sistema operacional. É o mesmo sistema usado para detectar vulnerabilidades no Android e no Chromium OS. A equipe do Container-Optimized OS responde com prioridade para lançar correções. A equipe do Container-Optimized OS também trabalha com a equipe de resposta a incidentes do Google para disponibilizar mais rapidamente patches de segurança no Container-Optimized OS.

Processo de teste e qualificação

Antes de publicarmos uma nova imagem do Container-Optimized OS no Google Cloud, testamos em vários níveis, incluindo teste de imprecisão de kernel com syzkaller, testes do Kubernetes no nível de cluster, testes de integração com recursos do Compute Engine e vários comparativos de desempenho. Isso garante a estabilidade e a qualidade das nossas versões.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Container-Optimized OS