Sobre a verificação de postura de segurança do Kubernetes


Nesta página, descrevemos a verificação de postura de segurança do Kubernetes, um recurso do painel de postura de segurança que detecta preocupações comuns com a configuração de segurança, boletins de segurança acionáveis nas cargas de trabalho do Kubernetes e ameaças ativas nos clusters do GKE Enterprise.

Para ativar e usar a verificação de postura de segurança do Kubernetes, consulte os recursos a seguir:

A verificação de postura de segurança do Kubernetes oferece a seguinte funcionalidade:

Preços

  • Nível Standard: oferecido sem custo adicional no GKE.
  • Nível avançado: incluso no GKE Enterprise.

As entradas adicionadas do Cloud Logging estão sujeitas aos preços do Cloud Logging.

Sobre a auditoria de configuração da carga de trabalho

As cargas de trabalho implantadas no GKE precisam ter uma configuração com aumento da proteção que limite a superfície de ataque. A verificação de problemas em cargas de trabalho em clusters de maneira manual e em escala pode ser difícil. É possível usar o painel de postura de segurança para auditar automaticamente a configuração de todas as cargas de trabalho em execução em vários clusters e retornar resultados de ação úteis e pontuados, além de recomendações opinativas para melhorar a postura de segurança.

A auditoria de configuração de carga de trabalho verifica cada carga de trabalho implantada em relação a um subconjunto de políticas nos Padrões de segurança de pods. A auditoria de configuração de carga de trabalho ocorre na infraestrutura do Google e não usa recursos de computação nos nós.

Benefícios da auditoria de configuração da carga de trabalho

  • Automatize a detecção de problemas de configuração conhecidos em todas as cargas de trabalho.
  • Receba recomendações úteis para melhorar a postura de segurança.
  • Use o console do Google Cloud para ter uma visão geral das questões de configuração.
  • Use o Logging para ter uma trilha auditável dos problemas para melhorar a geração de relatórios e a observabilidade.

Como funciona a auditoria de configuração da carga de trabalho

Para cada carga de trabalho implantada e qualificada, o GKE verifica continuamente a especificação dela e compara os campos e valores aos controles definidos na política de segurança subjacente. Por exemplo, um pod com spec.containers.securityContext.privileged=true viola o padrão de segurança de referência do pod, e um pod com o campo spec.securityContext.runAsNonRoot definido como false viola o padrão restrito. Para ver uma lista das políticas de segurança que o GKE verifica, consulte O que a auditoria de configuração da carga de trabalho verifica?.

Depois de verificar e descobrir problemas, o GKE avalia a gravidade dos problemas de configuração descobertos com base nas medidas integradas de aumento da segurança. O GKE atribui uma classificação de gravidade que pode informar a velocidade com que você responde à preocupação. O console do Google Cloud exibe os resultados e as ações recomendadas que você pode realizar para corrigir as preocupações. O GKE também adiciona entradas ao Cloud Logging para o rastreamento e auditoria.

O que a auditoria de configuração da carga de trabalho verifica?

Problema Campos Valores permitidos Gravidade

Namespaces do host

Os pods que compartilham namespaces do host permitem que os processos do pod se comuniquem com os processos do host e coletem informações do host, o que pode levar a um escape de contêiner.

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • Indefinido ou nulo
  • false
Alto

Contêineres privilegiados

Os contêineres privilegiados permitem o acesso ao host quase irrestrito. Eles compartilham namespaces com o host e não têm restrições de grupo de controle, seccomp, AppArmor e de recursos.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • Indefinido ou nulo
  • false
Alto

Acesso à porta do host

A exposição de uma porta de host a um contêiner pode permitir que esse contêiner intercepte o tráfego de rede para um serviço de host por meio dessa porta ou que ignore as regras de controle de acesso à rede, como as regras de um NetworkPolicy.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • Indefinido ou nulo
  • 0
Alto

Recursos não padrão

Um contêiner tem recursos atribuídos que podem permitir o escape de um contêiner.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • Indefinido ou nulo
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
Médio

Como montar volumes de caminho de host

Os volumes hostPath montam arquivos ou diretórios do host. Esses volumes apresentam riscos de segurança que podem levar ao escape de contêiner.

spec.volumes[*].hostPath Indefinido ou nulo Médio

Máscara /proc não padrão

O tipo de montagem /proc padrão mascara determinados caminhos em /proc para evitar a exposição de caminhos que podem levar a vazamentos de informações ou escape de contêineres. O uso de um tipo não padrão aumenta esses riscos.

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • Indefinido ou nulo
  • Padrão
Médio

Máscara sysctls não segura

É possível configurar um pod para permitir a modificação de parâmetros do kernel não seguros com o sistema de arquivos virtual /proc/sys. Parâmetros não seguros não aceitam namespace, não isolam de modo correto o efeito entre pods, podem prejudicar a integridade do nó ou permitir que o pod ganhe recursos além dos limites dele.

spec.securityContext.sysctls[*].name
  • Indefinido ou nulo
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
Médio

Execução como não raiz

Será possível permitir explicitamente que um contêiner seja executado como o usuário raiz se a diretiva runAsUser ou USER na imagem especificar o usuário raiz. A falta de controles de segurança preventivos durante a execução, já que o usuário raiz aumenta o risco de escape do contêiner.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true Médio

Escalonamento de privilégios

Um contêiner pode ser configurado explicitamente para permitir o escalonamento de privilégios na execução. Isso permite que um processo criado no contêiner execute um set-user-id, set-group-id ou um recurso de arquivo para ter os privilégios especificados pelo executável. A falta de controle de segurança preventivo aumenta o risco de escape do contêiner.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false Médio

Perfil AppArmor não confinado

Um contêiner pode ser explicitamente configurado para não ser confinado pelo AppArmor. Isso garante que nenhum perfil AppArmor seja aplicado ao contêiner e, portanto, não seja restrito por eles. O controle de segurança preventivo desativado aumenta o risco de escape do contêiner.

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false Baixa

Sobre a exibição do boletim de segurança

Quando uma vulnerabilidade é descoberta no GKE, corrigimos a vulnerabilidade e publicamos um boletim de segurança para a vulnerabilidade. Para informações sobre identificação, aplicação de patches e cronogramas, consulte Patches de segurança do GKE.

O painel de postura de segurança exibe boletins de segurança que afetam os clusters, as cargas de trabalho e os pools de nós do modo padrão. Esse recurso faz parte da capacidade de postura de segurança do Kubernetes do painel de postura de segurança e é ativado automaticamente quando você cria um cluster do Autopilot ou padrão. Para ativar a verificação de postura de segurança do Kubernetes, use as instruções em Auditar automaticamente as cargas de trabalho em busca de problemas de configuração.

O console do Google Cloud exibe detalhes, como clusters afetados, versões e versões de patch recomendadas para upgrades, para mitigar a vulnerabilidade. Você só verá boletins para os quais uma mitigação está disponível na região ou zona do Google Cloud do cluster.

Para visualizar os boletins dos clusters registrados na verificação de postura de segurança do Kubernetes, acesse o painel de postura de segurança:

Acessar postura de segurança

Os boletins disponíveis que afetam seu ambiente são exibidos na seção Boletins de segurança.

Sobre o GKE Threat Detection

O GKE Threat Detection verifica os registros de auditoria dos clusters registrados para buscar ameaças ativas e fornece ações de mitigação recomendadas. O GKE Threat Detection é viabilizado pelo serviço Event Threat Detection do Security Command Center. Para mais informações, consulte Sobre o GKE Threat Detection na documentação do GKE Enterprise.

A seguir