Descrição geral de segurança

Esta página oferece uma vista geral das funcionalidades de segurança do Container-Optimized OS em execução no Google Cloud.

Segurança do SO

Com base no Chromium OS, o SO otimizado para contentores da Google implementa vários princípios de conceção de segurança para fornecer uma plataforma bem configurada para a execução de serviços de produção.

Ocupação mínima do SO

Isto está no centro da segurança do SO otimizado para contentores. Uma vez que o SO otimizado para contentores está otimizado para executar contentores e os contentores incluem as suas próprias dependências, podemos remover pacotes desnecessários e, assim, minimizar a superfície de ataque do SO.

Sistema de ficheiros raiz imutável e arranque validado

O sistema de ficheiros de raiz do SO otimizado para contentores é sempre montado como só de leitura. Além disso, a respetiva soma de verificação é calculada no momento da compilação e validada pelo kernel em cada arranque. Este mecanismo impede que os atacantes "se apropriem" da máquina através de alterações locais permanentes. Além disso, várias outras montagens são não executáveis por predefinição. Consulte o artigo Sistema de ficheiros para ver detalhes.

Configuração sem estado

Embora ter um sistema de ficheiros raiz só de leitura seja bom para a segurança, torna o sistema difícil de usar. Por exemplo, temos de poder criar e adicionar utilizadores para iniciar sessão no sistema. Para resolver este problema, personalizamos o sistema de ficheiros raiz de forma que /etc/ seja gravável, mas sem estado. Isto permite-lhe escrever definições de configuração no momento da execução, mas essas definições não persistem após o reinício. Assim, sempre que um nó do SO otimizado para contentores é reiniciado, começa do zero. Determinados dados, como os diretórios pessoais, os registos e as imagens do Docker, persistem nos reinícios, uma vez que não fazem parte do sistema de ficheiros raiz.

Kernel com segurança reforçada

O SO otimizado para contentores ativa várias funcionalidades de kernel de reforço da segurança, incluindo a arquitetura de medição de integridade (IMA), a auditoria, o isolamento da tabela de páginas do kernel (KPTI) e alguns módulos de segurança do Linux (LSMs) do Chromium OS. Além disso, o SO otimizado para contentores suporta funcionalidades de segurança como o seccomp e o AppArmor que permitem aplicar políticas de segurança mais detalhadas.

Predefinições centradas na segurança

O SO otimizado para contentores oferece outro nível de reforço através de valores predefinidos focados na segurança para várias funcionalidades. Isto inclui, por exemplo, definições sysctl que desativam o ptrace e o BPF não privilegiado, bloqueiam a firewall, etc. Estas predefinições, quando aplicadas automaticamente a um conjunto de instâncias, ajudam a proteger todo o cluster, projeto e organização.

Atualizações automáticas

A funcionalidade de atualizações automáticas do SO otimizado para contentores permite a entrega atempada de patches de segurança a VMs em execução. Quando o SO otimizado para contentores é gerido pelo Kubernetes Engine, as atualizações automáticas de nós encontram um equilíbrio entre a segurança e a estabilidade.

Sistema de ficheiros

Segue-se uma lista de caminhos no sistema de ficheiros de imagem do nó do SO otimizado para contentores, juntamente com as respetivas propriedades e utilização recomendada:

Caminho Propriedades Finalidade
/
  • só de leitura
  • executável
O sistema de ficheiros raiz está montado como só de leitura para manter a integridade. O kernel verifica o sistema de ficheiros raiz de integridade durante o arranque e recusa-se a arrancar em caso de erros.
/home
/var
  • gravável
  • não executável
  • com estado
Estes caminhos destinam-se ao armazenamento de dados que persistem durante a duração total do disco de arranque. Estão montadas a partir de /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • gravável
  • executável
  • com estado
Estes caminhos são diretórios de trabalho para pacotes do Compute Engine (por exemplo, o serviço de gestão de contas), o Docker e a caixa de ferramentas, respetivamente.
/var/lib/cloud
  • gravável
  • executável
  • sem estado
  • tmpfs
Este caminho é o diretório de trabalho do pacote cloud-init.
/etc
  • gravável
  • executável
  • sem estado
  • tmpfs
Normalmente, contém a sua configuração (por exemplo, os serviços definidos através de cloud-init). É recomendável capturar o estado pretendido das suas instâncias em cloud-init, uma vez que cloud-init é aplicado quando uma instância é criada recentemente, bem como quando uma instância é reiniciada.systemd
/tmp
  • gravável
  • não executável
  • sem estado
  • tmpfs
Normalmente, é usado como um espaço temporário e não deve ser usado para armazenar dados persistentes.
/mnt/disks
  • gravável
  • executável
  • sem estado
  • tmpfs
Pode montar discos persistentes em diretórios em /mnt/disks.

Firewall

Por predefinição, o SO otimizado para contentores está configurado para rejeitar todas as ligações TCP/UDP recebidas, exceto SSH na porta 22. Consulte o artigo Configurar a firewall do anfitrião para saber como alterar a predefinição para abrir mais portas.

Acesso à instância

Por predefinição, o SO otimizado para contentores não contém contas de utilizador acessíveis. As contas de utilizador e as chaves SSH são geridas através de metadados de instâncias ou projetos ou do Início de sessão do SO. O Início de sessão do SO permite-lhe gerir o acesso a instâncias através da IAM. Permite um controlo de acesso mais detalhado (sudo versus não sudo), chaves SSH identificáveis e política de início de sessão organizacional.

O daemon SSH está configurado para não permitir a autenticação baseada em palavras-passe e para não permitir inícios de sessão de raiz. No entanto, isto não impede que os utilizadores obtenham privilégios de raiz através do sudo após o início de sessão, a menos que a conta de utilizador seja gerida com o início de sessão no SO.

Segurança das Infraestruturas

Além de várias funcionalidades de reforço no próprio SO, a equipa do Container-Optimized OS também leva a cadeia de fornecimento de software a sério e dá prioridade à segurança da infraestrutura ao desenvolver, criar e implementar imagens, com base em anos de experiência do Chromium OS e da Google em geral.

Criado a partir da origem na Google

Cada pacote no SO otimizado para contentores, incluindo o próprio kernel do Linux, é criado a partir da origem dos repositórios de código do ChromiumOS. Isto significa que sabemos exatamente o que está a ser introduzido no SO, quem o verificou, em que versão foi introduzido, etc. Isto também nos permite aplicar patches e atualizar rapidamente qualquer pacote caso seja descoberta uma vulnerabilidade, a qualquer nível.

Análise e resposta contínuas a vulnerabilidades (CVE)

Um sistema de análise de CVEs alerta-nos sempre que é descoberta uma vulnerabilidade no kernel ou em qualquer pacote do SO. Este é o mesmo sistema usado para detetar vulnerabilidades no Android e no Chromium OS. A equipa do SO otimizado para contentores responde com prioridade para fazer lançamentos corrigidos. A equipa do SO otimizado para contentores também trabalha com a equipa de resposta a incidentes da Google para disponibilizar rapidamente patches de segurança mais amplos no SO otimizado para contentores.

Processo de testes e qualificação

Antes de publicarmos uma nova imagem do SO otimizado para contentores no Google Cloud, testamo-la a vários níveis, incluindo testes de fuzzing do kernel por syzkaller, testes do Kubernetes ao nível do cluster, testes de integração com funcionalidades do Compute Engine e vários benchmarks de desempenho. Isto garante a estabilidade e a qualidade dos nossos lançamentos.