CIS 1.9 Guia de Autoavaliação

Visão Geral

Este documento é um complemento ao guia de proteção do RKE2. O guia de proteção fornece orientações prescritivas para a proteção de uma instalação de produção do RKE2, e este guia de benchmark é destinado a ajudá-lo a avaliar o nível de segurança do cluster protegido em relação a cada controle no benchmark do CIS Kubernetes. Deve ser utilizado por operadores de RKE2, equipes de segurança, auditores e tomadores de decisão.

Este guia é específico para a linha de lançamento v1.27-1.32 do RKE2 e a versão v1.9 do Benchmark do CIS Kubernetes.

Para mais informações sobre cada controle, incluindo justificativas detalhadas e descrições de verificações, você pode consultar a seção correspondente do Benchmark do CIS Kubernetes v1.8. Você pode baixar o benchmark, após criar uma conta gratuita, no Centro para Segurança da Internet (CIS).

Metodologia de testes de controles

Cada controle no Benchmark do CIS Kubernetes foi avaliado em um cluster RKE2 configurado de acordo com o guia de proteção correspondente.

Estes são os resultados possíveis para cada controle:

  • APROVADO - O controle é automatizado (pontuação: verdadeiro). O cluster RKE2 em teste passou na auditoria descrita no benchmark.

  • Não Aplicável - O controle não é aplicável (tipo: pular) ao RKE2 devido à forma como foi projetado para operar. A seção de justificativa explicará por que isso ocorre.

  • AVISO - O controle é manual (pontuação: falso) no benchmark do CIS e depende da intervenção manual do operador. A seção de remediação fornecerá orientações sobre como alcançar um resultado APROVADO.

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 Assegure-se de que as permissões do arquivo de especificação do pod do servidor API estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml

1.1.2 Assegure-se de que a propriedade do arquivo de especificação do pod do servidor API esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml; fi'

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml

1.1.3 Assegure-se de que as permissões do arquivo de especificação do pod do gerenciador de controladores estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; then stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; fi'

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml

1.1.4 Assegure-se de que a propriedade do arquivo de especificação do pod do gerenciador de controladores esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml; fi'

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml

1.1.5 Assegure-se de que as permissões do arquivo de especificação do pod do agendador estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; then stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; fi'

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml

1.1.6 Assegure-se de que a propriedade do arquivo de especificação do pod do agendador esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml; fi'

Resultado Esperado: 'root:root' está presente

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml

1.1.7 Assegure-se de que as permissões do arquivo de especificação do pod etcd estejam definidas como 600 ou mais restritivas (Manual)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; then stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; fi'

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Se estiver executando apenas o master sem o papel etcd, essa verificação não é aplicável. Se os papéis de control plane e etcd estiverem presentes nos mesmos nós, mas essa verificação for um aviso, execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml

1.1.8 Assegure-se de que a propriedade do arquivo de especificação do pod etcd esteja definida como root:root (Manual)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; then stat -c %U:%G /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml; fi'

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Se estiver executando apenas o master sem o papel etcd, essa verificação não é aplicável. Se os papéis de control plane e etcd estiverem presentes nos mesmos nós, mas essa verificação for um aviso, execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml

1.1.9 Certifique-se de que as permissões do arquivo da interface de rede de contêiner estejam definidas como 600 ou mais restritivas (Manual)

Resultado: AVISO

Remediação: Observe que para muitos CNIs, um arquivo de bloqueio é criado com permissões 750. Isso é esperado e pode ser ignorado. Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/cni/networks/<filename> and chmod 600 /etc/cni/net.d/<filename>

1.1.10 Certifique-se de que a propriedade do arquivo da interface de rede de contêiner esteja definida como root:root (Manual)

Resultado: PASS

Auditoria

ps -fC ${kubeletbin:-kubelet} | grep -- --cni-conf-dir || echo "/etc/cni/net.d" | sed 's%.*cni-conf-dir[= ]\([^ ]*\).*%\1%' | xargs -I{} find {} -mindepth 1 | xargs --no-run-if-empty stat -c %U:%G
find /var/lib/cni/networks -type f 2> /dev/null | xargs --no-run-if-empty stat -c %U:%G

Resultado Esperado: 'root:root' está presente

Valor retornado:
root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root <path/to/cni/files>

1.1.11 Certifique-se de que as permissões do diretório de dados etcd estejam definidas como 700 ou mais restritivas (Manual)

Resultado: PASS

Auditoria

stat -c permissions=%a /var/lib/rancher/rke2/server/db/etcd

Resultado Esperado: as permissões estão definidas como 700, esperado 700 ou mais restritivas

Valor retornado:
permissions=700
Remediação:

Se estiver executando apenas o master sem o papel etcd, essa verificação não é aplicável. Se os papéis de controlplane e etcd estiverem presentes nos mesmos nós, mas essa verificação for um aviso, então no nó do servidor etcd, obtenha o diretório de dados etcd, passado como um argumento --data-dir, do comando 'ps -ef | grep etcd'. Execute o comando abaixo (com base no diretório de dados etcd encontrado acima). Por exemplo, chmod 700 /var/lib/rancher/rke2/server/db/etcd

1.1.12 Certifique-se de que a propriedade do diretório de dados etcd esteja definida como etcd:etcd (Manual)

Resultado: PASS

Auditoria

stat -c %U:%G /var/lib/rancher/rke2/server/db/etcd

Resultado Esperado: 'etcd:etcd' está presente

Valor retornado:
etcd:etcd
Remediação:

Se estiver executando apenas o master sem o papel etcd, essa verificação não é aplicável. Se os papéis de controlplane e etcd estiverem presentes nos mesmos nós, mas essa verificação for um aviso, então no nó do servidor etcd, obtenha o diretório de dados etcd, passado como um argumento --data-dir, do comando 'ps -ef | grep etcd'. Execute o comando abaixo (com base no diretório de dados etcd encontrado acima). Por exemplo, chown etcd:etcd /var/lib/rancher/rke2/server/db/etcd

1.1.13 Certifique-se de que as permissões do arquivo admin.conf estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

stat -c permissions=%a /var/lib/rancher/rke2/server/cred/admin.kubeconfig

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/server/cred/admin.kubeconfig

1.1.14 Certifique-se de que a propriedade do arquivo admin.conf esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

stat -c %U:%G /var/lib/rancher/rke2/server/cred/admin.kubeconfig

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/server/cred/admin.kubeconfig

1.1.15 Certifique-se de que as permissões do arquivo scheduler.conf estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig; fi'

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig

1.1.16 Certifique-se de que a propriedade do arquivo scheduler.conf esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

stat -c %U:%G /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig

1.1.17 Certifique-se de que as permissões do arquivo controller-manager.conf estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/server/cred/controller.kubeconfig; fi'

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod 600 /var/lib/rancher/rke2/server/cred/controller.kubeconfig

1.1.18 Certifique-se de que a propriedade do arquivo controller-manager.conf esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

stat -c %U:%G /var/lib/rancher/rke2/server/cred/controller.kubeconfig

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown root:root /var/lib/rancher/rke2/server/cred/controller.kubeconfig

1.1.19 Certifique-se de que a propriedade do diretório e dos arquivos PKI do Kubernetes esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

stat -c %U:%G /var/lib/rancher/rke2/server/tls

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chown -R root:root /var/lib/rancher/rke2/server/tls

1.1.20 Certifique-se de que as permissões do arquivo de certificado PKI do Kubernetes estejam definidas como 600 ou mais restritivas (Manual)

Resultado: AVISO

Remediação: Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod -R 600 /var/lib/rancher/rke2/server/tls/*.crt

1.1.21 Certifique-se de que as permissões do arquivo de chave PKI do Kubernetes estejam definidas como 600 (Automatizado)

Resultado: PASS

Auditoria

stat -c permissions=%a /var/lib/rancher/rke2/server/tls/*.key

Resultado Esperado: as permissões têm 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600 permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) no nó do plano de controle. Por exemplo, chmod -R 600 /var/lib/rancher/rke2/server/tls/*.key

1.2 Servidor API

1.2.1 Certifique-se de que o argumento --anonymous-auth esteja definido como false (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--anonymous-auth' é igual a 'false'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o argumento --anonymous-auth como false. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova qualquer linha semelhante à abaixo.

kube-apiserver-arg: - "anonymous-auth=true"

1.2.2 Certifique-se de que o parâmetro --token-auth-file não esteja definido (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--token-auth-file' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Siga a documentação e configure mecanismos alternativos para autenticação. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova qualquer linha semelhante à abaixo.

kube-apiserver-arg: - "token-auth-file=+++<path>+++"

1.2.3 Certifique-se de que o --DenyServiceExternalIPs esteja definido (Manual)

Resultado: AVISO

Remediação: Por padrão, o RKE2 não define DenyServiceExternalIPs. Para habilitar esta flag, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml como abaixo.

kube-apiserver-arg: - "enable-admission-plugins=DenyServiceExternalIPs"

1.2.4 Certifique-se de que os argumentos --kubelet-client-certificate e --kubelet-client-key estão configurados adequadamente (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--kubelet-client-certificate' está presente E '--kubelet-client-key' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 fornece automaticamente o certificado e a chave do cliente kubelet. Eles são gerados e localizados em /var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt e /var/lib/rancher/rke2/server/tls/client-kube-apiserver.key. Se por algum motivo você precisar fornecer seu próprio certificado e chave, pode definir os parâmetros abaixo no arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml.

kube-apiserver-arg: - "kubelet-client-certificate=<path/to/client-cert-file>" - "kubelet-client-key=<path/to/client-key-file>"

1.2.5 Certifique-se de que o argumento --kubelet-certificate-authority está configurado adequadamente (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--kubelet-certificate-authority' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 fornece automaticamente o arquivo de certificado CA do kubelet, em /var/lib/rancher/rke2/server/tls/server-ca.crt. Se por algum motivo você precisar fornecer seu próprio certificado CA, considere usar a ferramenta de linha de comando de certificado do rke2. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "kubelet-certificate-authority=<path/to/ca-cert-file>"

1.2.6 Certifique-se de que o argumento --authorization-mode não está definido como AlwaysAllow (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--authorization-mode' não possui 'AlwaysAllow'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 não define o --authorization-mode como AlwaysAllow. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "authorization-mode=AlwaysAllow"

1.2.7 Certifique-se de que o argumento --authorization-mode inclui Node (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--authorization-mode' tem 'Node'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o --authorization-mode como Node e RBAC. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, certifique-se de que você não está sobrescrevendo o authorization-mode.

1.2.8 Certifique-se de que o argumento --authorization-mode inclui RBAC (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--authorization-mode' tem 'RBAC'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o --authorization-mode como Node e RBAC. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, certifique-se de que você não está sobrescrevendo o authorization-mode.

1.2.9 Certifique-se de que o plugin de controle de admissão EventRateLimit esteja configurado (Manual)

Resultado: AVISO

Remediação: Siga a documentação do Kubernetes e defina os limites desejados em um arquivo de configuração. Em seguida, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e defina os parâmetros abaixo.

kube-apiserver-arg: - "enable-admission-plugins=\...,EventRateLimit,\..." - "admission-control-config-file=<path/to/configuration/file>"

1.2.10 Certifique-se de que o plugin de controle de admissão AlwaysAdmit não esteja configurado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--habilitar-plugins-de-admissão' não tem 'AlwaysAdmit' OU '--habilitar-plugins-de-admissão' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 não define o --enable-admission-plugins como AlwaysAdmit. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "enable-admission-plugins=AlwaysAdmit"

1.2.11 Certifique-se de que o plugin de controle de admissão AlwaysPullImages esteja configurado (Manual)

Resultado: AVISO

Remediação: Permissivo, de acordo com as diretrizes do CIS, "Esta configuração pode impactar clusters offline ou isolados, que possuem imagens pré-carregadas e não têm acesso a um registro para puxar imagens em uso." Esta configuração não é apropriada para clusters que utilizam esta configuração." Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml no nó de controle e defina o parâmetro --enable-admission-plugins para incluir AlwaysPullImages. --enable-admission-plugins=...,AlwaysPullImages,...

1.2.12 Certifique-se de que o plugin de controle de admissão ServiceAccount esteja configurado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--desabilitar-plugins-de-admissão' está presente OU '--desabilitar-plugins-de-admissão' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 não define o --disable-admission-plugins para nada. Siga a documentação e crie objetos ServiceAccount conforme seu ambiente. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "disable-admission-plugins=ServiceAccount"

1.2.13 Certifique-se de que o plugin de controle de admissão NamespaceLifecycle esteja configurado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--desabilitar-plugins-de-admissão' está presente OU '--desabilitar-plugins-de-admissão' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 não define o --disable-admission-plugins para nada. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "disable-admission-plugins=\...,NamespaceLifecycle,\..."

1.2.14 Certifique-se de que o plugin de controle de admissão NodeRestriction esteja configurado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--enable-admission-plugins' possui 'NodeRestriction'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 configura o --enable-admission-plugins para NodeRestriction. Verifique o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e certifique-se de que você não está sobrescrevendo os plugins de admissão. Se estiver, inclua NodeRestriction na lista.

kube-apiserver-arg: - "enable-admission-plugins=\...,NodeRestriction,\..."

1.2.15 Certifique-se de que o --argumento 'profiling' esteja definido como falso (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--profiling' é igual a 'false'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o argumento --profiling como false. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "profiling=true"

1.2.16 Certifique-se de que o argumento --audit-log-path esteja definido (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--audit-log-path' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 configura o argumento --audit-log-path para /var/lib/rancher/rke2/server/logs/audit.log. Se você quiser mudar isso, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml no nó de controle e defina o parâmetro --audit-log-path para um caminho e arquivo adequados onde você gostaria que os logs de auditoria fossem gravados, por exemplo,

kube-apiserver-arg: - "audit-log-path=/var/log/rke2/audit.log"

1.2.17 Certifique-se de que o argumento --audit-log-maxage esteja definido como 30 ou conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--audit-log-maxage' é maior ou igual a 30

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o argumento --audit-log-maxage como 30 dias. Se você quiser mudar isso, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml no nó de controle e defina o parâmetro --audit-log-maxage para um número apropriado de dias, por exemplo,

kube-apiserver-arg: - "audit-log-maxage=40"

1.2.18 Certifique-se de que o argumento --audit-log-maxbackup esteja definido como 10 ou conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--audit-log-maxbackup' é maior ou igual a 10

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o argumento --audit-log-maxbackup como 10. Se você quiser mudar isso, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml no nó de controle e defina o parâmetro --audit-log-maxbackup para um valor apropriado. Por exemplo,

kube-apiserver-arg: - "audit-log-maxbackup=15"

1.2.19 Certifique-se de que o argumento --audit-log-maxsize esteja definido como 100 ou conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--audit-log-maxsize' é maior ou igual a 100

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 define o argumento --audit-log-maxsize como 100 MB. Se você quiser mudar isso, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml no nó de controle e defina o parâmetro --audit-log-maxsize para um tamanho apropriado em MB. Por exemplo,

kube-apiserver-arg: - "audit-log-maxsize=150"

1.2.20 Certifique-se de que o argumento --request-timeout esteja definido conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--request-timeout' não está presente OU '--request-timeout' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Permissivo, de acordo com as diretrizes do CIS, "recomenda-se definir esse limite conforme apropriado e alterar o limite padrão de 60 segundos apenas se necessário". Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e defina o parâmetro abaixo, se necessário. Por exemplo,

kube-apiserver-arg: - "request-timeout=300s"

1.2.21 Certifique-se de que o --argumento service-account-lookup esteja definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--service-account-lookup' não está presente OU '--service-account-lookup' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 não define o argumento --service-account-lookup. Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e defina o argumento service-account-lookup. Por exemplo,

kube-apiserver-arg: - "service-account-lookup=true"

Alternativamente, você pode excluir o parâmetro service-account-lookup deste arquivo para que o padrão entre em vigor.

1.2.22 Assegure-se de que o argumento --service-account-key-file esteja definido conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--service-account-key-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

O RKE2 gera e define automaticamente o arquivo de chave da conta de serviço. Ele está localizado em /var/lib/rancher/rke2/server/tls/service.key. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "service-account-key-file=+++<path>+++"

1.2.23 Assegure-se de que os argumentos --etcd-certfile e --etcd-keyfile estejam definidos conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--etcd-certfile' está presente E '--etcd-keyfile' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

O RKE2 gera e define automaticamente os arquivos de certificado e chave do etcd. Eles estão localizados em /var/lib/rancher/rke2/server/tls/etcd/client.crt e /var/lib/rancher/rke2/server/tls/etcd/client.key. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "etcd-certfile=+++<path>+++" - "etcd-keyfile=+++<path>+++"

1.2.24 Assegure-se de que os argumentos --tls-cert-file e --tls-private-key-file estejam definidos conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--tls-cert-file' está presente E '--tls-private-key-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 gera e fornece automaticamente o certificado TLS e a chave privada para o apiserver. Eles são gerados e localizados em /var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt e /var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "tls-cert-file=+++<path>+++" - "tls-private-key-file=+++<path>+++"

1.2.25 Assegure-se de que o argumento --client-ca-file esteja definido conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--client-ca-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 fornece automaticamente o arquivo da autoridade certificadora do cliente. Ele é gerado e localizado em /var/lib/rancher/rke2/server/tls/client-ca.crt. Se por algum motivo você precisar fornecer seu próprio certificado CA, considere usar a ferramenta de linha de comando rke2 certificate. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "client-ca-file=+++<path>+++"

1.2.26 Certifique-se de que o argumento --etcd-cafile esteja definido conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--etcd-cafile' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o RKE2 fornece automaticamente o arquivo da autoridade certificadora do etcd. Ele é gerado e localizado em /var/lib/rancher/rke2/server/tls/client-ca.crt. Se por algum motivo você precisar fornecer seu próprio certificado CA, considere usar a ferramenta de linha de comando rke2 certificate. Se esta verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-apiserver-arg: - "etcd-cafile=+++<path>+++"

1.2.27 Certifique-se de que o argumento --encryption-provider-config esteja definido conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--encryption-provider-config' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

O RKE2 está sempre configurado para criptografar segredos. A criptografia de segredos é gerenciada com a ferramenta de linha de comando rke2 secrets-encrypt. Se necessário, você pode encontrar a configuração de criptografia gerada em /var/lib/rancher/rke2/server/cred/encryption-config.json

1.2.28 Certifique-se de que os provedores de criptografia estejam configurados adequadamente (Automatizado)

Resultado: PASS

Auditoria

ENCRYPTION_PROVIDER_CONFIG=$(ps -ef | grep kube-apiserver | grep -- --encryption-provider-config | sed 's%.*encryption-provider-config[= ]\([{caret} ]*\).*%\1%') if test -e $ENCRYPTION_PROVIDER_CONFIG; then grep -o 'providers\"\:\[.*\]' $ENCRYPTION_PROVIDER_CONFIG | grep -o "[A-Za-z]*" | head -2 | tail -1 | sed 's/{caret}/provider=/'; fi

Resultado Esperado: 'provider' contém elementos válidos de 'aescbc,kms,secretbox'

Valor retornado:
provider=aescbc
Remediação:

O RKE2 está sempre configurado para usar o provedor de criptografia aescbc para criptografar segredos. A criptografia de segredos é gerenciada com a ferramenta de linha de comando rke2 secrets-encrypt. Se necessário, você pode encontrar a configuração de criptografia gerada em /var/lib/rancher/rke2/server/cred/encryption-config.json.

1.2.29 Certifique-se de que o servidor API utilize apenas cifras criptográficas fortes (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-apiserver

Resultado Esperado: '--tls-cipher-suites' contém elementos válidos de 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
Remediação:

Por padrão, o kube-apiserver do RKE2 está em conformidade com este teste. Alterações a esses valores podem causar regressões, portanto, certifique-se de que todos os clientes do apiserver suportem a nova configuração TLS antes de aplicá-la em implantações de produção. Se uma configuração TLS personalizada for necessária, considere também criar uma versão personalizada desta regra que se alinhe com seus requisitos. Se essa verificação falhar, remova qualquer configuração personalizada em torno de tls-cipher-suites ou atualize o arquivo /etc/rancher/rke2/config.yaml para corresponder ao padrão, adicionando o seguinte: kube-apiserver-arg: - "tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"

1.3 Gerenciador de Controladores

1.3.1 Certifique-se de que o argumento --terminated-pod-gc-threshold esteja configurado adequadamente (Manual)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--terminated-pod-gc-threshold' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 define um terminated-pod-gc-threshold de 1000. Se você precisar alterar esse valor, edite o arquivo de configuração do RKE2 em /etc/rancher/rke2/config.yaml no nó do plano de controle e defina o --terminated-pod-gc-threshold para um limite apropriado.

kube-controller-manager-arg: - "terminated-pod-gc-threshold=10"

1.3.2 Certifique-se de que o argumento --profiling esteja definido como falso (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--profiling' é igual a 'false'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 define o argumento --profiling como false. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-controller-manager-arg: - "profiling=true"

1.3.3 Certifique-se de que o argumento --use-service-account-credentials esteja definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--use-service-account-credentials' não é igual a 'false'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 define o argumento --use-service-account-credentials como true. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-controller-manager-arg: - "use-service-account-credentials=false"

1.3.4 Certifique-se de que o argumento --service-account-private-key-file esteja definido de forma apropriada (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--service-account-private-key-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 fornece automaticamente o arquivo da chave privada da conta de serviço. Ele é gerado e localizado em /var/lib/rancher/rke2/server/tls/service.current.key. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-controller-manager-arg: - "service-account-private-key-file=+++<path>+++"

1.3.5 Certifique-se de que o argumento --root-ca-file esteja definido de forma apropriada (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--root-ca-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 fornece automaticamente o arquivo root CA. Ele é gerado e localizado em /var/lib/rancher/rke2/server/tls/server-ca.crt. Se por algum motivo você precisar fornecer seu próprio certificado CA, considere usar a ferramenta de linha de comando de certificado do rke2. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-controller-manager-arg: - "root-ca-file=+++<path>+++"

1.3.6 Certifique-se de que o argumento RotateKubeletServerCertificate esteja definido como true (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--feature-gates' está presente OU '--feature-gates' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 não define o recurso RotateKubeletServerCertificate. Se você ativou esse recurso, deve removê-lo. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova quaisquer linhas como abaixo.

kube-controller-manager-arg: - "feature-gate=RotateKubeletServerCertificate"

1.3.7 Certifique-se de que o argumento --bind-address esteja definido como 127.0.0.1 (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-controller-manager

Resultado Esperado: '--bind-address' é igual a '127.0.0.1' OU '--bind-address' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Por padrão, o RKE2 define o argumento --bind-address como 127.0.0.1. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-controller-manager-arg: - "bind-address=+++<IP>+++"

1.4 Agendador

1.4.1 Certifique-se de que o argumento --profiling esteja definido como false (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-scheduler

Resultado Esperado: '--profiling' é igual a 'false'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2992 2874 0 18:32 ? 00:00:05 kube-scheduler --permit-port-sharing=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259
Remediação:

Por padrão, o RKE2 define o argumento --profiling como false. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-scheduler-arg: - "profiling=true"

1.4.2 Certifique-se de que o argumento --bind-address esteja definido como 127.0.0.1 (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-scheduler

Resultado Esperado: '--bind-address' é igual a '127.0.0.1' OU '--bind-address' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2992 2874 0 18:32 ? 00:00:05 kube-scheduler --permit-port-sharing=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/rke2/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259
Remediação:

Por padrão, o RKE2 define o argumento --bind-address como 127.0.0.1. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas como abaixo.

kube-scheduler-arg: - "bind-address=+++<IP>+++"

2 Configuração do Nó Etcd

2 Configuração do Nó Etcd

2.1 Certifique-se de que os argumentos --cert-file e --key-file estejam configurados adequadamente (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado Esperado: '.client-transport-security.cert-file' é igual a '/var/lib/rancher/rke2/server/tls/etcd/server-client.crt' E '.client-transport-security.key-file' é igual a '/var/lib/rancher/rke2/server/tls/etcd/server-client.key'

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-eb0b952d=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-eb0b952d peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 gera arquivos de certificado e chave para etcd. Estes estão localizados em /var/lib/rancher/rke2/server/tls/etcd/. Se essa verificação falhar, certifique-se de que o arquivo de configuração /var/lib/rancher/rke2/server/db/etcd/config não foi modificado para usar arquivos de certificado e chave personalizados.

2.2 Certifique-se de que o argumento --client-cert-auth esteja definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado esperado: 'ETCD_CLIENT_CERT_AUTH' está presente OU '.client-transport-security.client-cert-auth' é igual a 'true'

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-a6fd4758=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 define o parâmetro --client-cert-auth como true. Se essa verificação falhar, certifique-se de que o arquivo de configuração /var/lib/rancher/rke2/server/db/etcd/config não foi modificado para desabilitar a autenticação de certificado de cliente.

2.3 Certifique-se de que o argumento --auto-tls não esteja definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado esperado: 'ETCD_AUTO_TLS' não está presente OU 'ETCD_AUTO_TLS' está presente OU '.client-transport-security.auto-tls' está presente

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-a6fd4758=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 não define o parâmetro --auto-tls. Se essa verificação falhar, edite o arquivo de especificação do pod etcd /var/lib/rancher/rke2/server/db/etcd/config no nó mestre e remova o parâmetro --auto-tls ou defina-o como false. client-transport-security: auto-tls: false

2.4 Certifique-se de que os argumentos --peer-cert-file e --peer-key-file estejam configurados adequadamente (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado Esperado: '.peer-transport-security.cert-file' é igual a '/var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt' E '.peer-transport-security.key-file' é igual a '/var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key'

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-eb0b952d=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-eb0b952d peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 gera arquivos de certificado e chave de peer para o etcd. Estes estão localizados em /var/lib/rancher/rke2/server/tls/etcd/. Se essa verificação falhar, certifique-se de que o arquivo de configuração /var/lib/rancher/rke2/server/db/etcd/config não foi modificado para usar arquivos de certificado e chave de peer personalizados.

2.5 Certifique-se de que o argumento --peer-client-cert-auth esteja definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado esperado: 'ETCD_PEER_CLIENT_CERT_AUTH' está presente OU '.peer-transport-security.client-cert-auth' é igual a 'true'

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-a6fd4758=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 define o parâmetro --peer-cert-auth como true. Se essa verificação falhar, certifique-se de que o arquivo de configuração /var/lib/rancher/rke2/server/db/etcd/config não foi modificado para desabilitar a autenticação de certificado de cliente de peer.

2.6 Certifique-se de que o argumento --peer-auto-tls não esteja definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado esperado: 'ETCD_PEER_AUTO_TLS' não está presente OU 'ETCD_PEER_AUTO_TLS' está presente OU '.peer-transport-security.auto-tls' está presente

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-a6fd4758=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 não define o parâmetro --peer-auto-tls. Se essa verificação falhar, edite o arquivo de especificação do pod etcd /var/lib/rancher/rke2/server/db/etcd/config no nó mestre e remova o parâmetro --peer-auto-tls ou defina-o como false. peer-transport-security: auto-tls: false

2.7 Certifique-se de que uma Autoridade Certificadora única seja usada para etcd (Automatizado)

Resultado: PASS

Auditoria

cat /var/lib/rancher/rke2/server/db/etcd/config

Resultado esperado: 'ETCD_TRUSTED_CA_FILE' está presente OU '.peer-transport-security.trusted-ca-file' é igual a '/var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt'

Valor retornado:
advertise-client-urls: https://10.10.10.100:2379 client-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt data-dir: /var/lib/rancher/rke2/server/db/etcd election-timeout: 5000 experimental-initial-corrupt-check: true experimental-watch-progress-notify-interval: 5000000000 heartbeat-interval: 500 initial-advertise-peer-urls: https://10.10.10.100:2380 initial-cluster: server-0-a6fd4758=https://10.10.10.100:2380 initial-cluster-state: new listen-client-http-urls: https://127.0.0.1:2382 listen-client-urls: https://127.0.0.1:2379,https://10.10.10.100:2379 listen-metrics-urls: http://127.0.0.1:2381 listen-peer-urls: https://127.0.0.1:2380,https://10.10.10.100:2380 log-outputs: - stderr logger: zap name: server-0-a6fd4758 peer-transport-security: cert-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt client-cert-auth: true key-file: /var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key trusted-ca-file: /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt snapshot-count: 10000
Remediação:

Por padrão, o RKE2 gera uma autoridade certificadora única para o etcd. Isso está localizado em /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt. Se essa verificação falhar, certifique-se de que o arquivo de configuração /var/lib/rancher/rke2/server/db/etcd/config não foi modificado para usar uma autoridade certificadora compartilhada.

3 Configuração do Plano de Controle

3.1 Autenticação e Autorização

3.1.1 A autenticação por certificado de cliente não deve ser usada para usuários (Manual)

Resultado: AVISO

Remediação: Mecanismos alternativos fornecidos pelo Kubernetes, como o uso de OIDC, devem ser implementados em vez de certificados de cliente.

3.1.2 A autenticação por token de conta de serviço não deve ser usada para usuários (Manual)

Resultado: AVISO

Remediação: Mecanismos alternativos fornecidos pelo Kubernetes, como o uso de OIDC, devem ser implementados em vez de tokens de conta de serviço.

3.1.3 A autenticação por token de bootstrap não deve ser usada para usuários (Manual)

Resultado: AVISO

Remediação: Mecanismos alternativos fornecidos pelo Kubernetes, como o uso de OIDC, devem ser implementados em vez de tokens de bootstrap.

3.2 Registro

3.2.1 Certifique-se de que uma política de auditoria mínima seja criada (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -ef | grep kube-apiserver | grep -v grep

Resultado Esperado: '--arquivo de política de auditoria' está presente

Valor retornado:
root 2840 2791 5 18:32 ? 00:01:35 kube-apiserver --admission-control-config-file=/etc/rancher/rke2/rke2-pss.yaml --audit-policy-file=/etc/rancher/rke2/audit-policy.yaml --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log --advertise-address=10.10.10.100 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,rke2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key root 2987 2893 1 18:32 ? 00:00:25 kube-controller-manager --flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins --terminated-pod-gc-threshold=1000 --permit-port-sharing=true --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/rke2/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/rke2/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/rke2/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/rke2/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/rke2/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/rke2/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/rke2/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true
Remediação:

Crie um arquivo de política de auditoria para seu cluster.

3.2.2 Certifique-se de que a política de auditoria aborde as principais preocupações de segurança (Manual)

Resultado: AVISO

Remediação: Revise a política de auditoria fornecida para o cluster e certifique-se de que ela aborde pelo menos as seguintes áreas: - Acesso a Segredos gerenciados pelo cluster. Deve-se ter cuidado para registrar apenas Metadados para solicitações a Segredos, ConfigMaps e TokenReviews, a fim de evitar o risco de registrar dados sensíveis. - Modificação de objetos Pod e Deployment. - Uso de pods/exec, pods/portforward, pods/proxy e services/proxy. Para a maioria das solicitações, é recomendado registrar minimamente no nível de Metadados (o nível mais básico de registro).

4 Configuração de Segurança do Nó de Trabalho

4.1 Arquivos de Configuração do Nó de Trabalho

4.1.1 Certifique-se de que as permissões do arquivo de serviço kubelet estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: Não Aplicável

Racional: O kubelet é gerenciado pelo processo RKE2. Não há arquivo de serviço kubelet, toda a configuração é passada como argumentos no runtime.

4.1.2 Certifique-se de que a propriedade do arquivo de serviço kubelet esteja definida como root:root (Automatizado)

Resultado: Não Aplicável

Racional: O kubelet é gerenciado pelo processo RKE2. Não há arquivo de serviço kubelet, toda a configuração é passada como argumentos no runtime.

4.1.3 Se o arquivo kubeconfig do proxy existir, certifique-se de que as permissões estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; fi'

Resultado Esperado: as permissões estão definidas como 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) em cada nó de trabalho. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig

4.1.4 Se o arquivo kubeconfig do proxy existir, certifique-se de que a propriedade esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig; fi'

Resultado Esperado: 'root:root' está presente

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) em cada nó de trabalho. Por exemplo, chown root:root /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig

4.1.5 Certifique-se de que as permissões do arquivo --kubeconfig kubelet.conf estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubelet.kubeconfig; then stat -c permissions=%a /var/lib/rancher/rke2/agent/kubelet.kubeconfig; fi'

Resultado Esperado: as permissões estão definidas como 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) em cada nó de trabalho. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/kubelet.kubeconfig

4.1.6 Certifique-se de que a propriedade do arquivo --kubeconfig kubelet.conf esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/kubelet.kubeconfig; then stat -c %U:%G /var/lib/rancher/rke2/agent/kubelet.kubeconfig; fi'

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) em cada nó de trabalho. Por exemplo, chown root:root /var/lib/rancher/rke2/agent/kubelet.kubeconfig

4.1.7 Certifique-se de que as permissões do arquivo de autoridades certificadoras estejam definidas como 600 ou mais restritivas (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/client-ca.crt; then stat -c permissions=%a /var/lib/rancher/rke2/agent/client-ca.crt; fi'

Resultado Esperado: as permissões estão definidas como 600, esperado 600 ou mais restritivas

Valor retornado:
permissions=600
Remediação:

Execute o comando abaixo (com base na localização do arquivo em seu sistema) em cada nó de trabalho. Por exemplo, chmod 600 /var/lib/rancher/rke2/agent/client-ca.crt

4.1.8 Certifique-se de que a propriedade do arquivo de autoridades certificadoras do cliente esteja definida como root:root (Automatizado)

Resultado: PASS

Auditoria

/bin/sh -c 'if test -e /var/lib/rancher/rke2/agent/client-ca.crt; then stat -c %U:%G /var/lib/rancher/rke2/agent/client-ca.crt; fi'

Resultado Esperado: 'root:root' é igual a 'root:root'

Valor retornado:
root:root
Remediação:

Execute o seguinte comando para modificar a propriedade do arquivo --client-ca-file. chown root:root /var/lib/rancher/rke2/agent/client-ca.crt

4.1.9 Se o arquivo de configuração kubelet config.yaml estiver sendo usado, valide se as permissões estão definidas como 600 ou mais restritivas (Automatizado)

Resultado: Não Aplicável

Racional: O kubelet é gerenciado pelo processo RKE2. Não há arquivo de configuração do kubelet, toda a configuração é passada como argumentos em tempo de execução.

4.1.10 Se o arquivo de configuração kubelet config.yaml estiver sendo usado, valide se a propriedade do arquivo está definida como root:root (Automatizado)

Resultado: Não Aplicável

Racional: O kubelet é gerenciado pelo processo RKE2. Não há arquivo de configuração do kubelet, toda a configuração é passada como argumentos em tempo de execução.

4.2 Kubelet

4.2.1 Certifique-se de que o argumento --anonymous-auth esteja definido como false (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--anonymous-auth' é igual a 'false'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 define o --anonymous-auth como false. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova quaisquer linhas semelhantes às abaixo.

kubelet-arg: - "anonymous-auth=true"

Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service

4.2.2 Certifique-se de que o argumento --authorization-mode não esteja definido como AlwaysAllow (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--authorization-mode' não possui 'AlwaysAllow'

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 não define o --authorization-mode como AlwaysAllow. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova quaisquer linhas semelhantes às abaixo.

kubelet-arg: - "authorization-mode=AlwaysAllow"

Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service.

4.2.3 Certifique-se de que o argumento --client-ca-file esteja configurado de forma adequada (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--client-ca-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 fornece automaticamente o certificado CA do cliente para o Kubelet. Ele é gerado e localizado em /var/lib/rancher/rke2/agent/client-ca.crt

4.2.4 Verifique se o argumento --read-only-port está definido como 0 (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--read-only-port' é igual a '0' OU '--read-only-port' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 define o --read-only-port como 0. Se você definiu isso como um valor diferente, deve configurá-lo de volta para 0. Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova quaisquer linhas semelhantes às abaixo.

kubelet-arg: - "read-only-port=XXXX"

Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service.

4.2.5 Assegure-se de que o argumento --streaming-connection-idle-timeout não esteja definido como 0 (Manual)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--streaming-connection-idle-timeout' está presente OU '--streaming-connection-idle-timeout' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, defina o seguinte parâmetro para um valor apropriado.

kubelet-arg: - "streaming-connection-idle-timeout=5m"

Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service.

4.2.6 Assegure-se de que o argumento --make-iptables-util-chains esteja definido como true (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--make-iptables-util-chains' está presente OU '--make-iptables-util-chains' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, defina o seguinte parâmetro.

kubelet-arg: - "make-iptables-util-chains=true"

Ou, remova o argumento --make-iptables-util-chains para permitir que o RKE2 use o valor padrão. Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service.

4.2.7 Certifique-se de que o argumento --hostname-override não esteja definido (Automatizado)

Resultado: Não Aplicável

Racional: Por padrão, o RKE2 define o argumento --hostname-override. De acordo com as diretrizes do CIS, isso é para cumprir com provedores de nuvem que exigem essa flag para garantir que o hostname corresponda aos nomes dos nós.

4.2.8 Certifique-se de que o argumento eventRecordQPS esteja definido em um nível que garanta a captura adequada de eventos (Manual)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--event-qps' está presente OU '--event-qps' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, defina o seguinte parâmetro para um valor apropriado.

kubelet-arg: - "event-qps=+++<value>+++"

Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service.

4.2.9 Certifique-se de que os argumentos --tls-cert-file e --tls-private-key-file estejam definidos conforme apropriado (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--tls-cert-file' está presente E '--tls-private-key-file' está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 fornece automaticamente o certificado TLS e a chave privada para o Kubelet. Eles são gerados e localizados em /var/lib/rancher/rke2/agent/serving-kubelet.crt e /var/lib/rancher/rke2/agent/serving-kubelet.key Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml e remova quaisquer linhas semelhantes às abaixo.

kubelet-arg: - "tls-cert-file=<path/to/tls-cert-file>" - "tls-private-key-file=<path/to/tls-private-key-file>"

4.2.10 Certifique-se de que o argumento --rotate-certificates não esteja definido como falso (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: '--rotate-certificates' está presente OU '--rotate-certificates' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 não define o argumento --rotate-certificates. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova qualquer parâmetro rotate-certificates. Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service

4.2.11 Verifique se o argumento RotateKubeletServerCertificate está definido como verdadeiro (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kubelet

Resultado Esperado: 'RotateKubeletServerCertificate' está presente OU 'RotateKubeletServerCertificate' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2592 2508 2 18:32 ? 00:00:41 kubelet --volume-plugin-dir=/var/lib/kubelet/volumeplugins --file-check-frequency=5s --sync-frequency=30s --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/rke2/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubelet.kubeconfig --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=index.docker.io/rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/rke2/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/rke2/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/rke2/agent/serving-kubelet.key
Remediação:

Por padrão, o RKE2 não define a feature gate RotateKubeletServerCertificate. Se essa verificação falhar, edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, remova qualquer parâmetro RotateKubeletServerCertificate. Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service

4.2.12 Certifique-se de que o Kubelet utilize apenas Cifras Criptográficas Fortes (Manual)

Resultado: AVISO

Remediação: Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml,

kubelet-arg: - "tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"

ou como um subconjunto desses valores. Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service

4.2.13 Certifique-se de que um limite esteja definido para os PIDs dos pods (Manual)

Resultado: AVISO

Remediação: Edite o arquivo de configuração do RKE2 /etc/rancher/rke2/config.yaml, defina o seguinte parâmetro para um valor apropriado.

kubelet-arg: - "pod-max-pids=+++<value>+++"

Com base no seu sistema, reinicie o serviço RKE2. Por exemplo, systemctl restart rke2-server.service

4.3 kube-proxy

4.3.1 Certifique-se de que o serviço de métricas do kube-proxy esteja vinculado ao host local (Automatizado)

Resultado: PASS

Auditoria

/bin/ps -fC kube-proxy

Resultado Esperado: '--metrics-bind-address' está presente OU '--metrics-bind-address' não está presente

Valor retornado:
UID PID PPID C STIME TTY TIME CMD root 2730 2644 0 18:32 ? 00:00:01 kube-proxy --cluster-cidr=10.42.0.0/16 --conntrack-max-per-core=0 --conntrack-tcp-timeout-close-wait=0s --conntrack-tcp-timeout-established=0s --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/rke2/agent/kubeproxy.kubeconfig --proxy-mode=iptables
Remediação:

Modifique ou remova quaisquer valores que vinculem o serviço de métricas a um endereço que não seja host local. O valor padrão é 127.0.0.1:10249.

5 Políticas do Kubernetes

5.1 RBAC e Contas de Serviço

5.1.1 Certifique-se de que o papel de cluster-admin seja usado apenas onde necessário (Automatizado)

Resultado: PASS

Auditoria

kubectl get clusterrolebindings -o=custom-columns=ROLE:.roleRef.name,NAME:.metadata.name,SUBJECT:.subjects[*].name --no-headers | grep cluster-admin

Resultado Esperado: 'cluster-admin' corresponde à expressão regex 'cluster-admin|helm-kube-system-rke2-.*'

Valor retornado:
cluster-admin cluster-admin system:masters cluster-admin helm-kube-system-rke2-canal helm-rke2-canal cluster-admin helm-kube-system-rke2-coredns helm-rke2-coredns cluster-admin helm-kube-system-rke2-ingress-nginx helm-rke2-ingress-nginx cluster-admin helm-kube-system-rke2-metrics-server helm-rke2-metrics-server cluster-admin helm-kube-system-rke2-snapshot-controller helm-rke2-snapshot-controller cluster-admin helm-kube-system-rke2-snapshot-controller-crd helm-rke2-snapshot-controller-crd cluster-admin helm-kube-system-rke2-snapshot-validation-webhook helm-rke2-snapshot-validation-webhook
Remediação:

Identifique todos os clusterrolebindings para o papel de cluster-admin. Verifique se eles estão sendo usados e se precisam desse papel ou se poderiam usar um papel com menos privilégios. O RKE2 concede exceções aos clusterrolebindings helm-kube-system-rke2-*, que gerenciam a instalação de todos os componentes gerenciados pelo RKE2. Sempre que possível, primeiro vincule usuários a um papel de menor privilégio e depois remova o clusterrolebinding para o papel de cluster-admin:

kubectl delete clusterrolebinding [name]

5.1.2 Minimize o acesso a segredos (Automatizado)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso de obter, listar e observar objetos Secret no cluster.

5.1.3 Minimize o uso de curingas em Roles e ClusterRoles (Automatizado)

Resultado: PASS

Auditoria

# Check Roles kubectl get roles --all-namespaces -o custom-columns=ROLE_NAMESPACE:.metadata.namespace,ROLE_NAME:.metadata.name --no-headers | while read -r role_namespace role_name do role_rules=$(kubectl get role -n "$\{role_namespace}" "$\{role_name}" -o=json | jq -c '.rules') if echo "$\{role_rules}" | grep -q "\[\"\*\"\]"; then printf "**role_name: %-50s role_namespace: %-25s role_rules: %s is_compliant: false\n" "$\{role_name}" "$\{role_namespace}" "$\{role_rules}" else printf "**role_name: %-50s role_namespace: %-25s is_compliant: true\n" "$\{role_name}" "$\{role_namespace}" fi; done cr_whitelist="cluster-admin rke2-cloud-controller-manager local-path-provisioner-role" cr_whitelist="$cr_whitelist system:kube-controller-manager system:kubelet-api-admin system:controller:namespace-controller" cr_whitelist="$cr_whitelist system:controller:disruption-controller system:controller:generic-garbage-collector" cr_whitelist="$cr_whitelist system:controller:horizontal-pod-autoscaler system:controller:resourcequota-controller" # Check ClusterRoles kubectl get clusterroles -o custom-columns=CLUSTERROLE_NAME:.metadata.name --no-headers | while read -r clusterrole_name do clusterrole_rules=$(kubectl get clusterrole "$\{clusterrole_name}" -o=json | jq -c '.rules') if echo "$\{cr_whitelist}" | grep -q "$\{clusterrole_name}"; then printf "**clusterrole_name: %-50s is_whitelist: true is_compliant: true\n" "$\{clusterrole_name}" elif echo "$\{clusterrole_rules}" | grep -q "\[\"\*\"\]"; then echo "**clusterrole_name: $\{clusterrole_name} clusterrole_rules: $\{clusterrole_rules} is_compliant: false" else printf "**clusterrole_name: %-50s is_whitelist: false is_compliant: true\n" "$\{clusterrole_name}" fi; done

Resultado Esperado: 'is_compliant' é igual a 'true'

Valor retornado:
**role_name: system:controller:bootstrap-signer role_namespace: kube-public is_compliant: true **role_name: extension-apiserver-authentication-reader role_namespace: kube-system is_compliant: true **role_name: rke2-ingress-nginx role_namespace: kube-system is_compliant: true **role_name: rke2-snapshot-controller role_namespace: kube-system is_compliant: true **role_name: system::leader-locking-kube-controller-manager role_namespace: kube-system is_compliant: true **role_name: system::leader-locking-kube-scheduler role_namespace: kube-system is_compliant: true **role_name: system:controller:bootstrap-signer role_namespace: kube-system is_compliant: true **role_name: system:controller:cloud-provider role_namespace: kube-system is_compliant: true **role_name: system:controller:token-cleaner role_namespace: kube-system is_compliant: true **clusterrole_name: admin is_whitelist: true is_compliant: true **clusterrole_name: calico-node is_whitelist: false is_compliant: true **clusterrole_name: cluster-admin is_whitelist: true is_compliant: true **clusterrole_name: edit is_whitelist: false is_compliant: true **clusterrole_name: flannel is_whitelist: false is_compliant: true **clusterrole_name: rke2-cloud-controller-manager is_whitelist: true is_compliant: true **clusterrole_name: rke2-coredns-rke2-coredns is_whitelist: false is_compliant: true **clusterrole_name: rke2-coredns-rke2-coredns-autoscaler is_whitelist: false is_compliant: true **clusterrole_name: rke2-ingress-nginx is_whitelist: false is_compliant: true **clusterrole_name: rke2-snapshot-controller is_whitelist: false is_compliant: true **clusterrole_name: rke2-snapshot-validation-webhook is_whitelist: false is_compliant: true **clusterrole_name: system:aggregate-to-admin is_whitelist: false is_compliant: true **clusterrole_name: system:aggregate-to-edit is_whitelist: false is_compliant: true **clusterrole_name: system:aggregate-to-view is_whitelist: false is_compliant: true **clusterrole_name: system:auth-delegator is_whitelist: false is_compliant: true **clusterrole_name: system:basic-user is_whitelist: false is_compliant: true **clusterrole_name: system:certificates.k8s.io:certificatesigningrequests:nodeclient is_whitelist: false is_compliant: true **clusterrole_name: system:certificates.k8s.io:certificatesigningrequests:selfnodeclient is_whitelist: false is_compliant: true **clusterrole_name: system:certificates.k8s.io:kube-apiserver-client-approver is_whitelist: false is_compliant: true **clusterrole_name: system:certificates.k8s.io:kube-apiserver-client-kubelet-approver is_whitelist: false is_compliant: true **clusterrole_name: system:certificates.k8s.io:kubelet-serving-approver is_whitelist: false is_compliant: true **clusterrole_name: system:certificates.k8s.io:legacy-unknown-approver is_whitelist: false is_compliant: true **clusterrole_name: system:controller:attachdetach-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:certificate-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:clusterrole-aggregation-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:cronjob-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:daemon-set-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:deployment-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:disruption-controller is_whitelist: true is_compliant: true **clusterrole_name: system:controller:endpoint-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:endpointslice-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:endpointslicemirroring-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:ephemeral-volume-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:expand-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:generic-garbage-collector is_whitelist: true is_compliant: true **clusterrole_name: system:controller:horizontal-pod-autoscaler is_whitelist: true is_compliant: true **clusterrole_name: system:controller:job-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:namespace-controller is_whitelist: true is_compliant: true **clusterrole_name: system:controller:node-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:persistent-volume-binder is_whitelist: false is_compliant: true **clusterrole_name: system:controller:pod-garbage-collector is_whitelist: false is_compliant: true **clusterrole_name: system:controller:pv-protection-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:pvc-protection-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:replicaset-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:replication-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:resourcequota-controller is_whitelist: true is_compliant: true **clusterrole_name: system:controller:root-ca-cert-publisher is_whitelist: false is_compliant: true **clusterrole_name: system:controller:route-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:service-account-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:service-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:statefulset-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:ttl-after-finished-controller is_whitelist: false is_compliant: true **clusterrole_name: system:controller:ttl-controller is_whitelist: false is_compliant: true **clusterrole_name: system:discovery is_whitelist: false is_compliant: true **clusterrole_name: system:heapster is_whitelist: false is_compliant: true **clusterrole_name: system:kube-aggregator is_whitelist: false is_compliant: true **clusterrole_name: system:kube-controller-manager is_whitelist: true is_compliant: true **clusterrole_name: system:kube-dns is_whitelist: false is_compliant: true **clusterrole_name: system:kube-proxy is_whitelist: false is_compliant: true **clusterrole_name: system:kube-scheduler is_whitelist: false is_compliant: true **clusterrole_name: system:kubelet-api-admin is_whitelist: true is_compliant: true **clusterrole_name: system:monitoring is_whitelist: false is_compliant: true **clusterrole_name: system:node is_whitelist: false is_compliant: true **clusterrole_name: system:node-bootstrapper is_whitelist: false is_compliant: true **clusterrole_name: system:node-problem-detector is_whitelist: false is_compliant: true **clusterrole_name: system:node-proxier is_whitelist: false is_compliant: true **clusterrole_name: system:persistent-volume-provisioner is_whitelist: false is_compliant: true **clusterrole_name: system:public-info-viewer is_whitelist: false is_compliant: true **clusterrole_name: system:rke2-controller is_whitelist: false is_compliant: true **clusterrole_name: system:rke2-metrics-server is_whitelist: false is_compliant: true **clusterrole_name: system:rke2-metrics-server-aggregated-reader is_whitelist: false is_compliant: true **clusterrole_name: system:service-account-issuer-discovery is_whitelist: false is_compliant: true **clusterrole_name: system:volume-scheduler is_whitelist: false is_compliant: true **clusterrole_name: view is_whitelist: false is_compliant: true
Remediação:

Sempre que possível, substitua qualquer uso de curingas em clusterroles e roles por objetos ou ações específicas. O RKE2 concede exceções aos seguintes cluster roles, que são necessários para operações regulares: - rke2-cloud-controller-manager, local-path-provisioner-role, cluster-admin - system:kube-controller-manager, system:kubelet-api-admin, system:controller:namespace-controller, - system:controller:disruption-controller, system:controller:generic-garbage-collector, - system:controller:horizontal-pod-autoscaler, system:controller:resourcequota-controller

5.1.4 Minimize o acesso para criar pods (Automatizado)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso de criação a objetos pod no cluster.

5.1.5 Garanta que contas de serviço padrão não estejam sendo usadas ativamente. (Automatizado)

Resultado: PASS

Auditoria

kubectl get serviceaccounts --all-namespaces --field-selector metadata.name=default \ -o custom-columns=N:.metadata.namespace,SA:.metadata.name,ASA:.automountServiceAccountToken --no-headers \ | while read -r namespace serviceaccount automountserviceaccounttoken do if [ "$\{automountserviceaccounttoken}" = "+++<none>+++" ]; then automountserviceaccounttoken="notset" fi if [ "$\{namespace}" != "kube-system" ] && [ "$\{automountserviceaccounttoken}" != "false" ]; then printf "**namespace: %-20s service_account: %-10s automountServiceAccountToken: %-6s is_compliant: false\n" "$\{namespace}" "$\{serviceaccount}" "$\{automountserviceaccounttoken}" else printf "**namespace: %-20s service_account: %-10s automountServiceAccountToken: %-6s is_compliant: true\n" "$\{namespace}" "$\{serviceaccount}" "$\{automountserviceaccounttoken}" fi done

Resultado Esperado: 'is_compliant' é igual a 'true'

Valor retornado:
**namespace: default service_account: default automountServiceAccountToken: false is_compliant: true **namespace: kube-node-lease service_account: default automountServiceAccountToken: false is_compliant: true **namespace: kube-public service_account: default automountServiceAccountToken: false is_compliant: true **namespace: kube-system service_account: default automountServiceAccountToken: false is_compliant: true
Remediação:

Crie contas de serviço explícitas sempre que uma carga de trabalho do Kubernetes exigir acesso específico ao servidor da API do Kubernetes. Modifique a configuração de cada conta de serviço padrão para incluir este valor automountServiceAccountToken: false Ou usando kubectl:

kubectl patch serviceaccount --namespace <NAMESPACE> default --patch '{"automountServiceAccountToken": false}'

5.1.6 Garanta que os Tokens de Conta de Serviço sejam montados apenas onde necessário (Automatizado)

Resultado: PASS

Auditoria

kubectl get pods --all-namespaces -o custom-columns=POD_NAMESPACE:.metadata.namespace,POD_NAME:.metadata.name,POD_SERVICE_ACCOUNT:.spec.serviceAccount,POD_IS_AUTOMOUNTSERVICEACCOUNTTOKEN:.spec.automountServiceAccountToken --no-headers | while read -r pod_namespace pod_name pod_service_account pod_is_automountserviceaccounttoken do # Skip pods with no service account if [ "$\{pod_service_account}" = "+++<none>+++" ]; then continue fi # Retrieve automountServiceAccountToken's value for ServiceAccount and Pod, set to notset if null or +++<none>+++. svacc_is_automountserviceaccounttoken=$(kubectl get serviceaccount -n "$\{pod_namespace}" "$\{pod_service_account}" -o json | jq -r '.automountServiceAccountToken' | sed -e 's/+++<none>+++/notset/g' -e 's/null/notset/g') pod_is_automountserviceaccounttoken=$(echo "$\{pod_is_automountserviceaccounttoken}" | sed -e 's/+++<none>+++/notset/g' -e 's/null/notset/g') if [ "$\{svacc_is_automountserviceaccounttoken}" = "false" ] && ( [ "$\{pod_is_automountserviceaccounttoken}" = "false" ] || [ "$\{pod_is_automountserviceaccounttoken}" = "notset" ] ); then is_compliant="true" elif [ "$\{svacc_is_automountserviceaccounttoken}" = "true" ] && [ "$\{pod_is_automountserviceaccounttoken}" = "false" ]; then is_compliant="true" else is_compliant="false" fi # Whitelist kube-system namespace as these pods are expected to contact the apiserver if [ "$\{pod_namespace}" = "kube-system" ]; then is_compliant="true" fi echo "**namespace: $\{pod_namespace} pod_name: $\{pod_name} service_account: $\{pod_service_account} pod_is_automountserviceaccounttoken: $\{pod_is_automountserviceaccounttoken} svacc_is_automountServiceAccountToken: $\{svacc_is_automountserviceaccounttoken} is_compliant: $\{is_compliant}" done

Resultado Esperado: 'is_compliant' é igual a 'true'

Valor retornado:
**namespace: kube-system pod_name: helm-install-rke2-canal-sf57z service_account: helm-rke2-canal pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-coredns-sc5xz service_account: helm-rke2-coredns pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-ingress-nginx-khgxr service_account: helm-rke2-ingress-nginx pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-metrics-server-s7drs service_account: helm-rke2-metrics-server pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-snapshot-controller-crd-vdm6s service_account: helm-rke2-snapshot-controller-crd pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-snapshot-controller-f9mkz service_account: helm-rke2-snapshot-controller pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: helm-install-rke2-snapshot-validation-webhook-66gdl service_account: helm-rke2-snapshot-validation-webhook pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: rke2-canal-cv8xl service_account: canal pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-coredns-rke2-coredns-864fbd7785-tlfwz service_account: coredns pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-coredns-rke2-coredns-autoscaler-6c87968579-k2kf8 service_account: rke2-coredns-rke2-coredns-autoscaler pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-ingress-nginx-controller-4mq9l service_account: rke2-ingress-nginx pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: true is_compliant: true **namespace: kube-system pod_name: rke2-metrics-server-7f745dbddf-96zw8 service_account: rke2-metrics-server pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-snapshot-controller-7d6476d7cb-trhbn service_account: rke2-snapshot-controller pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true **namespace: kube-system pod_name: rke2-snapshot-validation-webhook-5649fbd66c-zrkf5 service_account: rke2-snapshot-validation-webhook pod_is_automountserviceaccounttoken: notset svacc_is_automountServiceAccountToken: notset is_compliant: true
Remediação:

Modifique a definição de ServiceAccounts e Pods que não precisam montar tokens de conta de serviço para desativá-los, com automountServiceAccountToken: false. O RKE2 dá exceções para as ServiceAccounts no namespace kube-system, pois estas devem contatar o apiserver. Quando em modo cis, o RKE2 desabilita o automountServiceAccountToken para os namespaces: - kube-public, default, kube-node-lease Se tanto a ServiceAccount quanto o .spec do Pod especificarem um valor para automountServiceAccountToken, o especificado do Pod tem precedência. Condição: O Pod é considerado compatível quando: (1) a ServiceAccount possui automountServiceAccountToken igual a false e o Pod possui automountServiceAccountToken igual a false ou não definido; ou (2) a ServiceAccount possui automountServiceAccountToken igual a true ou não definido e o Pod possui automountServiceAccountToken igual a false.

5.1.7 Evite o uso do grupo system:masters (Manual)

Resultado: AVISO

Remediação: Remova o grupo system:masters de todos os usuários no cluster.

5.1.8 Limite o uso das permissões Bind, Impersonate e Escalate no cluster Kubernetes (Manual)

Resultado: AVISO

Remediação: Sempre que possível, remova os direitos de impersonate, bind e escalate dos sujeitos.

5.1.9 Minimize o acesso para criar volumes persistentes (Manual)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso de criação a objetos PersistentVolume no cluster.

5.1.10 Minimize o acesso ao sub-recurso proxy de nós (Manual)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso ao sub-recurso proxy de objetos de nó.

5.1.11 Minimize o acesso ao sub-recurso de aprovação de objetos certificatesigningrequests (Manual)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso ao sub-recurso de aprovação de objetos certificatesigningrequest.

5.1.12 Minimize o acesso a objetos de configuração de webhook (Manual)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso aos objetos validatingwebhookconfigurations ou mutatingwebhookconfigurations

5.1.13 Minimize o acesso à criação de tokens de conta de serviço (Manual)

Resultado: AVISO

Remediação: Sempre que possível, remova o acesso ao sub-recurso de token de objetos de serviceaccount.

5.2 Padrões de Segurança de Pod

5.2.1 Assegure-se de que o cluster tenha pelo menos um mecanismo de controle de política ativo (Manual)

Resultado: AVISO

Remediação: Assegure-se de que haja um sistema de controle de políticas, seja o Pod Security Admission ou um sistema externo, em cada namespace que contém cargas de trabalho de usuários.

5.2.2 Minimize a admissão de contêineres privilegiados (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres privilegiados.

5.2.3 Minimize a admissão de contêineres que desejam compartilhar o namespace do ID do processo do host (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres hostPID.

5.2.4 Minimize a admissão de contêineres que desejam compartilhar o namespace IPC do host (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres hostIPC.

5.2.5 Minimize a admissão de contêineres que desejam compartilhar o namespace de rede do host (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres hostNetwork.

5.2.6 Minimize a admissão de contêineres com allowPrivilegeEscalation (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres com .spec.allowPrivilegeEscalation definido como true.

5.2.7 Minimize a admissão de contêineres root (Manual)

Resultado: AVISO

Remediação: Crie uma política para cada namespace no cluster, garantindo que MustRunAsNonRoot ou MustRunAs com a faixa de UIDs não incluindo 0, esteja definido.

5.2.8 Minimize a admissão de contêineres com a capacidade NET_RAW (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres com a capacidade NET_RAW.

5.2.9 Minimize a admissão de contêineres com capacidades adicionais (Manual)

Resultado: AVISO

Remediação: Assegure-se de que allowedCapabilities não esteja presente nas políticas do cluster, a menos que esteja definido como um array vazio.

5.2.10 Minimize a admissão de contêineres com capacidades atribuídas (Manual)

Resultado: AVISO

Remediação: Revise o uso de capacidades em aplicativos que estão rodando em seu cluster. Quando um namespace contém aplicativos que não requerem nenhuma capacidade do Linux para operar, considere adicionar um PSP que proíba a admissão de contêineres que não descartem todas as capacidades.

5.2.11 Minimize a admissão de contêineres Windows HostProcess (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres que têm .securityContext.windowsOptions.hostProcess definido como true.

5.2.12 Minimize a admissão de volumes HostPath (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster que possui cargas de trabalho de usuários para restringir a admissão de contêineres com hostPath volumes.

5.2.13 Minimize a admissão de contêineres que utilizam HostPorts (Manual)

Resultado: AVISO

Remediação: Adicione políticas a cada namespace no cluster com cargas de trabalho de usuários para restringir a admissão de contêineres que usam seções hostPort.

5.3 Políticas de Rede e CNI

5.3.1 Garanta que o CNI em uso suporte NetworkPolicies (Manual)

Resultado: AVISO

Remediação: Se o plugin CNI em uso não suportar políticas de rede, deve-se considerar a utilização de um plugin diferente ou encontrar um mecanismo alternativo para restringir o tráfego no cluster Kubernetes.

5.3.2 Assegure-se de que todos os Namespaces tenham NetworkPolicies definidas (Manual)

Resultado: AVISO

Remediação: Siga a documentação e crie objetos NetworkPolicy conforme necessário.

5.4 Gerenciamento de Segredos

5.4.1 Prefira usar Segredos como arquivos em vez de Segredos como variáveis de ambiente (Manual)

Resultado: AVISO

Remediação: Se possível, reescreva o código do aplicativo para ler segredos de arquivos secretos montados, em vez de variáveis de ambiente.

5.4.2 Considere o armazenamento externo de segredos (Manual)

Resultado: AVISO

Remediação: Consulte as opções de gerenciamento de segredos oferecidas pelo seu provedor de nuvem ou por uma solução de gerenciamento de segredos de terceiros.

5.5 Controle de Admissão Extensível

5.5.1 Configure a Proveniência da Imagem usando o controlador de admissão ImagePolicyWebhook (Manual)

Resultado: AVISO

Remediação: Siga a documentação do Kubernetes e configure a proveniência da imagem.

5.7 Políticas Gerais

5.7.1 Crie limites administrativos entre recursos usando namespaces (Manual)

Resultado: AVISO

Remediação: Siga a documentação e crie namespaces para objetos em sua implantação conforme necessário.

5.7.2 Certifique-se de que o perfil seccomp esteja definido como docker/default nas definições do seu Pod (Manual)

Resultado: AVISO

Remediação: Use securityContext para habilitar o perfil seccomp docker/default nas definições do seu Pod. Um exemplo é o seguinte: securityContext: seccompProfile: type: RuntimeDefault

5.7.3 Aplique SecurityContext aos seus Pods e Contêineres (Manual)

Resultado: AVISO

Remediação: Siga a documentação do Kubernetes e aplique SecurityContexts aos seus Pods. Para uma lista sugerida de SecurityContexts, você pode consultar o CIS Security Benchmark para Contêineres Docker.

5.7.4 O namespace padrão não deve ser utilizado (Manual)

Resultado: AVISO

Remediação: Certifique-se de que namespaces sejam criados para permitir a segregação apropriada dos recursos do Kubernetes e que todos os novos recursos sejam criados em um namespace específico.