Referência do Kubernetes do CEI

Este documento apresenta a norma CIS Kubernetes, explica como auditar a sua conformidade com a norma e explica o que o Google Distributed Cloud (GDC) air-gapped configura quando não consegue implementar uma recomendação por si próprio.

Acerca das referências do CIS

O Centro para a Segurança da Internet (CIS) publica referências para recomendações de segurança de práticas recomendadas. O CIS Kubernetes Benchmark fornece um conjunto de recomendações para configurar o Kubernetes de modo a suportar uma postura de segurança forte. A referência está associada a uma versão específica do Kubernetes. A referência do CIS Kubernetes foi escrita para a distribuição Kubernetes de código aberto e destina-se a ser o mais universalmente aplicável possível em todas as distribuições.

Aceda ao teste de referência

A referência do Kubernetes do CIS está disponível no Website do CIS.

Níveis de recomendações

A tabela seguinte descreve os níveis de recomendações no CIS Kubernetes Benchmark.

Nível Descrição
Nível 1

As recomendações têm uma ou mais das seguintes características:

  • Seja prático e prudente.
  • Oferecer uma vantagem de segurança clara.
  • 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 têm uma ou mais das seguintes características:

  • Aplicam-se a ambientes ou exemplos de utilização em que a segurança é fundamental.
  • Atua como medida de defesa em profundidade.
  • Pode inibir negativamente a utilidade ou o desempenho da tecnologia.
  • Estado da avaliação

    É incluído um estado de avaliação para cada recomendação. O estado da avaliação indica se a recomendação em questão pode ser automatizada ou requer passos manuais para implementação. Ambos os estados são igualmente importantes e são determinados e suportados conforme definido nas tabelas seguintes.

    Versões

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

    Versão do GDC em bare metal Versão do Kubernetes Versão da referência do CIS Kubernetes
    1,30 1.30.9 v0.10.4

    Estado do cluster do Kubernetes isolado do GDC

    # Recomendação Nível Estado
    1 Configuração de segurança do plano de controlo
    1.1 Ficheiros de configuração do nó do plano de controlo
    1.1.1 Certifique-se de que as autorizações do ficheiro de especificação do agrupamento do servidor da API estão definidas como 600 ou mais restritivas (automáticas) L1 Passar
    1.1.2 Certifique-se de que a propriedade do ficheiro de especificação do pod do servidor da API está definida como root:root (Automático) L1 Passar
    1.1.3 Certifique-se de que as autorizações do ficheiro de especificação do agrupamento do gestor do controlador estão definidas como 600 ou mais restritivas (automáticas) L1 Passar
    1.1.4 Certifique-se de que a propriedade do ficheiro de especificação do pod do gestor do controlador está definida como root:root (Automático) L1 Passar
    1.1.5 Certifique-se de que as autorizações do ficheiro de especificação do agrupamento do programador estão definidas como 600 ou mais restritivas (automatizadas) L1 Passar
    1.1.6 Certifique-se de que a propriedade do ficheiro de especificação do pod do programador está definida como root:root (Automático) L1 Passar
    1.1.7 Certifique-se de que as autorizações do ficheiro de especificação do agrupamento etcd estão definidas como 600 ou mais restritivas (automatizadas) L1 Passar
    1.1.8 Certifique-se de que a propriedade do ficheiro de especificação do pod etcd está definida como root:root (automatizada) L1 Passar
    1.1.9 Certifique-se de que as autorizações do ficheiro da interface de rede do contentor estão definidas como 600 ou mais restritivas (manual) L1 Aviso
    1.1.10 Certifique-se de que a propriedade do ficheiro da interface de rede do contentor está definida como root:root (manual) L1 Aviso
    1.1.11 Certifique-se de que as autorizações do diretório de dados do etcd estão definidas como 700 ou mais restritivas (automáticas) L1 Passar
    1.1.12 Certifique-se de que a propriedade do diretório de dados do etcd está definida como etcd:etcd (Automático) L1 Falha
    1.1.13 Certifique-se de que as autorizações de ficheiros de credenciais administrativas predefinidas estão definidas como 600 (Automático) L1 Passar
    1.1.14 Certifique-se de que a propriedade do ficheiro de credenciais administrativas predefinido está definida como root:root (Automático) L1 Passar
    1.1.15 Certifique-se de que as autorizações de ficheiros scheduler.conf estão definidas como 600 ou mais restritivas (automáticas) L1 Passar
    1.1.16 Certifique-se de que a propriedade do ficheiro scheduler.conf está definida como root:root (Automático) L1 Falha
    1.1.17 Certifique-se de que as autorizações de ficheiros controller-manager.conf estão definidas como 600 ou mais restritivas (automáticas) L1 Passar
    1.1.18 Certifique-se de que a propriedade do ficheiro controller-manager.conf está definida como root:root (Automático) L1 Falha
    1.1.19 Certifique-se de que o diretório PKI do Kubernetes e a propriedade dos ficheiros estão definidos como root:root (Automático) L1 Falha
    1.1.20 Certifique-se de que as autorizações do ficheiro de certificado PKI do Kubernetes estão definidas como 600 ou mais restritivas (manual) L1 Aviso
    1.1.21 Certifique-se de que as autorizações do ficheiro de chave PKI do Kubernetes estão definidas como 600 (Manual) L1 Aviso
    1.2 Servidor de API
    1.2.1 Certifique-se de que o argumento --anonymous-auth está definido como false (Manual) L1 Aviso
    1.2.2 Certifique-se de que o parâmetro --token-auth-file não está definido (Automated) L1 Passar
    1.2.3 Certifique-se de que o --DenyServiceExternalIPs está definido (manual) L1 Aviso
    1.2.4 Certifique-se de que os argumentos --kubelet-client-certificate e --kubelet-client-key estão definidos conforme adequado (automatizados) L1 Passar
    1.2.5 Certifique-se de que o argumento --kubelet-certificate-authority está definido conforme adequado (Automático) L1 Passar
    1.2.6 Certifique-se de que o argumento --authorization-mode não está definido como AlwaysAllow (Automated) L1 Passar
    1.2.7 Certifique-se de que o argumento --authorization-mode inclui Node (Automated) L1 Passar
    1.2.8 Certifique-se de que o argumento --authorization-mode inclui RBAC (automatizado) L1 Passar
    1.2.9 Certifique-se de que o plug-in de controlo de admissão EventRateLimit está definido como (Manual) L1 Aviso
    1.2.10 Certifique-se de que o plug-in de controlo de admissão AlwaysAdmit não está definido como (Automático) L1 Passar
    1.2.11 Certifique-se de que o plug-in de controlo de admissão AlwaysPullImages está definido como (Manual) L1 Aviso
    1.2.12 Certifique-se de que o plug-in de controlo de admissão ServiceAccount está definido como (Automático) L1 Passar
    1.2.13 Certifique-se de que o plug-in de controlo de admissão NamespaceLifecycle está definido como (Automático) L1 Passar
    1.2.14 Certifique-se de que o plug-in de controlo de admissão NodeRestriction está definido como (Automático) L1 Passar
    1.2.15 Certifique-se de que o argumento --profiling está definido como false (Automático) L1 Passar
    1.2.16 Certifique-se de que o argumento --audit-log-path está definido (Automated) L1 Passar
    1.2.17 Certifique-se de que o argumento --audit-log-maxage está definido como 30 ou conforme adequado (Automated) L1 Passar
    1.2.18 Certifique-se de que o argumento --audit-log-maxbackup está definido como 10 ou conforme adequado (Automated) L1 Passar
    1.2.19 Certifique-se de que o argumento --audit-log-maxsize está definido como 100 ou conforme adequado (Automated) L1 Passar
    1.2.20 Certifique-se de que o argumento --request-timeout está definido conforme adequado (Manual) L1 Aviso
    1.2.21 Certifique-se de que o argumento --service-account-lookup está definido como true (Automático) L1 Passar
    1.2.22 Certifique-se de que o argumento --service-account-key-file está definido conforme adequado (Automático) L1 Passar
    1.2.23 Certifique-se de que os argumentos --etcd-certfile e --etcd-keyfile estão definidos conforme adequado (automatizados) L1 Passar
    1.2.24 Certifique-se de que os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme adequado (automatizados) L1 Passar
    1.2.25 Certifique-se de que o argumento --client-ca-file está definido conforme adequado (Automático) L1 Passar
    1.2.26 Certifique-se de que o argumento --etcd-cafile está definido conforme adequado (Automático) L1 Passar
    1.2.27 Certifique-se de que o argumento --encryption-provider-config está definido conforme adequado (Manual) L1 Passar
    1.2.28 Certifique-se de que os fornecedores de encriptação estão configurados adequadamente (manual) L1 Passar
    1.2.29 Certifique-se de que o servidor da API só usa cifras criptográficas fortes (manuais) L1 Passar
    1.3 Gestor de controladores
    1.3.1 Certifique-se de que o argumento --terminated-pod-gc-threshold está definido conforme adequado (Manual) L1 Passar
    1.3.2 Certifique-se de que a opção --profiling argument está definida como false (Automático) L1 Passar
    1.3.3 Certifique-se de que o argumento --use-service-account-credentials está definido como true (Automático) L1 Passar
    1.3.4 Certifique-se de que o argumento --service-account-private-key-file está definido conforme adequado (Automático) L1 Passar
    1.3.5 Certifique-se de que o argumento --root-ca-file está definido conforme adequado (Automático) L1 Passar
    1.3.6 Certifique-se de que o argumento RotateKubeletServerCertificate está definido como true (Automático) L2 Passar
    1.3.7 Certifique-se de que o argumento --bind-address está definido como 127.0.0.1 (Automático) L1 Falha
    1.4 Agendador
    1.4.1 Certifique-se de que o argumento --profiling está definido como false (Automático) L1 Passar
    1.4.2 Certifique-se de que o argumento --bind-address está definido como 127.0.0.1 (Automático) L1 Falha

    Referências de auditoria

    Estão disponíveis instruções específicas para auditar cada recomendação como parte da referência CIS relevante. No entanto, pode querer automatizar algumas destas verificações para simplificar a validação destes controlos no seu ambiente. A seguinte ferramenta pode ajudar com esta situação.

    Auditoria automática da referência CIS Kubernetes

    Pode usar uma ferramenta de código aberto kube-bench para testar a configuração do cluster em relação à CIS Kubernetes Benchmark.

    Certifique-se de que especifica a versão adequada. Por exemplo:

    kube-bench --benchmark BENCHMARK_VERSION
    

    Substitua BENCHMARK_VERSION pela versão da referência do CIS Kubernetes que está a usar para avaliar o seu cluster.

    Para executar secções específicas da referência CIS, como master, node ou etcd, use o comando run --targets. Por exemplo:

    kube-bench run --targets master,node
    

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