CIS Benchmark do Kubernetes

Este documento apresenta o comparativo de mercado CIS do Kubernetes, explica como auditar seu compliance com o comparativo e o que o Google Distributed Cloud (GDC) isolado por ar configura quando não é possível implementar uma recomendação por conta própria.

Sobre os comparativos de mercado do CIS

O Center for Internet Security (CIS) lança comparativos de mercado para práticas recomendadas de segurança. O comparativo de mercado do Kubernetes do CIS apresenta um conjunto de recomendações para configurar o Kubernetes e oferecer suporte a uma postura de segurança reforçada. O comparativo de mercado está vinculado a uma versão específica do Kubernetes. O CIS Benchmark do Kubernetes foi escrito para a distribuição de código aberto do Kubernetes e para ser aplicado universalmente a todas as distribuições possíveis.

Acessar o comparativo de mercado

O comparativo de mercado CIS do Kubernetes está disponível no site do CIS.

Níveis de recomendação

A tabela a seguir descreve os níveis de recomendação no comparativo de mercado CIS do Kubernetes.

Nível Descrição
Nível 1

As recomendações exibem uma ou mais das seguintes características:

  • Seja prático e prudente.
  • Forneça um benefício de segurança claro.
  • Não iniba a utilidade da tecnologia para além dos meios aceitáveis.
  • Nível 2

    Amplia o perfil de nível 1.

    As recomendações exibem uma ou mais das seguintes características:

  • Aplicar a ambientes ou casos de uso em que a segurança é fundamental.
  • Atua como medida de defesa em profundidade.
  • Podem inibir negativamente a utilidade ou o desempenho da tecnologia.
  • Status da avaliação

    O status da avaliação será incluído em todas as recomendações. O status da avaliação indica se a recomendação pode ser automatizada ou requer etapas manuais para a implementação. Ambos os status são igualmente importantes, e são determinados e suportados conforme definido nas tabelas a seguir.

    Versões

    A avaliação se refere às seguintes versões:

    Versão do GDC em bare metal Versão do Kubernetes Versão do comparativo de mercado CIS do Kubernetes
    1,30 1.30.9 v0.10.4

    Status do cluster do Kubernetes isolado do GDC

    # Recomendação Nível Status
    1 Configuração de segurança do plano de controle
    1.1 Arquivos de configuração do nó do plano de controle
    1.1.1 Verificar se as permissões do arquivo de especificação do pod do servidor de API estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.2 Verificar se a propriedade do arquivo de especificação do pod do servidor de API está definida como root:root (automatizado) N1 Aprovado
    1.1.3 Verificar se as permissões do arquivo de especificação do pod do gerenciador de controladores estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.4 Verificar se a propriedade do arquivo de especificação do pod do gerenciador de controladores está definida como root:root (automatizado) N1 Aprovado
    1.1.5 Verificar se as permissões do arquivo de especificação do pod do programador estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.6 Verificar se a propriedade do arquivo de especificação do pod do programador está definida como root:root (automatizado) N1 Aprovado
    1.1.7 Verificar se as permissões do arquivo de especificação do pod do etcd estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.8 Verificar se a propriedade do arquivo de especificação do pod do etcd está definida como root:root (automatizado) N1 Aprovado
    1.1.9 Verificar se as permissões do arquivo da interface de rede do contêiner estão definidas como 600 ou são mais restritivas (manual) N1 Avisar
    1.1.10 Verificar se a propriedade do arquivo da interface de rede do contêiner está definida como root:root (manual) N1 Avisar
    1.1.11 Verificar se as permissões do diretório de dados do etcd estão definidas como 700 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.12 Verificar se a propriedade do diretório de dados do etcd está definida como etcd:etcd (automatizado) N1 Reprovado
    1.1.13 Verificar se as permissões do arquivo de credenciais administrativas padrão estão definidas como 600 (automatizado) N1 Aprovado
    1.1.14 Verificar se a propriedade do arquivo de credenciais administrativas padrão está definida como root:root (automatizado) N1 Aprovado
    1.1.15 Verificar se as permissões do arquivo scheduler.conf estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.16 Verificar se a propriedade do arquivo scheduler.conf está definida como root:root (automatizado) N1 Reprovado
    1.1.17 Verificar se as permissões do arquivo controller-manager.conf estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.18 Verificar se a propriedade do arquivo controller-manager.conf está definida como root:root (automatizado) N1 Reprovado
    1.1.19 Verificar se o diretório PKI do Kubernetes e a propriedade do arquivo estão definidos como root:root (automatizado) N1 Reprovado
    1.1.20 Verificar se as permissões do arquivo de certificado PKI do Kubernetes estão definidas como 600 ou são mais restritivas (manual) N1 Avisar
    1.1.21 Verificar se as permissões do arquivo de chave PKI do Kubernetes estão definidas como 600 (manual) N1 Avisar
    1.2 Servidor de API
    1.2.1 Verificar se o argumento --anonymous-auth está definido como false (manual) N1 Alerta
    1.2.2 Verificar se o parâmetro --token-auth-file não está definido (automatizado) N1 Aprovado
    1.2.3 Verificar se o --DenyServiceExternalIPs está definido (Manual) N1 Avisar
    1.2.4 Verificar se os argumentos --kubelet-client-certificate e --kubelet-client-key estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.5 Verificar se o argumento --kubelet-certificate-authority está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.6 Verificar se o argumento --authorization-mode não está definido como AlwaysAllow (automatizado) N1 Aprovado
    1.2.7 Verificar se o argumento --authorization-mode inclui o nó (automatizado) N1 Aprovado
    1.2.8 Verificar se o argumento --authorization-mode inclui o RBAC (automatizado) N1 Aprovado
    1.2.9 Verificar se o plug-in de controle de admissão EventRateLimit está definido (manual) N1 Avisar
    1.2.10 Verificar se o plug-in de controle de admissão AlwaysAdmit não está definido (automatizado) N1 Aprovado
    1.2.11 Verificar se o plug-in de controle de admissão AlwaysPullImages está definido (manual) N1 Avisar
    1.2.12 Verificar se o plug-in de controle de admissão ServiceAccount está definido (automatizado) N1 Aprovado
    1.2.13 Verificar se o plug-in de controle de admissão NamespaceLifecycle está definido (automatizado) N1 Aprovado
    1.2.14 Verificar se o plug-in de controle de admissão NodeRestriction está definido (automatizado) N1 Aprovado
    1.2.15 Verificar se o argumento --profiling está definido como false (automatizado) N1 Aprovado
    1.2.16 Verificar se o argumento --audit-log-path está definido (automatizado) N1 Aprovado
    1.2.17 Verificar se o argumento --audit-log-maxage está definido como 30 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.18 Verificar se o argumento --audit-log-maxbackup está definido como 10 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.19 Verificar se o argumento --audit-log-maxsize está definido como 100 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.20 Verificar se o argumento --request-timeout está definido conforme apropriado (manual) N1 Avisar
    1.2.21 Verificar se o argumento --service-account-lookup está definido como true (automatizado) N1 Aprovado
    1.2.22 Verificar se o argumento --service-account-key-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.23 Verificar se os argumentos --etcd-certfile e --etcd-keyfile estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.24 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.25 Verificar se o argumento --client-ca-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.26 Verificar se o argumento --etcd-cafile está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.27 Verificar se o argumento --encryption-provider-config está definido conforme apropriado (manual) N1 Aprovado
    1.2.28 Verificar se os provedores de criptografia estão configurados corretamente (manual) N1 Aprovado
    1.2.29 Verificar se o servidor de API usa apenas códigos criptográficos fortes (manual) N1 Aprovado
    1.3 Controller Manager
    1.3.1 Verificar se o argumento --terminated-pod-gc-threshold está definido conforme apropriado (manual) N1 Aprovado
    1.3.2 Verificar se --profiling argument está definido como false (automatizado) N1 Aprovado
    1.3.3 Verificar se o argumento --use-service-account-credentials está definido como true (automatizado) N1 Aprovado
    1.3.4 Verificar se o argumento --service-account-private-key-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.3.5 Verificar se o argumento --root-ca-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.3.6 Verificar se o argumento RotateKubeletServerCertificate está definido como true (automatizado) N2 Aprovado
    1.3.7 Verificar se o argumento --bind-address está definido como 127.0.0.1 (automatizado) N1 Reprovado
    1.4 Programador
    1.4.1 Verificar se o argumento --profiling está definido como false (automatizado) N1 Aprovado
    1.4.2 Verificar se o argumento --bind-address está definido como 127.0.0.1 (automatizado) N1 Reprovado

    Comparativos de mercado de auditoria

    Instruções específicas para a auditoria de cada recomendação estão disponíveis como parte do comparativo de mercado CIS correspondente. No entanto, convém automatizar algumas dessas verificações para simplificar a verificação desses controles no seu ambiente. A ferramenta a seguir pode ajudar com isso.

    Auditoria automatizada do CIS Benchmark do Kubernetes

    É possível usar uma ferramenta de código aberto kube-bench para testar a configuração do cluster em relação ao comparativo de mercado do Kubernetes do CIS.

    Especifique a versão apropriada. Por exemplo:

    kube-bench --benchmark BENCHMARK_VERSION
    

    Substitua BENCHMARK_VERSION pela versão do comparativo de mercado do CIS Kubernetes que você está usando para avaliar o cluster.

    Para executar seções específicas do comparativo de mercado do CIS, como master, node ou etcd, use o comando run --targets. Exemplo:

    kube-bench run --targets master,node
    

    Para mais informações, consulte a documentação do kube-bench sobre execução do kube-bench e comandos e flags.