CIS 1.9 Guide d’auto-évaluation
Présentation
Ce document est un complément au guide de renforcement de la sécurité RKE2. Le guide de renforcement de la sécurité fournit des conseils prescriptifs pour renforcer une installation de production de RKE2, et ce guide de référence est destiné à vous aider à évaluer le niveau de sécurité du cluster renforcé par rapport à chaque contrôle du CIS Kubernetes Benchmark. Il est destiné aux opérateurs de RKE2, aux équipes de sécurité, aux auditeurs et aux décideurs.
Ce guide est spécifique à la ligne de version v1.27-1.32 de RKE2 et à la version v1.9 du CIS Kubernetes Benchmark.
Pour plus d’informations sur chaque contrôle, y compris des justifications détaillées et des descriptions des vérifications, vous pouvez vous référer à la section correspondante du CIS Kubernetes Benchmark v1.8. Vous pouvez télécharger le benchmark, après avoir créé un compte gratuit, dans Centre pour la sécurité Internet (CIS).
Méthodologie de test des contrôles
Chaque contrôle du CIS Kubernetes Benchmark a été évalué par rapport à un cluster RKE2 configuré selon le guide de renforcement de la sécurité qui l’accompagne.
Voici les résultats possibles pour chaque contrôle :
-
RÉUSSITE - Le contrôle est automatisé (score : vrai). Le cluster RKE2 testé a réussi l’audit décrit dans le benchmark.
-
Non applicable - Le contrôle n’est pas applicable (type : ignorer) à RKE2 en raison de la manière dont il est conçu pour fonctionner. La section de justification expliquera pourquoi cela est le cas.
-
AVERTISSEMENT - Le contrôle est manuel (score : faux) dans le benchmark CIS et dépend de l’intervention manuelle de l’opérateur. La section de remédiation fournira des conseils sur la manière d’obtenir un résultat de RÉUSSITE.
1 Configuration de la sécurité du plan de contrôle
1.1 Fichiers de configuration du nœud du plan de contrôle
1.1.1 Assurez-vous que les permissions du fichier de spécification du pod du serveur API sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
stat -c permissions=%a /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml
1.1.2 Assurez-vous que la propriété du fichier de spécification du pod du serveur API est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-apiserver.yaml
1.1.3 Assurez-vous que les permissions du fichier de spécification du pod du gestionnaire de contrôleur sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml
1.1.4 Assurez-vous que la propriété du fichier de spécification du pod du gestionnaire de contrôleur est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-controller-manager.yaml
1.1.5 Assurez-vous que les permissions du fichier de spécification du pod du planificateur sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml
1.1.6 Assurez-vous que la propriété du fichier de spécification du pod du planificateur est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : 'root:root' est présent
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/kube-scheduler.yaml
1.1.7 Assurez-vous que les permissions du fichier de spécification du pod etcd sont définies sur 600 ou plus restrictives (Manuel)
Résultat : PASS
Audit :
/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'
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Si vous exécutez uniquement le maître sans rôle etcd, cette vérification n’est pas applicable. Si les rôles de plan de contrôle et etcd sont présents sur les mêmes nœuds mais que cette vérification est un avertissement, exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud du plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml
1.1.8 Assurez-vous que la propriété du fichier de spécification du pod etcd est définie sur root:root (Manuel)
Résultat : PASS
Audit :
/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'
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Si vous exécutez uniquement le maître sans rôle etcd, cette vérification n’est pas applicable. Si les rôles de plan de contrôle et etcd sont présents sur les mêmes nœuds mais que cette vérification est un avertissement, exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud du plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/agent/pod-manifests/etcd.yaml
1.1.9 Assurez-vous que les permissions du fichier CNI sont définies sur 600 ou plus restrictives (Manuel)
Résultat : WARN
Correction:
Notez que pour de nombreux CNI, un fichier de verrouillage est créé avec des permissions 750. C’est attendu et peut être ignoré.
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle.
Par exemple, chmod 600 /var/lib/cni/networks/<filename> and chmod 600 /etc/cni/net.d/<filename>
1.1.10 Assurez-vous que la propriété du fichier de l’interface réseau de conteneur est définie sur root:root (Manuel)
Résultat : PASS
Audit :
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
Résultat attendu : 'root:root' est présent
Valeur retournée :
root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root <path/to/cni/files>
1.1.11 Assurez-vous que les permissions du répertoire de données etcd sont définies à 700 ou plus restrictives (Manuel)
Résultat : PASS
Audit :
stat -c permissions=%a /var/lib/rancher/rke2/server/db/etcd
Résultat attendu : les permissions sont 700, attendu 700 ou plus restrictives
Valeur retournée :
permissions=700
Correction:
Si vous exécutez uniquement le maître sans rôle etcd, cette vérification n’est pas applicable. Si les rôles de plan de contrôle et etcd sont présents sur les mêmes nœuds mais que cette vérification est un avertissement, alors sur le nœud serveur etcd, obtenez le répertoire de données etcd, passé comme argument --data-dir, à partir de la commande 'ps -ef | grep etcd'. Exécutez la commande ci-dessous (en fonction du répertoire de données etcd trouvé ci-dessus). Par exemple, chmod 700 /var/lib/rancher/rke2/server/db/etcd
1.1.12 Assurez-vous que la propriété du répertoire de données etcd est définie sur etcd:etcd (Manuel)
Résultat : PASS
Audit :
stat -c %U:%G /var/lib/rancher/rke2/server/db/etcd
Résultat attendu : 'etcd:etcd' est présent
Valeur retournée :
etcd:etcd
Correction:
Si vous exécutez uniquement le maître sans rôle etcd, cette vérification n’est pas applicable. Si les rôles de plan de contrôle et etcd sont présents sur les mêmes nœuds mais que cette vérification est un avertissement, alors sur le nœud serveur etcd, obtenez le répertoire de données etcd, passé comme argument --data-dir, à partir de la commande 'ps -ef | grep etcd'. Exécutez la commande ci-dessous (en fonction du répertoire de données etcd trouvé ci-dessus). Par exemple, chown etcd:etcd /var/lib/rancher/rke2/server/db/etcd
1.1.13 Assurez-vous que les permissions du fichier admin.conf sont définies à 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
stat -c permissions=%a /var/lib/rancher/rke2/server/cred/admin.kubeconfig
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/server/cred/admin.kubeconfig
1.1.14 Assurez-vous que la propriété du fichier admin.conf est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
stat -c %U:%G /var/lib/rancher/rke2/server/cred/admin.kubeconfig
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/server/cred/admin.kubeconfig
1.1.15 Assurez-vous que les permissions du fichier scheduler.conf sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig
1.1.16 Assurez-vous que la propriété du fichier scheduler.conf est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
stat -c %U:%G /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/server/cred/scheduler.kubeconfig
1.1.17 Assurez-vous que les permissions du fichier controller-manager.conf sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod 600 /var/lib/rancher/rke2/server/cred/controller.kubeconfig
1.1.18 Assurez-vous que la propriété du fichier controller-manager.conf est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
stat -c %U:%G /var/lib/rancher/rke2/server/cred/controller.kubeconfig
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown root:root /var/lib/rancher/rke2/server/cred/controller.kubeconfig
1.1.19 Assurez-vous que la propriété du répertoire et des fichiers PKI de Kubernetes est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
stat -c %U:%G /var/lib/rancher/rke2/server/tls
Résultat attendu : 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chown -R root:root /var/lib/rancher/rke2/server/tls
1.1.20 Assurez-vous que les permissions du fichier de certificat PKI de Kubernetes sont définies sur 600 ou plus restrictif (Manuel)
Résultat : WARN
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle.
Par exemple, chmod -R 600 /var/lib/rancher/rke2/server/tls/*.crt.
1.1.21 Assurez-vous que les permissions du fichier de clé de l’infrastructure de clés publiques de Kubernetes sont définies sur 600 (Automatisé)
Résultat : PASS
Audit :
stat -c permissions=%a /var/lib/rancher/rke2/server/tls/*.key
Résultat attendu : les permissions sont définies sur 600 ou plus restrictives
Valeur retournée :
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
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur le nœud de plan de contrôle. Par exemple, chmod -R 600 /var/lib/rancher/rke2/server/tls/*.key
1.2 Serveur API
1.2.1 Assurez-vous que l’argument --anonymous-auth est défini sur false (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--anonymous-auth' est égal à 'false'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --anonymous-auth sur false. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez tout ce qui ressemble à ce qui suit.
kube-apiserver-arg: - "anonymous-auth=true"
1.2.2 Assurez-vous que le paramètre --token-auth-file n’est pas défini (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--token-auth-file' n’est pas présent
Valeur retournée :
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
Correction:
Suivez la documentation et configurez des mécanismes alternatifs pour l’authentification. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez tout ce qui ressemble à ce qui suit.
kube-apiserver-arg: - "token-auth-file=+++<path>+++"
1.2.3 Assurez-vous que --DenyServiceExternalIPs est défini (Manuel)
Résultat : WARN
Correction: Par défaut, RKE2 ne définit pas DenyServiceExternalIPs. Pour activer ce drapeau, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml comme ci-dessous.
kube-apiserver-arg: - "enable-admission-plugins=DenyServiceExternalIPs"
1.2.4 Assurez-vous que les arguments --kubelet-client-certificate et --kubelet-client-key sont définis de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--kubelet-client-certificate' est présent ET '--kubelet-client-key' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le certificat client kubelet et la clé. Ils sont générés et situés à /var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt et /var/lib/rancher/rke2/server/tls/client-kube-apiserver.key. Si pour une raison quelconque vous devez fournir votre propre certificat et clé, vous pouvez définir les paramètres ci-dessous dans le fichier de configuration 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 Assurez-vous que l’argument --kubelet-certificate-authority est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--kubelet-certificate-authority' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le fichier de certificat CA kubelet, à /var/lib/rancher/rke2/server/tls/server-ca.crt. Si pour une raison quelconque vous devez fournir votre propre certificat CA, envisagez d’utiliser l’outil de ligne de commande de certificats rke2. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "kubelet-certificate-authority=<path/to/ca-cert-file>"
1.2.6 Assurez-vous que l’argument --authorization-mode n’est pas défini sur AlwaysAllow (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--authorization-mode' n’a pas 'AlwaysAllow'
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas l'--authorization-mode sur AlwaysAllow. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "authorization-mode=AlwaysAllow"
1.2.7 Assurez-vous que l’argument --authorization-mode inclut Node (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--authorization-mode' a 'Node'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l'--authorization-mode sur Node et RBAC. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, assurez-vous que vous ne remplacez pas authorization-mode.
1.2.8 Assurez-vous que l’argument --authorization-mode inclut RBAC (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--authorization-mode' a 'RBAC'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l'--authorization-mode sur Node et RBAC. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, assurez-vous que vous ne remplacez pas authorization-mode.
1.2.9 Assurez-vous que le plugin de contrôle d’admission EventRateLimit est défini (Manuel)
Résultat : WARN
Correction: Suivez la documentation de Kubernetes et définissez les limites souhaitées dans un fichier de configuration. Ensuite, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et définissez les paramètres ci-dessous.
kube-apiserver-arg: - "enable-admission-plugins=\...,EventRateLimit,\..." - "admission-control-config-file=<path/to/configuration/file>"
1.2.10 Assurez-vous que le plugin de contrôle d’admission AlwaysAdmit n’est pas défini (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--enable-admission-plugins' n’a pas 'AlwaysAdmit' OU '--enable-admission-plugins' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le --enable-admission-plugins sur AlwaysAdmit. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "enable-admission-plugins=AlwaysAdmit"
1.2.11 Assurez-vous que le plugin de contrôle d’admission AlwaysPullImages est défini (Manuel)
Résultat : WARN
Correction: Permissif, selon les directives CIS, "Ce paramètre pourrait avoir un impact sur les clusters hors ligne ou isolés, qui ont des images préchargées et n’ont pas accès à un registre pour tirer des images en cours d’utilisation." Ce paramètre n’est pas approprié pour les clusters qui utilisent cette configuration." Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml sur le nœud de contrôle et définissez le paramètre --enable-admission-plugins pour inclure AlwaysPullImages. --enable-admission-plugins=...,AlwaysPullImages,...
1.2.12 Assurez-vous que le plugin de contrôle d’admission ServiceAccount est défini (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--disable-admission-plugins' est présent OU '--disable-admission-plugins' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le --disable-admission-plugins sur quoi que ce soit. Suivez la documentation et créez des objets ServiceAccount selon votre environnement. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "disable-admission-plugins=ServiceAccount"
1.2.13 Assurez-vous que le plugin de contrôle d’admission NamespaceLifecycle est défini (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--disable-admission-plugins' est présent OU '--disable-admission-plugins' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le --disable-admission-plugins sur quoi que ce soit. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "disable-admission-plugins=\...,NamespaceLifecycle,\..."
1.2.14 Assurez-vous que le plugin de contrôle d’admission NodeRestriction est défini (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--enable-admission-plugins' a 'NodeRestriction'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit le --enable-admission-plugins sur NodeRestriction. Vérifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et assurez-vous que vous ne remplacez pas les plugins d’admission. Si c’est le cas, incluez NodeRestriction dans la liste.
kube-apiserver-arg: - "enable-admission-plugins=\...,NodeRestriction,\..."
1.2.15 Assurez-vous que l’argument --profiling est défini sur false (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--profiling' est égal à 'false'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --profiling sur false. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "profiling=true"
1.2.16 Assurez-vous que l’argument --audit-log-path est défini (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--audit-log-path' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --audit-log-path sur /var/lib/rancher/rke2/server/logs/audit.log. Si vous souhaitez modifier cela, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml sur le nœud de contrôle et définissez le paramètre --audit-log-path sur un chemin et un fichier appropriés où vous souhaitez que les journaux d’audit soient écrits, par exemple,
kube-apiserver-arg: - "audit-log-path=/var/log/rke2/audit.log"
1.2.17 Assurez-vous que l’argument --audit-log-maxage est défini sur 30 ou selon ce qui est approprié (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--audit-log-maxage' est supérieur ou égal à 30
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --audit-log-maxage sur 30 jours. Si vous souhaitez modifier cela, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml sur le nœud de contrôle et définissez le paramètre --audit-log-maxage sur un nombre de jours approprié, par exemple,
kube-apiserver-arg: - "audit-log-maxage=40"
1.2.18 Assurez-vous que l’argument --audit-log-maxbackup est défini sur 10 ou selon ce qui est approprié (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--audit-log-maxbackup' est supérieur ou égal à 10
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --audit-log-maxbackup sur 10. Si vous souhaitez modifier cela, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml sur le nœud de contrôle et définissez le paramètre --audit-log-maxbackup sur une valeur appropriée. Exemples :
kube-apiserver-arg: - "audit-log-maxbackup=15"
1.2.19 Assurez-vous que l’argument --audit-log-maxsize est défini sur 100 ou selon ce qui est approprié (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--audit-log-maxsize' est supérieur ou égal à 100
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --audit-log-maxsize sur 100 Mo. Si vous souhaitez modifier cela, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml sur le nœud de contrôle et définissez le paramètre --audit-log-maxsize sur une taille appropriée en Mo. Exemples :
kube-apiserver-arg: - "audit-log-maxsize=150"
1.2.20 Assurez-vous que l’argument --request-timeout est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--request-timeout' n’est pas présent ou '--request-timeout' est présent
Valeur retournée :
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
Correction:
Permissif, selon les directives CIS, "il est recommandé de définir cette limite selon ce qui est approprié et de ne changer la limite par défaut de 60 secondes que si nécessaire". Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et définissez le paramètre ci-dessous si nécessaire. Exemples :
kube-apiserver-arg: - "request-timeout=300s"
1.2.21 Assurez-vous que l’argument --service-account-lookup est défini sur true (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--service-account-lookup' n’est pas présent OU '--service-account-lookup' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas l’argument --service-account-lookup. Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et définissez le service-account-lookup. Exemples :
kube-apiserver-arg: - "service-account-lookup=true"
Alternativement, vous pouvez supprimer le paramètre service-account-lookup de ce fichier afin que la valeur par défaut prenne effet.
1.2.22 Assurez-vous que l’argument --service-account-key-file est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--service-account-key-file' est présent
Valeur retournée :
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
Correction:
RKE2 génère automatiquement et définit le fichier de clé du compte de service. Il est situé à /var/lib/rancher/rke2/server/tls/service.key. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "service-account-key-file=+++<path>+++"
1.2.23 Assurez-vous que les arguments --etcd-certfile et --etcd-keyfile sont définis de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--etcd-certfile' est présent ET '--etcd-keyfile' est présent
Valeur retournée :
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
Correction:
RKE2 génère automatiquement et définit les fichiers de certificat et de clé etcd. Ils sont situés à /var/lib/rancher/rke2/server/tls/etcd/client.crt et /var/lib/rancher/rke2/server/tls/etcd/client.key. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "etcd-certfile=+++<path>+++" - "etcd-keyfile=+++<path>+++"
1.2.24 Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--tls-cert-file' est présent ET '--tls-private-key-file' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 génère automatiquement et fournit le certificat TLS et la clé privée pour l’apiserver. Ils sont générés et situés à /var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt et /var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "tls-cert-file=+++<path>+++" - "tls-private-key-file=+++<path>+++"
1.2.25 Assurez-vous que l’argument --client-ca-file est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--client-ca-file' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le fichier d’autorité de certification du client. Il est généré et situé à /var/lib/rancher/rke2/server/tls/client-ca.crt. Si, pour une raison quelconque, vous devez fournir votre propre certificat CA, envisagez d’utiliser l’outil de ligne de commande rke2 certificate. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "client-ca-file=+++<path>+++"
1.2.26 Assurez-vous que l’argument --etcd-cafile est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu: '--etcd-cafile' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le fichier d’autorité de certification etcd. Il est généré et situé à /var/lib/rancher/rke2/server/tls/client-ca.crt. Si, pour une raison quelconque, vous devez fournir votre propre certificat CA, envisagez d’utiliser l’outil de ligne de commande rke2 certificate. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-apiserver-arg: - "etcd-cafile=+++<path>+++"
1.2.27 Assurez-vous que l’argument --encryption-provider-config est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--encryption-provider-config' est présent
Valeur retournée :
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
Correction:
RKE2 est toujours configuré pour chiffrer les secrets. Le chiffrement des secrets est géré avec l’outil de ligne de commande rke2 secrets-encrypt. Si nécessaire, vous pouvez trouver la configuration de chiffrement générée à /var/lib/rancher/rke2/server/cred/encryption-config.json.
1.2.28 Assurez-vous que les fournisseurs de chiffrement sont configurés de manière appropriée (Automatisé)
Résultat : PASS
Audit :
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
Résultat attendu : 'provider' contient des éléments valides de 'aescbc,kms,secretbox'
Valeur retournée :
provider=aescbc
Correction:
RKE2 est toujours configuré pour utiliser le fournisseur de chiffrement aescbc pour chiffrer les secrets. Le chiffrement des secrets est géré avec l’outil de ligne de commande rke2 secrets-encrypt. Si nécessaire, vous pouvez trouver la configuration de chiffrement générée à /var/lib/rancher/rke2/server/cred/encryption-config.json.
1.2.29 Assurez-vous que le serveur API n’utilise que des chiffrements cryptographiques forts (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-apiserver
Résultat attendu : '--tls-cipher-suites' contient des éléments valides parmi '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'
Valeur retournée :
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
Correction:
Par défaut, le kube-apiserver RKE2 respecte ce test. Les modifications apportées à ces valeurs peuvent entraîner des régressions, assurez-vous donc que tous les clients apiserver prennent en charge la nouvelle configuration TLS avant de l’appliquer dans des déploiements en production. Si une configuration TLS personnalisée est requise, envisagez également de créer une version personnalisée de cette règle qui correspond à vos exigences. Si cette vérification échoue, supprimez toute configuration personnalisée autour de tls-cipher-suites ou mettez à jour le fichier /etc/rancher/rke2/config.yaml pour correspondre à la valeur par défaut en ajoutant ce qui suit : 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 Gestionnaire de contrôleur
1.3.1 Assurez-vous que l’argument --terminated-pod-gc-threshold est défini de manière appropriée (Manuel)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu : '--terminated-pod-gc-threshold' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit le terminated-pod-gc-threshold à 1000. Si vous devez modifier cette valeur, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml sur le nœud de contrôle et définissez le --terminated-pod-gc-threshold sur une valeur appropriée.
kube-controller-manager-arg: - "terminated-pod-gc-threshold=10"
1.3.2 Assurez-vous que l’argument --profilage est défini sur faux (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu: '--profiling' est égal à 'false'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --profiling sur false. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-controller-manager-arg: - "profiling=true"
1.3.3 Assurez-vous que l’argument --use-service-account-credentials est défini sur vrai (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu : '--use-service-account-credentials' n’est pas égal à 'false'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --use-service-account-credentials sur true. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-controller-manager-arg: - "use-service-account-credentials=false"
1.3.4 Assurez-vous que l’argument --service-account-private-key-file est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu : '--service-account-private-key-file' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le fichier de clé privée du compte de service. Il est généré et situé à /var/lib/rancher/rke2/server/tls/service.current.key. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-controller-manager-arg: - "service-account-private-key-file=+++<path>+++"
1.3.5 Assurez-vous que l’argument --root-ca-file est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu: '--root-ca-file' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le fichier CA racine. Il est généré et situé à /var/lib/rancher/rke2/server/tls/server-ca.crt. Si, pour une raison quelconque, vous devez fournir votre propre certificat CA, envisagez d’utiliser l’outil de ligne de commande de certificats rke2. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-controller-manager-arg: - "root-ca-file=+++<path>+++"
1.3.6 Assurez-vous que l’argument RotateKubeletServerCertificate est défini sur true (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu: '--feature-gates' est présent OU '--feature-gates' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le feature gate RotateKubeletServerCertificate. Si vous avez activé ce feature gate, vous devez le supprimer. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, supprimez toutes les lignes comme ci-dessous.
kube-controller-manager-arg: - "feature-gate=RotateKubeletServerCertificate"
1.3.7 Assurez-vous que l’argument --bind-address est défini sur 127.0.0.1 (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-controller-manager
Résultat attendu: '--bind-address' est égal à '127.0.0.1' OU '--bind-address' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --bind-address sur 127.0.0.1. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-controller-manager-arg: - "bind-address=+++<IP>+++"
1.4 Planificateur
1.4.1 Assurez-vous que l’argument --profiling est défini sur false (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-scheduler
Résultat attendu: '--profiling' est égal à 'false'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --profiling sur false. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-scheduler-arg: - "profiling=true"
1.4.2 Assurez-vous que l’argument --bind-address est défini sur 127.0.0.1 (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-scheduler
Résultat attendu: '--bind-address' est égal à '127.0.0.1' OU '--bind-address' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit l’argument --bind-address sur 127.0.0.1. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes comme ci-dessous.
kube-scheduler-arg: - "bind-address=+++<IP>+++"
2 Configuration du nœud Etcd
2 Configuration du nœud Etcd
2.1 Assurez-vous que les arguments --cert-file et --key-file sont définis de manière appropriée (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu: '.client-transport-security.cert-file' est égal à '/var/lib/rancher/rke2/server/tls/etcd/server-client.crt' ET '.client-transport-security.key-file' est égal à '/var/lib/rancher/rke2/server/tls/etcd/server-client.key'
Valeur retournée :
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
Correction:
Par défaut, RKE2 génère des fichiers de certificat et de clé pour etcd. Ils se trouvent dans /var/lib/rancher/rke2/server/tls/etcd/. Si cette vérification échoue, assurez-vous que le fichier de configuration /var/lib/rancher/rke2/server/db/etcd/config n’a pas été modifié pour utiliser des fichiers de certificat et de clé personnalisés.
2.2 Assurez-vous que l’argument --client-cert-auth est défini sur true (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu: 'ETCD_CLIENT_CERT_AUTH' est présent OU '.client-transport-security.client-cert-auth' est égal à 'true'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit le paramètre --client-cert-auth sur 'true'. Si cette vérification échoue, assurez-vous que le fichier de configuration /var/lib/rancher/rke2/server/db/etcd/config n’a pas été modifié pour désactiver l’authentification par certificat client.
2.3 Assurez-vous que l’argument --auto-tls n’est pas défini sur true (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu: 'ETCD_AUTO_TLS' n’est pas présent OU 'ETCD_AUTO_TLS' est présent OU '.client-transport-security.auto-tls' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le paramètre --auto-tls. Si cette vérification échoue, modifiez le fichier de spécification du pod etcd /var/lib/rancher/rke2/server/db/etcd/config sur le nœud maître et soit supprimez le paramètre --auto-tls, soit définissez-le sur false. client-transport-security: auto-tls: false
2.4 Assurez-vous que les arguments --peer-cert-file et --peer-key-file sont définis de manière appropriée (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu : '.peer-transport-security.cert-file' est égal à '/var/lib/rancher/rke2/server/tls/etcd/peer-server-client.crt' ET '.peer-transport-security.key-file' est égal à '/var/lib/rancher/rke2/server/tls/etcd/peer-server-client.key'
Valeur retournée :
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
Correction:
Par défaut, RKE2 génère des fichiers de certificat et de clé peer pour etcd. Ils se trouvent dans /var/lib/rancher/rke2/server/tls/etcd/. Si cette vérification échoue, assurez-vous que le fichier de configuration /var/lib/rancher/rke2/server/db/etcd/config n’a pas été modifié pour utiliser des fichiers de certificat et de clé peer personnalisés.
2.5 Assurez-vous que l’argument --peer-client-cert-auth est défini sur true (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu: 'ETCD_PEER_CLIENT_CERT_AUTH' est présent OU '.peer-transport-security.client-cert-auth' est égal à 'true'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit le paramètre --peer-cert-auth sur 'true'. Si cette vérification échoue, assurez-vous que le fichier de configuration /var/lib/rancher/rke2/server/db/etcd/config n’a pas été modifié pour désactiver l’authentification par certificat client pour le peer.
2.6 Assurez-vous que l’argument --peer-auto-tls n’est pas défini sur true (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu: 'ETCD_PEER_AUTO_TLS' n’est pas présent OU 'ETCD_PEER_AUTO_TLS' est présent OU '.peer-transport-security.auto-tls' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le paramètre --peer-auto-tls. Si cette vérification échoue, modifiez le fichier de spécification du pod etcd /var/lib/rancher/rke2/server/db/etcd/config sur le nœud maître et soit supprimez le paramètre --peer-auto-tls, soit définissez-le sur false. peer-transport-security: auto-tls: false
2.7 Assurez-vous qu’une autorité de certification unique est utilisée pour etcd (Automatisé)
Résultat : PASS
Audit :
cat /var/lib/rancher/rke2/server/db/etcd/config
Résultat attendu: 'ETCD_TRUSTED_CA_FILE' est présent OU '.peer-transport-security.trusted-ca-file' est égal à '/var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt'
Valeur retournée :
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
Correction:
Par défaut, RKE2 génère une autorité de certification unique pour etcd. Ceci est situé à /var/lib/rancher/rke2/server/tls/etcd/peer-ca.crt. Si cette vérification échoue, assurez-vous que le fichier de configuration /var/lib/rancher/rke2/server/db/etcd/config n’a pas été modifié pour utiliser une autorité de certification partagée.
3 Configuration du plan de contrôle
3.1 Authentification et autorisation
3.1.1 L’authentification par certificat client ne doit pas être utilisée pour les utilisateurs (Manuel)
Résultat : WARN
Correction: Des mécanismes alternatifs fournis par Kubernetes, tels que l’utilisation d’OIDC, devraient être mis en œuvre à la place des certificats clients.
3.2 Journalisation
3.2.1 Assurez-vous qu’une politique d’audit minimale est créée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -ef | grep kube-apiserver | grep -v grep
Résultat attendu : '--audit-policy-file' est présent
Valeur retournée :
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
Correction:
Créez un fichier de politique d’audit pour votre cluster.
3.2.2 Assurez-vous que la stratégie d’audit couvre les principales préoccupations en matière de sécurité (Manuel)
Résultat : WARN
Correction: Examinez la politique d’audit fournie pour le cluster et assurez-vous qu’elle couvre au moins les domaines suivants : - Accès aux Secrets gérés par le cluster. Il convient de veiller à ne consigner que les métadonnées des demandes de Secrets, ConfigMaps et TokenReviews, afin d’éviter le risque de consigner des données sensibles. - Modification des objets Pod et Deployment. - Utilisation de pods/exec, pods/portforward, pods/proxy et services/proxy. Pour la plupart des demandes, il est recommandé de consigner au minimum au niveau des métadonnées (le niveau de journalisation le plus basique).
4 Configuration de la sécurité des nœuds de travail
4.1 Fichiers de configuration des nœuds de travail
4.1.1 Assurez-vous que les permissions du fichier de service kubelet sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : Sans objet
Justification : Le kubelet est géré par le processus RKE2. Il n’y a pas de fichier de service kubelet, toute la configuration est passée en tant qu’arguments à l’exécution.
4.1.2 Assurez-vous que la propriété du fichier de service kubelet est définie sur root:root (Automatisé)
Résultat : Sans objet
Justification : Le kubelet est géré par le processus RKE2. Il n’y a pas de fichier de service kubelet, toute la configuration est passée en tant qu’arguments à l’exécution.
4.1.3 Si le fichier kubeconfig proxy existe, assurez-vous que les permissions sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu: les permissions sont 600, attendu 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur chaque nœud de travail. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig
4.1.4 Si le fichier kubeconfig proxy existe, assurez-vous que la propriété est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendua: 'root:root' est présent
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur chaque nœud de travail. Par exemple, chown root:root /var/lib/rancher/rke2/agent/kubeproxy.kubeconfig
4.1.5 Assurez-vous que les permissions du fichier --kubeconfig kubelet.conf sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu: les permissions sont 600, attendu 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur chaque nœud de travail. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/kubelet.kubeconfig
4.1.6 Assurez-vous que la propriété du fichier --kubeconfig kubelet.conf est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu: 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur chaque nœud de travail. Par exemple, chown root:root /var/lib/rancher/rke2/agent/kubelet.kubeconfig
4.1.7 Assurez-vous que les permissions du fichier des autorités de certification sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu: les permissions sont 600, attendu 600 ou plus restrictives
Valeur retournée :
permissions=600
Correction:
Exécutez la commande ci-dessous (en fonction de l’emplacement du fichier sur votre système) sur chaque nœud de travail. Par exemple, chmod 600 /var/lib/rancher/rke2/agent/client-ca.crt
4.1.8 Assurez-vous que la propriété du fichier des autorités de certification des clients est définie sur root:root (Automatisé)
Résultat : PASS
Audit :
/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'
Résultat attendu: 'root:root' est égal à 'root:root'
Valeur retournée :
root:root
Correction:
Exécutez la commande suivante pour modifier la propriété du fichier --client-ca-file. chown root:root /var/lib/rancher/rke2/agent/client-ca.crt
4.1.9 Si le fichier de configuration kubelet config.yaml est utilisé, validez que les permissions sont définies sur 600 ou plus restrictives (Automatisé)
Résultat : Sans objet
Justification : Le kubelet est géré par le processus RKE2. Il n’y a pas de fichier de configuration kubelet, toute la configuration est passée en tant qu’arguments à l’exécution.
4.1.10 Si le fichier de configuration kubelet config.yaml est utilisé, validez que la propriété du fichier est définie sur root:root (Automatisé)
Résultat : Sans objet
Justification : Le kubelet est géré par le processus RKE2. Il n’y a pas de fichier de configuration kubelet, toute la configuration est passée en tant qu’arguments à l’exécution.
4.2 Kubelet
4.2.1 Assurez-vous que l’argument --anonymous-auth est défini sur false (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu: '--anonymous-auth' est égal à 'false'
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit --anonymous-auth sur false. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, et supprimez toutes les lignes similaires à celles ci-dessous.
kubelet-arg: - "anonymous-auth=true"
En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.2 Assurez-vous que l’argument --authorization-mode n’est pas défini sur AlwaysAllow (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu: '--authorization-mode' n’a pas 'AlwaysAllow'
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le --authorization-mode sur AlwaysAllow. Si cette vérification échoue, éditez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, et supprimez toutes les lignes similaires à celles ci-dessous.
kubelet-arg: - "authorization-mode=AlwaysAllow"
En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.3 Assurez-vous que l’argument --client-ca-file est défini de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu: '--client-ca-file' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le certificat CA client pour le Kubelet. Il est généré et situé à /var/lib/rancher/rke2/agent/client-ca.crt
4.2.4 Vérifiez que l’argument --read-only-port est défini sur 0 (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu: '--read-only-port' est égal à '0' OU '--read-only-port' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 définit le --read-only-port sur 0. Si vous l’avez défini sur une valeur différente, vous devez le remettre à 0. Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, supprimez toutes les lignes similaires à celles ci-dessous.
kubelet-arg: - "read-only-port=XXXX"
En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.5 Assurez-vous que l’argument --streaming-connection-idle-timeout n’est pas défini sur 0 (Manuel)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu : '--streaming-connection-idle-timeout' est présent OU '--streaming-connection-idle-timeout' n’est pas présent
Valeur retournée :
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
Correction:
Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, définissez le paramètre suivant sur une valeur appropriée.
kubelet-arg: - "streaming-connection-idle-timeout=5m"
En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.6 Assurez-vous que l’argument --make-iptables-util-chains est défini sur true (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu : '--make-iptables-util-chains' est présent OU '--make-iptables-util-chains' n’est pas présent
Valeur retournée :
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
Correction:
Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, définissez le paramètre suivant.
kubelet-arg: - "make-iptables-util-chains=true"
Ou, supprimez l’argument --make-iptables-util-chains pour laisser RKE2 utiliser la valeur par défaut. En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.7 Assurez-vous que l’argument --hostname-override n’est pas défini (Automatisé)
Résultat : Sans objet
Justification : Par défaut, RKE2 définit l’argument --hostname-override. Selon les directives CIS, cela est nécessaire pour se conformer aux fournisseurs de cloud qui exigent ce drapeau pour garantir que le nom d’hôte correspond aux noms des nœuds.
4.2.8 Assurez-vous que l’argument eventRecordQPS est défini à un niveau qui garantit une capture appropriée des événements (Manuel)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu : '--event-qps' est présent OU '--event-qps' n’est pas présent
Valeur retournée :
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
Correction:
Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, définissez le paramètre suivant sur une valeur appropriée.
kubelet-arg: - "event-qps=+++<value>+++"
En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.9 Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de manière appropriée (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu : '--tls-cert-file' est présent ET '--tls-private-key-file' est présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 fournit automatiquement le certificat TLS et la clé privée pour le Kubelet. Ils sont générés et situés à /var/lib/rancher/rke2/agent/serving-kubelet.crt et /var/lib/rancher/rke2/agent/serving-kubelet.key Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml et supprimez toutes les lignes similaires à celles ci-dessous.
kubelet-arg: - "tls-cert-file=<path/to/tls-cert-file>" - "tls-private-key-file=<path/to/tls-private-key-file>"
4.2.10 Assurez-vous que l’argument --rotate-certificates n’est pas défini sur false (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu : '--rotate-certificates' est présent OU '--rotate-certificates' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas l’argument --rotate-certificates. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, et supprimez tout paramètre rotate-certificates. En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.11 Vérifiez que l’argument RotateKubeletServerCertificate est défini sur true (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kubelet
Résultat attendu : 'RotateKubeletServerCertificate' est présent OU 'RotateKubeletServerCertificate' n’est pas présent
Valeur retournée :
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
Correction:
Par défaut, RKE2 ne définit pas le feature gate RotateKubeletServerCertificate. Si cette vérification échoue, modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, et supprimez tout paramètre RotateKubeletServerCertificate. En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.12 Assurez-vous que le Kubelet n’utilise que des chiffrements cryptographiques forts (Manuel)
Résultat : WARN
Correction: Modifiez le fichier de configuration 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 à un sous-ensemble de ces valeurs. En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.2.13 Assurez-vous qu’une limite est définie sur les PID des pods (Manuel)
Résultat : WARN
Correction: Modifiez le fichier de configuration RKE2 /etc/rancher/rke2/config.yaml, définissez le paramètre suivant sur une valeur appropriée.
kubelet-arg: - "pod-max-pids=+++<value>+++"
En fonction de votre système, redémarrez le service RKE2. Par exemple, systemctl restart rke2-server.service
4.3 kube-proxy
4.3.1 Assurez-vous que le service de métriques kube-proxy est lié à l’hôte local (Automatisé)
Résultat : PASS
Audit :
/bin/ps -fC kube-proxy
Résultat attendu: '--metrics-bind-address' est présent OU '--metrics-bind-address' n’est pas présent
Valeur retournée :
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
Correction:
Modifiez ou supprimez toute valeur qui lie le service de métriques à une adresse autre que l’hôte local. La valeur par défaut est 127.0.0.1:10249.
5 Politiques Kubernetes
5.1 RBAC et Comptes de Service
5.1.1 Assurez-vous que le rôle de cluster-admin n’est utilisé que là où cela est nécessaire (Automatisé)
Résultat : PASS
Audit :
kubectl get clusterrolebindings -o=custom-columns=ROLE:.roleRef.name,NAME:.metadata.name,SUBJECT:.subjects[*].name --no-headers | grep cluster-admin
Résultat attendu : 'cluster-admin' correspond à l’expression regex 'cluster-admin|helm-kube-system-rke2-.*'
Valeur retournée :
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
Correction:
Identifiez tous les clusterrolebindings au rôle cluster-admin. Vérifiez s’ils sont utilisés et s’ils ont besoin de ce rôle ou s’ils pourraient utiliser un rôle avec moins de privilèges. RKE2 accorde des exceptions aux clusterrolebindings helm-kube-system-rke2-* qui gèrent l’installation de tous les composants gérés par rke2. Lorsque cela est possible, liez d’abord les utilisateurs à un rôle de moindre privilège, puis supprimez le clusterrolebinding au rôle cluster-admin :
kubectl delete clusterrolebinding [name]
5.1.2 Minimiser l’accès aux secrets (Automatisé)
Résultat : WARN
Remédiation: Lorsque cela est possible, supprimez l’accès get, list et watch aux objets Secret dans le cluster.
5.1.3 Minimiser l’utilisation de caractères génériques dans les Rôles et ClusterRoles (Automatisé)
Résultat : PASS
Audit :
# 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
Résultat attendu: 'is_compliant' est égal à 'vrai'
Valeur retournée :
**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
Correction:
Lorsque cela est possible, remplacez toute utilisation de caractères génériques dans les clusterroles et rôles par des objets ou actions spécifiques. RKE2 accorde des exceptions pour les rôles de cluster suivants, qui sont nécessaires pour les opérations régulières : - 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 Minimiser l’accès à la création de pods (Automatisé)
Résultat : WARN
Remédiation: Lorsque cela est possible, supprimez l’accès à la création d’objets pod dans le cluster.
5.1.5 Assurez-vous que les comptes de service par défaut ne sont pas utilisés activement. (Automatisé)
Résultat : PASS
Audit :
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
Résultat attendu: 'is_compliant' est égal à 'vrai'
Valeur retournée :
**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
Correction:
Créez des comptes de service explicites chaque fois qu’une charge de travail Kubernetes nécessite un accès spécifique au serveur API Kubernetes. Modifiez la configuration de chaque compte de service par défaut pour inclure cette valeur automountServiceAccountToken: false. Ou en utilisant kubectl :
kubectl patch serviceaccount --namespace <NAMESPACE> default --patch '{"automountServiceAccountToken": false}'
5.1.6 Assurez-vous que les jetons de compte de service ne sont montés que là où cela est nécessaire (Automatisé)
Résultat : PASS
Audit :
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
Résultat attendu: 'is_compliant' est égal à 'vrai'
Valeur retournée :
**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
Correction:
Modifiez la définition des ServiceAccounts et des Pods qui n’ont pas besoin de monter des jetons de compte de service pour le désactiver, avec automountServiceAccountToken: false. RKE2 accorde des exceptions aux ServiceAccounts dans l’espace de noms kube-system, car ceux-ci sont censés contacter l’apiserver. Lorsqu’il est en mode cis, RKE2 désactive l’automountServiceAccountToken pour les espaces de noms : - kube-public, default, kube-node-lease. Si à la fois le ServiceAccount et le .spec du Pod définissent une valeur pour automountServiceAccountToken, celle du Pod prévaut. Condition : Le Pod est considéré comme conforme (vrai) lorsque : - le ServiceAccount est configuré avec automountServiceAccountToken défini sur false et le Pod avec automountServiceAccountToken défini sur false ou non défini ; - ou lorsque le ServiceAccount est configuré avec automountServiceAccountToken défini sur true ou non défini et que le Pod est configuré avec automountServiceAccountToken défini sur false.
5.1.7 Évitez l’utilisation du groupe system:masters (Manuel)
Résultat : WARN
Remédiation : Retirez le groupe system:masters de tous les utilisateurs dans le cluster.
5.1.8 Limitez l’utilisation des permissions Bind, Impersonate et Escalate dans le cluster Kubernetes (Manuel)
Résultat : WARN
Remédiation : Lorsque cela est possible, retirez les droits d’imitation, de liaison et d’escalade des sujets.
5.1.9 Minimisez l’accès à la création de volumes persistants (Manuel)
Résultat : WARN
Remédiation : Lorsque cela est possible, retirez l’accès à la création d’objets PersistentVolume dans le cluster.
5.1.10 Minimisez l’accès à la sous-ressource proxy des nœuds (Manuel)
Résultat : WARN
Remédiation : Lorsque cela est possible, retirez l’accès à la sous-ressource proxy des objets nœuds.
5.1.11 Minimisez l’accès à la sous-ressource d’approbation des objets certificatesigningrequests (Manuel)
Résultat : WARN
Remédiation : Lorsque cela est possible, retirez l’accès à la sous-ressource d’approbation des objets certificatesigningrequest.
5.2 Normes de sécurité des pods
5.2.1 S’assurer que le cluster dispose d’au moins un mécanisme de contrôle de stratégie actif (Manuel)
Résultat : WARN
Remédiation : Assurez-vous que soit l’admission de sécurité des Pods, soit un système de contrôle de politique externe est en place pour chaque espace de noms contenant des charges de travail utilisateur.
5.2.2 Minimisez l’admission de conteneurs privilégiés (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de conteneurs privilégiés.
5.2.3 Minimisez l’admission de conteneurs souhaitant partager l’espace de noms d’ID du processus de l’hôte (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de hostPID conteneurs.
5.2.4 Minimisez l’admission de conteneurs souhaitant partager l’espace de noms IPC de l’hôte (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de hostIPC conteneurs.
5.2.5 Minimisez l’admission de conteneurs souhaitant partager l’espace de noms réseau de l’hôte (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de hostNetwork conteneurs.
5.2.6 Minimisez l’admission de conteneurs avec allowPrivilegeEscalation (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de conteneurs avec .spec.allowPrivilegeEscalation défini sur true.
5.2.7 Minimisez l’admission de conteneurs root (Manuel)
Résultat : WARN
Remédiation : Créez une stratégie pour chaque espace de noms dans le cluster, en veillant à ce que soit MustRunAsNonRoot ou MustRunAs avec la plage d’UID n’incluant pas 0, soit défini.
5.2.8 Minimisez l’admission de conteneurs avec la capacité NET_RAW (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de conteneurs avec la capacité NET_RAW.
5.2.9 Minimisez l’admission de conteneurs avec des capacités ajoutées (Manuel)
Résultat : WARN
Remédiation : Assurez-vous que allowedCapabilities n’est pas présent dans les stratégies pour le cluster à moins qu’il ne soit défini sur un tableau vide.
5.2.10 Minimisez l’admission de conteneurs avec des capacités assignées (Manuel)
Résultat : WARN
Correction: Examinez l’utilisation des capacités dans les applications fonctionnant sur votre cluster. Lorsqu’un espace de noms contient des applications qui ne nécessitent aucune capacité Linux pour fonctionner, envisagez d’ajouter un PSP qui interdit l’admission de conteneurs qui ne suppriment pas toutes les capacités.
5.2.11 Minimisez l’admission de conteneurs Windows HostProcess (Manuel)
Résultat : WARN
Remédiation : Ajoutez des stratégies à chaque espace de noms dans le cluster qui a des charges de travail utilisateur pour restreindre l’admission de conteneurs ayant .securityContext.windowsOptions.hostProcess défini sur true.
5.3 Politiques réseau et CNI
5.3.1 Assurez-vous que le CNI utilisé prend en charge les NetworkPolicies (Manuel)
Résultat : WARN
Remédiation : Si le plugin CNI utilisé ne prend pas en charge les politiques réseau, il convient d’envisager d’utiliser un autre plugin ou de trouver un mécanisme alternatif pour restreindre le trafic dans le cluster Kubernetes.
5.4 Gestion des secrets
5.4.1 Préférez utiliser des secrets sous forme de fichiers plutôt que des secrets sous forme de variables d’environnement (Manuel)
Résultat : WARN
Remédiation: Si possible, réécrivez le code de l’application pour lire les Secrets à partir de fichiers secrets montés, plutôt qu’à partir de variables d’environnement.
5.7 Politiques générales
5.7.1 Créez des frontières administratives entre les ressources en utilisant des espaces de noms (Manuel)
Résultat : WARN
Remédiation: Suivez la documentation et créez des espaces de noms pour les objets de votre déploiement selon vos besoins.
5.7.2 Assurez-vous que le profil seccomp est défini sur docker/default dans vos définitions de Pod (Manuel)
Résultat : WARN
Correction: Utilisez securityContext pour activer le profil seccomp docker/default dans vos définitions de Pod. Un exemple est le suivant : securityContext: seccompProfile: type: RuntimeDefault