CIS Benchmark do Kubernetes

Este documento apresenta o CIS Benchmark do Kubernetes, explica como auditar seu compliance com o comparativo de mercado e o que os clusters do Anthos no VMware (GKE On-Prem) configuram onde você não consegue implementar uma recomendação por conta própria.

Sobre os comparativos de mercado CIS

O Center for Internet Security (CIS) lança comparativos de mercado para práticas recomendadas de segurança. O comparativo de mercado CIS do Kubernetes (em inglês) apresenta um conjunto de recomendações para configurar o Kubernetes para oferecer suporte a uma forte postura de segurança. 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.

Versões

Os números de versão para diferentes comparativos de mercado podem não ser os mesmos. Este documento refere-se aos seguintes perfis:

Versão Anthos Versão do Kubernetes Versão do comparativo de mercado CIS do Kubernetes
1.15.0 1.27.1 1.6

Usar o comparativo de mercado CIS do Kubernetes

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

A ideia é que as recomendações:

  • sejam práticas e prudentes;
  • forneçam um benefício de segurança claro;
  • não inibam 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:

  • São destinadas a ambientes ou casos de uso em que a segurança é fundamental.
  • Atuam como medidas 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 na tabela a seguir.

    Pontuação Descrição
    Automatizado Representa recomendações para que avaliações de controle técnico possam ser totalmente automatizadas e validadas para um estado de aprovação/reprovação. As recomendações incluem as informações necessárias para implementar a automação.
    Manual Representa as recomendações para avaliações de controle técnico que não podem ser totalmente automatizadas e exige que todas ou algumas etapas manuais sejam feitas para confirmar se o estado configurado está definido como esperado. O estado esperado pode variar dependendo do ambiente.

    Avaliação em clusters do Anthos no VMware

    Usamos os seguintes valores para especificar o status das recomendações do Kubernetes em clusters do Anthos no VMware:

    Status Descrição
    Aprovado Está em conformidade com uma recomendação de comparativo de mercado.
    Reprovado Não está em conformidade com uma recomendação de comparativo de mercado.
    Controle equivalente Não está em conformidade com os termos exatos na recomendação de comparativo de mercado, mas há outros mecanismos nos clusters do Anthos no VMware que fornecem controles de segurança equivalentes.
    Depende do ambiente Os clusters do Anthos no VMware não configuram itens relacionados a esta recomendação. A configuração do usuário determina se o ambiente está em conformidade com uma recomendação de comparativo de mercado.

    Clusters do Anthos na arquitetura do VMware

    Os clusters do Anthos no VMware usam um cluster de administrador para gerenciar um ou mais clusters de usuário, que executam cargas de trabalho reais do Kubernetes. Para mais informações sobre essa arquitetura, consulte a visão geral dos clusters do Anthos no VMware. A configuração dos clusters de administrador e usuário é avaliada em relação aos benchmarks a seguir.

    Status em clusters do Anthos no VMware

    Ao criar um novo cluster em clusters do Anthos no VMware com a versão especificada, veja o desempenho dele em relação ao comparativo de mercado CIS do Kubernetes.

    Status dos clusters do Anthos no cluster de administrador do VMware

    # 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 Controle equivalente
    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 Controle equivalente
    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 Controle equivalente
    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 Controle equivalente
    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 Aprovado
    1.1.10 Verificar se a propriedade do arquivo da interface de rede do contêiner está definida como root:root (manual) N1 Aprovado
    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 Controle equivalente
    1.1.13 Verificar se as permissões do arquivo admin.conf estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.14 Verificar se a propriedade do arquivo admin.conf 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 Controle equivalente
    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 Controle equivalente
    1.1.19 Verificar se o diretório PKI do Kubernetes e a propriedade do arquivo estão definidos como root:root (automatizado) N1 Aprovado
    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 Aprovado
    1.1.21 Verificar se as permissões do arquivo de chave PKI do Kubernetes estão definidas como 600 (manual) N1 Aprovado
    1.2 Servidor de API
    1.2.1 Verificar se o argumento --anonymous-auth está definido como falso (manual) N1 Aprovado
    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 Depende do ambiente
    1.2.12 Verificar se o plug-in de controle de admissão SecurityContextDeny está definido, se PodSecurityPolicy não estiver sendo usado (manual) N1 Controle equivalente
    1.2.13 Verificar se o plug-in de controle de admissão ServiceAccount está definido (automatizado) N1 Aprovado
    1.2.14 Verificar se o plug-in de controle de admissão NamespaceLifecycle está definido (automatizado) N1 Aprovado
    1.2.15 Verificar se o plug-in de controle de admissão NodeRestriction está definido (automatizado) N1 Aprovado
    1.2.16 Verifique se o argumento --secure-port não está definido como 0. Observação: essa recomendação está obsoleta e será excluída de acordo com o processo de consenso (manual) N1 Aprovado
    1.2.17 Verificar se o argumento --profiling está definido como falso (automatizado) N1 Aprovado
    1.2.18 Verificar se o argumento --audit-log-path está definido (automatizado) N1 Aprovado
    1.2.19 Verificar se o argumento --audit-log-maxage está definido como 30 ou conforme apropriado (automatizado) N1 Controle equivalente
    1.2.20 Verificar se o argumento --audit-log-maxbackup está definido como 10 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.21 Verificar se o argumento --audit-log-maxsize está definido como 100 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.22 Verificar se o argumento --request-timeout está definido conforme apropriado (manual) N1 Aprovado
    1.2.23 Verificar se o argumento --service-account-lookup está definido como verdadeiro (automatizado) N1 Aprovado
    1.2.24 Verificar se o argumento --service-account-key-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.25 Verificar se os argumentos --etcd-certfile e --etcd-keyfile estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.26 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.27 Verificar se o argumento --client-ca-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.28 Verificar se o argumento --etcd-cafile está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.29 Verificar se o argumento --encryption-provider-config está definido conforme apropriado (manual) N1 Aprovado
    1.2.30 Verificar se os provedores de criptografia estão configurados corretamente (manual) N1 Aprovado
    1.2.31 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 o argumento --profiling está definido como falso (automatizado) N1 Aprovado
    1.3.3 Verificar se o argumento --use-service-account-credentials está definido como verdadeiro (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 verdadeiro (automatizado) L2 Aprovado
    1.3.7 Verificar se o argumento --bind-address está definido como 127.0.0.1 (automatizado) N1 Aprovado
    1.4 Programador
    1.4.1 Verificar se o argumento --profiling está definido como falso (automatizado) N1 Aprovado
    1.4.2 Verificar se o argumento --bind-address está definido como 127.0.0.1 (automatizado) N1 Aprovado
    2 Configuração de nó do etct
    2 Configuração de nó do etct
    2.1 Verificar se os argumentos --cert-file e --key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    2.2 Verificar se o argumento --client-cert-auth está definido como verdadeiro (automatizado) N1 Aprovado
    2.3 Verificar se o argumento --auto-tls não está definido como verdadeiro (automatizado) N1 Aprovado
    2.4 Verificar se os argumentos --peer-cert-file e --peer-key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    2,5 Verificar se o argumento --peer-client-cert-auth está definido como verdadeiro (automatizado) N1 Aprovado
    2.6 Verificar se o argumento --peer-auto-tls não está definido como verdadeiro (automatizado) N1 Aprovado
    2.7 Verificar se uma autoridade de certificação exclusiva é usada para o etcd (manual) L2 Aprovado
    3 Configuração do plano de controle
    3.1 Autenticação e autorização
    3.1.1 Não é possível usar a autenticação de certificado do cliente para usuários (manual) L2 Aprovado
    3.1.2 A autenticação por token de conta de serviço não deve ser usada para usuários (Manual) N1 Avisar
    3.1.3 A autenticação por token de inicialização não deve ser usada para usuários (Manual) N1 Avisar
    3.2 Logging
    3.2.1 Verificar se uma política de auditoria mínima foi criada (manual) N1 Aprovado
    3.2.2 Verificar se a política de auditoria abrange as principais preocupações de segurança (manual) L2 Controle equivalente
    4 Configuração de segurança do nó de trabalho
    4.1 Arquivos de configuração do nó de trabalho
    4.1.1 Verificar se as permissões do arquivo de serviço do Kubelet estão definidas como 600 ou são mais restritivas (automatizado) N1 Reprovado
    4.1.2 Verificar se a propriedade do arquivo de serviço do Kubelet está definida como root:root (automatizado) N1 Aprovado
    4.1.3 Se houver um arquivo kubeconfig do proxy, verificar se as permissões estão definidas como 600 ou são mais restritivas (manual) N1 Aprovado
    4.1.4 Se o arquivo kubeconfig de proxy existir, verifique se a propriedade está definida como root:root (Manual) N1 Aprovado
    4.1.5 Verificar se as permissões do arquivo kubelet.conf --kubeconfig estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    4.1.6 Verificar se a propriedade do arquivo kubelet.conf --kubeconfig está definida como root:root (automatizado) N1 Aprovado
    4.1.7 Verificar se as permissões do arquivo de autoridades de certificação estão definidas como 600 ou são mais restritivas (manual) N1 Aprovado
    4.1.8 Verificar se a propriedade do arquivo de autoridades de certificação do cliente está definida como root:root (manual) N1 Aprovado
    4.1.9 Se o arquivo de configuração kubelet config.yaml estiver sendo usado, valide as permissões definidas como 600 ou mais restritivas (Manual) N1 Avisar
    4.1.10 Se o arquivo de configuração . do kubelet config estiver sendo usado, confirme se a propriedade do arquivo está definida como root:root (Manual) N1 Aprovado
    4.2 Kubelet
    4.2.1 Verificar se o argumento --anonymous-auth está definido como falso (automatizado) N1 Aprovado
    4.2.2 Verificar se o argumento --authorization-mode não está definido como AlwaysAllow (automatizado) N1 Aprovado
    4.2.3 Verificar se o argumento --client-ca-file está definido conforme apropriado (automatizado) N1 Aprovado
    4.2.4 Verificar se o argumento --read-only-port está definido como 0 (manual) N1 Reprovado
    4.2.5 Verificar se o argumento --streaming-connection-idle-timeout não está definido como 0 (manual) N1 Aprovado
    4.2.6 Verificar se o argumento --make-iptables-util-chains está definido como verdadeiro (automatizado) N1 Aprovado
    4.2.7 Verificar se o argumento --hostname-override não está definido (manual) N1 Aprovado
    4.2.8 Verificar se o argumento eventRecordQPS está definido como um nível que garante a captura adequada do evento (manual) N1 Aprovado
    4.2.9 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (manual) L2 Controle equivalente
    4.2.10 Verificar se o argumento --rotate-certificates não está definido como falso (automatizado) N1 Aprovado
    4.2.11 Verificar se o argumento RotateKubeletServerCertificate está definido como verdadeiro (manual) N1 Aprovado
    4.2.12 Verificar se o Kubelet usa somente códigos criptográficos fortes (manual) N1 Aprovado
    4.2.13 Verificar se um limite foi definido nos PIDs do pod (manual) N1 Avisar

    Descrições de falhas e controles equivalentes para clusters do Anthos no cluster de administrador do VMware

    # Recomendação Nível Status Valor Justificativa
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do servidor de API do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do gerenciador do controlador do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do programador do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do etcd do cluster de usuário é armazenada no etcd do cluster de administrador.
    1.1.12 Verificar se a propriedade do diretório de dados do etcd está definida como etcd:etcd (automatizado) N1 Controle equivalente 2001:2001 O contêiner do etcd é executado como 2001, e o diretório de dados do etcd pertence a 2001:2001.
    1.1.16 Verificar se a propriedade do arquivo scheduler.conf está definida como root:root (automatizado) N1 Controle equivalente 2000:2000 O contêiner kube-scheduler é executado como 2000, e esse arquivo pertence a 2000:2000.
    1.1.18 Verificar se a propriedade do arquivo controller-manager.conf está definida como root:root (automatizado) N1 Controle equivalente 2002:2002 O contêiner controller-manager é executado como 2002, e esse arquivo pertence a 2002:2002.
    1.2.3 Verifique se --DenyServiceExternalIPs está definido (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    1.2.9 Verificar se o plug-in de controle de admissão EventRateLimit está definido (manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    1.2.11 Verificar se o plug-in de controle de admissão AlwaysPullImages está definido (manual) N1 Depende do ambiente não definido O controlador de admissão AlwaysPullImages oferece alguma proteção para imagens de registros particulares em clusters multilocatários não cooperativos. Mas isso faz com que os registros do contêiner se tornem um único ponto de falha para criar novos pods em todo o cluster. Os clusters do Anthos no VMware não ativam o controlador de admissão AlwaysPullImages, o que permite aos administradores do cluster implementar a política de admissão para fazer essa operação por conta própria.
    1.2.12 Verificar se o plug-in de controle de admissão SecurityContextDeny está definido, se PodSecurityPolicy não estiver sendo usado (manual) N1 Controle equivalente não definido O PodSecurityPolicy será removido do Kubernetes na versão 1.25. Como alternativa, a Admissão de segurança de pods é ativada por padrão a partir da 1.23.
    1.2.19 Verificar se o argumento --audit-log-maxage está definido como 30 ou conforme apropriado (automatizado) N1 Controle equivalente não definido O GKE captura registros de auditoria, mas não usa essas sinalizações para auditoria. Consulte a Política de auditoria dos clusters do Anthos no VMware para ver mais detalhes.
    3.1.2 A autenticação por token de conta de serviço não deve ser usada para usuários (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    3.1.3 A autenticação por token de inicialização não deve ser usada para usuários (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    3.2.2 Verificar se a política de auditoria abrange as principais preocupações de segurança (manual) L2 Controle equivalente não definido O GKE captura registros de auditoria, mas não usa essas sinalizações para auditoria. Consulte a Política de auditoria dos clusters do Anthos no VMware para ver mais detalhes.
    4.1.1 Verificar se as permissões do arquivo de serviço do Kubelet estão definidas como 600 ou são mais restritivas (automatizado) N1 Reprovado não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    4.1.9 Se o arquivo de configuração kubelet config.yaml estiver sendo usado, valide as permissões definidas como 600 ou mais restritivas (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    4.2.4 Verificar se o argumento --read-only-port está definido como 0 (manual) N1 Reprovado 10255 Alguns clusters do Anthos em componentes de monitoramento do VMware usam a porta somente leitura do Kubelet para conseguir as métricas.
    4.2.9 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (manual) L2 Controle equivalente não definido Os clusters do Anthos no VMware gerenciam o TLS do servidor kubelet usando a sinalização --rotate-server-certificates.
    4.2.13 Verificar se um limite foi definido nos PIDs do pod (manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.

    Status dos clusters do Anthos no cluster do usuário do VMware

    # 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 Controle equivalente
    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 Controle equivalente
    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 Controle equivalente
    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 Controle equivalente
    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 Controle equivalente
    1.1.6 Verificar se a propriedade do arquivo de especificação do pod do programador está definida como root:root (automatizado) N1 Controle equivalente
    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 Controle equivalente
    1.1.8 Verificar se a propriedade do arquivo de especificação do pod do etcd está definida como root:root (automatizado) N1 Controle equivalente
    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 Aprovado
    1.1.10 Verificar se a propriedade do arquivo da interface de rede do contêiner está definida como root:root (manual) N1 Aprovado
    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 Controle equivalente
    1.1.12 Verificar se a propriedade do diretório de dados do etcd está definida como etcd:etcd (automatizado) N1 Controle equivalente
    1.1.13 Verificar se as permissões do arquivo admin.conf estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    1.1.14 Verificar se a propriedade do arquivo admin.conf 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 Controle equivalente
    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 Controle equivalente
    1.1.19 Verificar se o diretório PKI do Kubernetes e a propriedade do arquivo estão definidos como root:root (automatizado) N1 Aprovado
    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 Aprovado
    1.1.21 Verificar se as permissões do arquivo de chave PKI do Kubernetes estão definidas como 600 (manual) N1 Aprovado
    1.2 Servidor de API
    1.2.1 Verificar se o argumento --anonymous-auth está definido como falso (manual) N1 Aprovado
    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 Depende do ambiente
    1.2.12 Verificar se o plug-in de controle de admissão SecurityContextDeny está definido, se PodSecurityPolicy não estiver sendo usado (manual) N1 Controle equivalente
    1.2.13 Verificar se o plug-in de controle de admissão ServiceAccount está definido (automatizado) N1 Aprovado
    1.2.14 Verificar se o plug-in de controle de admissão NamespaceLifecycle está definido (automatizado) N1 Aprovado
    1.2.15 Verificar se o plug-in de controle de admissão NodeRestriction está definido (automatizado) N1 Aprovado
    1.2.16 Verifique se o argumento --secure-port não está definido como 0. Observação: essa recomendação está obsoleta e será excluída de acordo com o processo de consenso (manual) N1 Aprovado
    1.2.17 Verificar se o argumento --profiling está definido como falso (automatizado) N1 Aprovado
    1.2.18 Verificar se o argumento --audit-log-path está definido (automatizado) N1 Aprovado
    1.2.19 Verificar se o argumento --audit-log-maxage está definido como 30 ou conforme apropriado (automatizado) N1 Controle equivalente
    1.2.20 Verificar se o argumento --audit-log-maxbackup está definido como 10 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.21 Verificar se o argumento --audit-log-maxsize está definido como 100 ou conforme apropriado (automatizado) N1 Aprovado
    1.2.22 Verificar se o argumento --request-timeout está definido conforme apropriado (manual) N1 Aprovado
    1.2.23 Verificar se o argumento --service-account-lookup está definido como verdadeiro (automatizado) N1 Aprovado
    1.2.24 Verificar se o argumento --service-account-key-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.25 Verificar se os argumentos --etcd-certfile e --etcd-keyfile estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.26 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    1.2.27 Verificar se o argumento --client-ca-file está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.28 Verificar se o argumento --etcd-cafile está definido conforme apropriado (automatizado) N1 Aprovado
    1.2.29 Verificar se o argumento --encryption-provider-config está definido conforme apropriado (manual) N1 Aprovado
    1.2.30 Verificar se os provedores de criptografia estão configurados corretamente (manual) N1 Aprovado
    1.2.31 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 o argumento --profiling está definido como falso (automatizado) N1 Aprovado
    1.3.3 Verificar se o argumento --use-service-account-credentials está definido como verdadeiro (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 verdadeiro (automatizado) L2 Aprovado
    1.3.7 Verificar se o argumento --bind-address está definido como 127.0.0.1 (automatizado) N1 Aprovado
    1.4 Programador
    1.4.1 Verificar se o argumento --profiling está definido como falso (automatizado) N1 Aprovado
    1.4.2 Verificar se o argumento --bind-address está definido como 127.0.0.1 (automatizado) N1 Aprovado
    2 Configuração de nó do etct
    2 Configuração de nó do etct
    2.1 Verificar se os argumentos --cert-file e --key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    2.2 Verificar se o argumento --client-cert-auth está definido como verdadeiro (automatizado) N1 Aprovado
    2.3 Verificar se o argumento --auto-tls não está definido como verdadeiro (automatizado) N1 Aprovado
    2.4 Verificar se os argumentos --peer-cert-file e --peer-key-file estão definidos conforme apropriado (automatizados) N1 Aprovado
    2,5 Verificar se o argumento --peer-client-cert-auth está definido como verdadeiro (automatizado) N1 Aprovado
    2.6 Verificar se o argumento --peer-auto-tls não está definido como verdadeiro (automatizado) N1 Aprovado
    2.7 Verificar se uma autoridade de certificação exclusiva é usada para o etcd (manual) L2 Aprovado
    3 Configuração do plano de controle
    3.1 Autenticação e autorização
    3.1.1 Não é possível usar a autenticação de certificado do cliente para usuários (manual) L2 Aprovado
    3.1.2 A autenticação por token de conta de serviço não deve ser usada para usuários (Manual) N1 Avisar
    3.1.3 A autenticação por token de inicialização não deve ser usada para usuários (Manual) N1 Avisar
    3.2 Logging
    3.2.1 Verificar se uma política de auditoria mínima foi criada (manual) N1 Aprovado
    3.2.2 Verificar se a política de auditoria abrange as principais preocupações de segurança (manual) L2 Controle equivalente
    4 Configuração de segurança do nó de trabalho
    4.1 Arquivos de configuração do nó de trabalho
    4.1.1 Verificar se as permissões do arquivo de serviço do Kubelet estão definidas como 600 ou são mais restritivas (automatizado) N1 Reprovado
    4.1.2 Verificar se a propriedade do arquivo de serviço do Kubelet está definida como root:root (automatizado) N1 Aprovado
    4.1.3 Se houver um arquivo kubeconfig do proxy, verificar se as permissões estão definidas como 600 ou são mais restritivas (manual) N1 Aprovado
    4.1.4 Se o arquivo kubeconfig de proxy existir, verifique se a propriedade está definida como root:root (Manual) N1 Aprovado
    4.1.5 Verificar se as permissões do arquivo kubelet.conf --kubeconfig estão definidas como 600 ou são mais restritivas (automatizado) N1 Aprovado
    4.1.6 Verificar se a propriedade do arquivo kubelet.conf --kubeconfig está definida como root:root (automatizado) N1 Aprovado
    4.1.7 Verificar se as permissões do arquivo de autoridades de certificação estão definidas como 600 ou são mais restritivas (manual) N1 Aprovado
    4.1.8 Verificar se a propriedade do arquivo de autoridades de certificação do cliente está definida como root:root (manual) N1 Aprovado
    4.1.9 Se o arquivo de configuração kubelet config.yaml estiver sendo usado, valide as permissões definidas como 600 ou mais restritivas (Manual) N1 Avisar
    4.1.10 Se o arquivo de configuração . do kubelet config estiver sendo usado, confirme se a propriedade do arquivo está definida como root:root (Manual) N1 Aprovado
    4.2 Kubelet
    4.2.1 Verificar se o argumento --anonymous-auth está definido como falso (automatizado) N1 Aprovado
    4.2.2 Verificar se o argumento --authorization-mode não está definido como AlwaysAllow (automatizado) N1 Aprovado
    4.2.3 Verificar se o argumento --client-ca-file está definido conforme apropriado (automatizado) N1 Aprovado
    4.2.4 Verificar se o argumento --read-only-port está definido como 0 (manual) N1 Reprovado
    4.2.5 Verificar se o argumento --streaming-connection-idle-timeout não está definido como 0 (manual) N1 Aprovado
    4.2.6 Verificar se o argumento --make-iptables-util-chains está definido como verdadeiro (automatizado) N1 Aprovado
    4.2.7 Verificar se o argumento --hostname-override não está definido (manual) N1 Aprovado
    4.2.8 Verificar se o argumento eventRecordQPS está definido como um nível que garante a captura adequada do evento (manual) N1 Aprovado
    4.2.9 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (manual) L2 Controle equivalente
    4.2.10 Verificar se o argumento --rotate-certificates não está definido como falso (automatizado) N1 Aprovado
    4.2.11 Verificar se o argumento RotateKubeletServerCertificate está definido como verdadeiro (manual) N1 Aprovado
    4.2.12 Verificar se o Kubelet usa somente códigos criptográficos fortes (manual) N1 Aprovado
    4.2.13 Verificar se um limite foi definido nos PIDs do pod (manual) N1 Avisar

    Descrições de falhas e controles equivalentes para clusters do Anthos no cluster do usuário do VMware

    # Recomendação Nível Status Valor Justificativa
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do servidor de API do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do servidor de API do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do gerenciador do controlador do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do gerenciador do controlador do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do pod do programador do cluster de usuário é armazenada no etcd.
    1.1.6 Verificar se a propriedade do arquivo de especificação do pod do programador está definida como root:root (automatizado) N1 Controle equivalente N/A No modo kubeception, a especificação do pod do programador do cluster de usuário é armazenada no etcd.
    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 Controle equivalente N/A No modo kubeception, a especificação do etcd do cluster de usuário é armazenada no etcd do cluster de administrador.
    1.1.8 Verificar se a propriedade do arquivo de especificação do pod do etcd está definida como root:root (automatizado) N1 Controle equivalente N/A No modo kubeception, a especificação do etcd do cluster de usuário é armazenada no etcd do cluster de administrador.
    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 Controle equivalente 777 O diretório de dados do etcd é montado pelo armazenamento externo vsphere.
    1.1.12 Verificar se a propriedade do diretório de dados do etcd está definida como etcd:etcd (automatizado) N1 Controle equivalente 2001:2001 O contêiner do etcd é executado como 2001, e o diretório de dados do etcd pertence a 2001:2001.
    1.1.16 Verificar se a propriedade do arquivo scheduler.conf está definida como root:root (automatizado) N1 Controle equivalente 2000:2000 O contêiner kube-scheduler é executado como 2000, e esse arquivo pertence a 2000:2000.
    1.1.18 Verificar se a propriedade do arquivo controller-manager.conf está definida como root:root (automatizado) N1 Controle equivalente 2002:2002 O contêiner controller-manager é executado como 2002, e esse arquivo pertence a 2002:2002.
    1.2.3 Verifique se --DenyServiceExternalIPs está definido (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    1.2.9 Verificar se o plug-in de controle de admissão EventRateLimit está definido (manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    1.2.11 Verificar se o plug-in de controle de admissão AlwaysPullImages está definido (manual) N1 Depende do ambiente não definido O controlador de admissão AlwaysPullImages oferece alguma proteção para imagens de registros particulares em clusters multilocatários não cooperativos. Mas isso faz com que os registros do contêiner se tornem um único ponto de falha para criar novos pods em todo o cluster. Os clusters do Anthos no VMware não ativam o controlador de admissão AlwaysPullImages, o que permite aos administradores do cluster implementar a política de admissão para fazer essa operação por conta própria.
    1.2.12 Verificar se o plug-in de controle de admissão SecurityContextDeny está definido, se PodSecurityPolicy não estiver sendo usado (manual) N1 Controle equivalente não definido O PodSecurityPolicy será removido do Kubernetes na versão 1.25. Como alternativa, a Admissão de segurança de pods é ativada por padrão a partir da 1.23.
    1.2.19 Verificar se o argumento --audit-log-maxage está definido como 30 ou conforme apropriado (automatizado) N1 Controle equivalente não definido O GKE captura registros de auditoria, mas não usa essas sinalizações para auditoria. Consulte a Política de auditoria dos clusters do Anthos no VMware para ver mais detalhes.
    3.1.2 A autenticação por token de conta de serviço não deve ser usada para usuários (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    3.1.3 A autenticação por token de inicialização não deve ser usada para usuários (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    3.2.2 Verificar se a política de auditoria abrange as principais preocupações de segurança (manual) L2 Controle equivalente não definido O GKE captura registros de auditoria, mas não usa essas sinalizações para auditoria. Consulte a Política de auditoria dos clusters do Anthos no VMware para ver mais detalhes.
    4.1.1 Verificar se as permissões do arquivo de serviço do Kubelet estão definidas como 600 ou são mais restritivas (automatizado) N1 Reprovado não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    4.1.9 Se o arquivo de configuração kubelet config.yaml estiver sendo usado, valide as permissões definidas como 600 ou mais restritivas (Manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.
    4.2.4 Verificar se o argumento --read-only-port está definido como 0 (manual) N1 Reprovado 10255 Alguns clusters do Anthos em componentes de monitoramento do VMware usam a porta somente leitura do Kubelet para conseguir as métricas.
    4.2.9 Verificar se os argumentos --tls-cert-file e --tls-private-key-file estão definidos conforme apropriado (manual) L2 Controle equivalente não definido Os clusters do Anthos no VMware gerenciam o TLS do servidor kubelet usando a sinalização --rotate-server-certificates.
    4.2.13 Verificar se um limite foi definido nos PIDs do pod (manual) N1 Avisar não definido Os clusters do Anthos no VMware não são compatíveis com o controlador de admissão da limitação de taxa de eventos, já que eles são um recurso Alfa do Kubernetes.

    Comparativos de mercado de auditoria

    Instruções específicas para a auditoria de cada recomendação estão disponíveis como parte do CIS Benchmark. 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 CIS Benchmark do Kubernetes.

    Especifique a versão apropriada. Por exemplo:

    kube-bench node --benchmark cis-1.6