KubernetesCIS1.34 référence

Le Center for Internet Security ( CIS ) publie le CISKubernetes Benchmark, un cadre de mesures spécifiques permettant une configuration Kubernetes plus sécurisée et conforme aux normes requises par diverses réglementations industrielles. Ce document contient les résultats du benchmark de 1.5CISKubernetes version pour les clusters qui exécutent Kubernetes la version 1.34. Pour plus d'informations ou pour obtenir de l'aide afin de comprendre le benchmark, consultez la section Utilisation du benchmark.

1 Configuration de sécurité du noeud maître

1.1 Fichiers de configuration du noeud principal

Section 1.1 Résultats du test de performances des fichiers de configuration du noeud maître
Section Recommandation Marqué? Niveau Résultat Responsibilité
1.1.1 Vérifiez que les droits sur le fichier de spécification de pod de serveur d'API sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.2 Vérifiez que la propriété du fichier de spécification de pod de serveur d'API est définie sur root:root. Evalué 1 Réussite IBM
1.1.3 Vérifiez que les droits sur le fichier de spécification de pod de gestionnaire de contrôleurs sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.4 Vérifiez que la propriété du fichier de spécification de pod de gestionnaire de contrôleurs est définie sur root:root. Evalué 1 Réussite IBM
1.1.5 Vérifiez que les droits sur le fichier de spécification de pod de planificateur sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.6 Vérifiez que la propriété du fichier de spécification de pod de planificateur est définie sur root:root. Evalué 1 Réussite IBM
1.1.7 Vérifiez que les droits sur le fichier de spécification de pod etcd sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.8 Vérifiez que la propriété du fichier de spécification de pod etcd est définie sur root:root. Evalué 1 Réussite IBM
1.1.9 Vérifiez que les droits sur le fichier d'interface CNI (Container Network Interface) sont définis sur 644 ou sont plus restrictifs. Non évalué 1 Réussite IBM
1.1.10 Vérifiez que la propriété du fichier d'interface CNI (Container Network Interface) est définie sur root:root. Non évalué 1 Réussite IBM
1.1.11 Vérifiez que les droits sur le répertoire de données etcd sont définis sur 700 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.12 Vérifiez que la propriété du répertoire de données etcd est définie sur etcd:etcd. Evalué 1 Réussite IBM
1.1.13 Vérifiez que les droits sur le fichier admin.conf sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.14 Vérifiez que la propriété du fichier admin.conf est définie sur root:root. Evalué 1 Réussite IBM
1.1.15 Vérifiez que les droits sur le fichier scheduler.conf sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.16 Vérifiez que la propriété du fichier scheduler.conf est définie sur root:root. Evalué 1 Réussite IBM
1.1.17 Vérifiez que les droits sur le fichier controller-manager.conf sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.18 Vérifiez que la propriété du fichier controller-manager.conf est définie sur root:root. Evalué 1 Réussite IBM
1.1.19 Vérifiez que la propriété du fichier et du répertoire PKI Kubernetes est définie sur root:root. Evalué 1 Réussite IBM
1.1.20 Vérifiez que les droits sur le fichier de certificat PKI Kubernetes sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
1.1.21 Vérifiez que les droits sur le fichier de clés PKI Kubernetes sont définis sur 600. Evalué 1 Réussite IBM

1.2 Serveur API

Section 1.2 Résultats du test de performances du serveur d'API
Section Recommandation Marqué? Niveau Résultat Responsibilité
1.2.1 Vérifiez que l'argument --anonymous-auth est défini sur false. Non évalué 1 Échec IBM
1.2.2 Vérifiez que l'argument --basic-auth-file n'est pas défini. Evalué 1 Réussite IBM
1.2.3 Vérifiez que le paramètre --token-auth-file n'est pas défini. Evalué 1 Réussite IBM
1.2.4 Vérifiez que l'argument --kubelet-https est défini sur true. Evalué 1 Réussite IBM
1.2.5 Vérifiez que les arguments --kubelet-client-certificate et --kubelet-client-key sont correctement définis. Evalué 1 Réussite IBM
1.2.6 Vérifiez que l'argument --kubelet-certificate-authority est correctement défini. Evalué 1 Réussite IBM
1.2.7 Vérifiez que l'argument --authorization-mode n'est pas défini sur AlwaysAllow. Evalué 1 Réussite IBM
1.2.8 Assurez-vous que l'argument --authorization-mode inclut Node. Evalué 1 Réussite IBM
1.2.9 Assurez-vous que l'argument --authorization-mode inclut RBAC. Evalué 1 Réussite IBM
1.2.10 Vérifiez que le plug-in de contrôle d'admission EventRateLimit est défini. Non évalué 1 Échec IBM
1.2.11 Vérifiez que le plug-in de contrôle d'admission AlwaysAdmit n'est pas défini. Evalué 1 Réussite IBM
1.2.12 Vérifiez que le plug-in de contrôle d'admission AlwaysPullImages est défini. Non évalué 1 Échec IBM
1.2.13 Vérifiez que le plug-in de contrôle d'admission SecurityContextDeny est défini si PodSecurityPolicy n'est pas utilisé. Non évalué 1 Réussite IBM
1.2.14 Vérifiez que le plug-in de contrôle d'admission ServiceAccount est défini. Evalué 1 Réussite IBM
1.2.15 Vérifiez que le plug-in de contrôle d'admission NamespaceLifecycle est défini. Evalué 1 Réussite IBM
1.2.16 Vérifiez que le plug-in de contrôle d'admission PodSecurityPolicy est défini. Evalué 1 Réussite IBM
1.2.17 Vérifiez que le plug-in de contrôle d'admission NodeRestriction est défini. Evalué 1 Réussite IBM
1.2.18 Vérifiez que l'argument --insecure-bind-address n'est pas défini. Evalué 1 Réussite IBM
1.2.19 Vérifiez que l'argument --insecure-port est défini sur 0. Evalué 1 Réussite IBM
1.2.20 Vérifiez que l'argument --secure-port n'est pas défini sur 0. Evalué 1 Réussite IBM
1.2.21 Vérifiez que l'argument --profiling est défini sur false. Evalué 1 Réussite IBM
1.2.22 Vérifiez que l'argument --audit-log-path est défini. Evalué 1 Échec Partagée
1.2.23 Vérifiez que l'argument --audit-log-maxage est défini sur 30 ou comme approprié. Evalué 1 Échec Partagée
1.2.24 Vérifiez que l'argument --audit-log-maxbackup est défini sur 10 ou comme approprié. Evalué 1 Échec Partagée
1.2.25 Vérifiez que l'argument --audit-log-maxsize est défini sur 100 ou comme approprié. Evalué 1 Échec Partagée
1.2.26 Vérifiez que l'argument --request-timeout est correctement défini. Evalué 1 Réussite IBM
1.2.27 Vérifiez que l'argument --service-account-lookup est défini sur true. Evalué 1 Réussite IBM
1.2.28 Vérifiez que l'argument --service-account-key-file est correctement défini. Evalué 1 Réussite IBM
1.2.29 Vérifiez que les arguments --etcd-certfile et --etcd-keyfile sont correctement définis. Evalué 1 Réussite IBM
1.2.30 Vérifiez que les arguments --tls-cert-file et --tls-private-key-file sont correctement définis. Evalué 1 Réussite IBM
1.2.31 Vérifiez que l'argument --client-ca-file est correctement défini. Evalué 1 Réussite IBM
1.2.32 Vérifiez que l'argument --etcd-cafile est correctement défini. Evalué 1 Réussite IBM
1.2.33 Vérifiez que l'argument --encryption-provider-config est correctement défini. Evalué 1 Échec Partagée
1.2.34 Vérifiez que les fournisseurs de chiffrement sont correctement configurés. Evalué 1 Échec Partagée
1.2.35 Vérifiez que le serveur d'API utilise uniquement des chiffrements cryptographiques puissants. Non évalué 1 Réussite IBM

1.3 Gestionnaire de contrôleurs

Section 1.3 Résultats du test de performances du gestionnaire de contrôleurs
Section Recommandation Marqué? Niveau Résultat Responsibilité
1.3.1 Vérifiez que l'argument --terminated-pod-gc-threshold est correctement défini. Evalué 1 Réussite IBM
1.3.2 Vérifiez que l'argument --profiling est défini sur false. Evalué 1 Réussite IBM
1.3.3 Vérifiez que l'argument --use-service-account-credentials est défini sur true. Evalué 1 Réussite IBM
1.3.4 Vérifiez que l'argument --service-account-private-key-file est correctement défini. Evalué 1 Réussite IBM
1.3.5 Vérifiez que l'argument --root-ca-file est correctement défini. Evalué 1 Réussite IBM
1.3.6 Vérifiez que l'argument RotateKubeletServerCertificate est défini sur true. Evalué 2 Échec IBM
1.3.7 Vérifiez que l'argument --bind-address est défini sur 127.0.0.1. Evalué 1 Échec IBM

1.4 Planificateur

Section 1.4 Résultats du test de performances du planificateur
Section Recommandation Marqué? Niveau Résultat Responsibilité
1.4.1 Vérifiez que l'argument --profiling est défini sur false. Evalué 1 Réussite IBM
1.4.2 Vérifiez que l'argument --bind-address est défini sur 127.0.0.1. Evalué 1 Échec IBM

2 Configuration du noeud Etcd

Section 2 Résultats du test de performances de la configuration du noeud Etcd
Section Recommandation Marqué? Niveau Résultat Responsibilité
2.1 Vérifiez que les arguments --cert-file et --key-file sont correctement définis. Evalué 1 Réussite IBM
2.2 Vérifiez que l'argument --client-cert-auth est défini sur true. Evalué 1 Réussite IBM
2.3 Vérifiez que l'argument --auto-tls n'est pas défini sur true. Evalué 1 Réussite IBM
2.4 Vérifiez que les arguments --peer-cert-file et --peer-key-file sont correctement définis. Evalué 1 Réussite IBM
2.5 Vérifiez que l'argument --peer-client-cert-auth est défini sur true. Evalué 1 Réussite IBM
2.6 Vérifiez que l'argument --peer-auto-tls n'est pas défini sur true. Evalué 1 Réussite IBM
2.7 Vérifiez qu'une autorité de certification unique est utilisée pour etcd. Non évalué 2 Réussite IBM

3 Configuration du plan de contrôle

3.1 Authentification et autorisation

Section 3.1 Résultats du test de performances de l'authentification et de l'autorisation
Section Recommandation Marqué? Niveau Résultat Responsibilité
3.1.1 L'authentification par certificat client ne doit pas être utilisée pour les utilisateurs. Non évalué 2 Réussite Partagée

3.2 Journalisation

Section 3.2 Résultats du test de performances de la journalisation
Section Recommandation Marqué? Niveau Résultat Responsibilité
3.2.1 Vérifiez qu'une règle d'audit minimale est créée. Evalué 1 Échec Partagée
3.2.2 Vérifiez que la règle d'audit couvre les principales préoccupations en matière de sécurité. Non évalué 2 Échec Partagée

4 Configuration de la sécurité du noeud worker

4.1 Fichiers de configuration de noeud worker

Section 4.1 Résultats du test de performances des fichiers de configuration des noeuds worker
Section Recommandation Marqué? Niveau Résultat Responsibilité
4.1.1 Vérifiez que les droits sur le fichier de service kubelet sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
4.1.2 Vérifiez que la propriété du fichier de service kubelet est définie sur root:root. Evalué 1 Réussite IBM
4.1.3 Vérifiez que les droits sur le fichier kubeconfig du proxy sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
4.1.4 Vérifiez que la propriété du fichier kubeconfig du proxy est définie sur root:root. Evalué 1 Réussite IBM
4.1.5 Vérifiez que les droits sur le fichier kubelet.conf sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
4.1.6 Vérifiez que la propriété du fichier kubelet.conf est définie sur root:root. Evalué 1 Réussite IBM
4.1.7 Vérifiez que les droits sur le fichier des autorités de certification sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
4.1.8 Vérifiez que la propriété du fichier des autorités de certification client est définie sur root:root. Evalué 1 Réussite IBM
4.1.9 Vérifiez que les droits sur le fichier de configuration kubelet sont définis sur 644 ou sont plus restrictifs. Evalué 1 Réussite IBM
4.1.10 Vérifiez que la propriété du fichier de configuration kubelet est définie sur root:root. Evalué 1 Réussite IBM

4.2 Kubelet

Section 4.2 Résultats du test de performances de Kubelet
Section Recommandation Marqué? Niveau Résultat Responsibilité
4.2.1 Vérifiez que l'argument --anonymous-auth est défini sur false. Evalué 1 Réussite IBM
4.2.2 Vérifiez que l'argument --authorization-mode n'est pas défini sur AlwaysAllow. Evalué 1 Réussite IBM
4.2.3 Vérifiez que l'argument --client-ca-file est correctement défini. Evalué 1 Réussite IBM
4.2.4 Vérifiez que l'argument --read-only-port est défini sur 0. Evalué 1 Réussite IBM
4.2.5 Vérifiez que l'argument --streaming-connection-idle-timeout n'est pas défini sur 0. Evalué 1 Réussite IBM
4.2.6 Vérifiez que l'argument --protect-kernel-defaults est défini sur true. Evalué 1 Échec IBM
4.2.7 Vérifiez que l'argument --make-iptables-util-chains est défini sur true. Evalué 1 Réussite IBM
4.2.8 Vérifiez que l'argument --hostname-override n'est pas défini. Non évalué 1 Échec IBM
4.2.9 Vérifiez que l'argument --event-qps est défini sur 0 ou sur un niveau qui garantit une capture d'événement appropriée. Non évalué 2 Réussite IBM
4.2.10 Vérifiez que les arguments --tls-cert-file et --tls-private-key-file sont correctement définis. Evalué 1 Réussite IBM
4.2.11 Vérifiez que l'argument --rotate-certificates n'est pas défini sur false. Evalué 1 Réussite IBM
4.2.12 Vérifiez que l'argument RotateKubeletServerCertificate est défini sur true. Evalué 1 Échec IBM
4.2.13 Vérifiez que le Kubelet utilise uniquement des chiffrements cryptographiques puissants. Non évalué 1 Réussite IBM

5 Politiques de Kubernetes

5.1 RBAC et comptes de service

Section 5.1 Résultats du test de performances du contrôle d'accès basé sur les rôles et des comptes de service
Section Recommandation Marqué? Niveau Résultat Responsibilité
5.1.1 Assurez-vous que le rôle cluster-admin n'est utilisé que lorsque cela est nécessaire. Non évalué 1 Réussite Partagée
5.1.2 Réduisez l'accès aux secrets. Non évalué 1 Échec Partagée
5.1.3 Réduisez l'utilisation des caractères génériques dans Roles et ClusterRoles. Non évalué 1 Échec Partagée
5.1.4 Réduisez l'accès à la création de pods. Non évalué 1 Réussite Partagée
5.1.5 Vérifiez que les comptes de service par défaut ne sont pas activement utilisés. Evalué 1 Échec Partagée
5.1.6 Vérifiez que les jetons de compte de service ne sont montés qu'en cas de nécessité. Non évalué 1 Échec Partagée

5.2 Politiques sur la sécurité des nacelles

Section 5.2 Résultats du test de performances des règles de sécurité de pod
Section Recommandation Marqué? Niveau Résultat Responsibilité
5.2.1 Réduisez l'admission des conteneurs privilégiés. Non évalué 1 Réussite Partagée
5.2.2 Réduisez l'admission des conteneurs souhaitant partager l'espace de noms de l'ID de processus hôte. Evalué 1 Réussite Partagée
5.2.3 Réduisez l'admission des conteneurs souhaitant partager l'espace de noms IPC hôte. Evalué 1 Réussite Partagée
5.2.4 Réduisez l'admission des conteneurs souhaitant partager l'espace de noms du réseau hôte. Evalué 1 Réussite Partagée
5.2.5 Réduisez l'admission des conteneurs avec allowPrivilegeEscalation. Evalué 1 Réussite Partagée
5.2.6 Réduisez l'admission des conteneurs racine. Non évalué 2 Réussite Partagée
5.2.7 Réduire au minimum l'admission de conteneurs dotés de la fonctionnalité NET_RAW. Non évalué 1 Réussite Partagée
5.2.8 Réduisez l'admission des conteneurs avec fonctionnalités ajoutées. Non évalué 1 Réussite Partagée
5.2.9 Réduisez l'admission des conteneurs avec fonctionnalités affectées. Non évalué 2 Réussite Partagée

5.3 Politiques du réseau et CNI

Section 5.3 Résultats du test de performances des règles réseau et de CNI
Section Recommandation Marqué? Niveau Résultat Responsibilité
5.3.1 Vérifiez que le CNI utilisé prend en charge des règles réseau. Non évalué 1 Réussite IBM
5.3.2 Vérifiez que des règles réseau ont été définies pour tous les espace de noms. Evalué 2 Échec Partagée

5.4 Gestion des secrets

Section 5.4 Résultats du test de performances de la gestion des secrets
Section Recommandation Marqué? Niveau Résultat Responsibilité
5.4.1 Privilégiez l'utilisation de secrets sous forme de fichiers plutôt que de variables d'environnement. Non évalué 1 Réussite Partagée
5.4.2 Envisagez le stockage de secrets externe. Non évalué 2 Échec Partagée

5.5 Contrôle d'admission extensible

Section 5.5 Résultats du test de performances du contrôle d'admission extensible
Section Recommandation Marqué? Niveau Résultat Responsibilité
5.5.1 Configurez la provenance d'image à l'aide du contrôleur d'admission ImagePolicyWebhook. Non évalué 2 Échec Partagée

5.7 Politiques générales

Section Résultats de 5.7 référence des politiques générales
Section Recommandation Marqué? Niveau Résultat Responsibilité
5.7.1 Créez des limites administratives entre des ressources à l'aide d'espaces de noms. Non évalué 1 Réussite Partagée
5.7.2 Assurez-vous que le seccomp profil est défini sur docker/default dans vos définitions de pod. Non évalué 2 Échec Partagée
5.7.3 Appliquez un contexte de sécurité à vos pods et conteneurs. Non évalué 2 Échec Partagée
5.7.4 L'espace de noms par défaut ne doit pas être utilisé. Evalué 2 Échec Partagée

IBM Résolutions et explications

Section IBM corrections et explications résultats de référence
Section Remédiation et explication
1.2.1 IBM utilise le RBAC pour la protection des clusters, mais autorise la découverte anonyme, ce qui est considéré comme raisonnable selon CISKubernetes Benchmark.
1.2.10 IBM n'active pas le EventRateLimit contrôleur d'admission car il s'agit d'une Kubernetes fonctionnalité alpha.
1.2.12 IBM n'active pas le AlwaysPullImages contrôleur d'admission, car il remplace le d'un conteneur imagePullPolicy et peut avoir un impact sur les performances.
1.2.13 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
1.2.16 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
1.2.22 IBM peut éventuellement activer l'audit du Kubernetes serveur API.
1.2.23 IBM peut éventuellement activer l'audit du Kubernetes serveur API.
1.2.24 IBM peut éventuellement activer l'audit du Kubernetes serveur API.
1.2.25 IBM peut éventuellement activer l'audit du Kubernetes serveur API.
1.2.33 IBM peut éventuellement activer un fournisseur de service Kubernetes de gestion des clés(KMS).
1.2.34 IBM peut éventuellement activer un fournisseur de service Kubernetes de gestion des clés(KMS).
1.3.6 IBM fait tourner les certificats à chaque rechargement ou mise à jour des nœuds de travail.
1.3.7 L'adresse IP du gestionnaire de contrôleur ne peut pas être limitée à 127.0.0.1. La IBM configuration est nécessaire pour que des contrôles de santé puissent être effectués. Il n'est pas divulgué publiquement ou en privé aux clients.
1.4.2 L'adresse IP du planificateur ne peut pas être limitée à 127.0.0.1. La IBM configuration est nécessaire pour que des contrôles de santé puissent être effectués. Il n'est pas divulgué publiquement ou en privé aux clients.
3.2.1 IBM peut éventuellement activer l'audit du Kubernetes serveur API.
3.2.2 IBM peut éventuellement activer l'audit du Kubernetes serveur API.
4.2.6 IBM ne protège pas les paramètres par défaut du noyau afin de permettre aux clients de régler les paramètres du noyau.
4.2.8 IBM s'assure que le nom d'hôte correspond au nom attribué par l'infrastructure.
4.2.11 IBM fait tourner les certificats à chaque rechargement ou mise à jour des nœuds de travail.
4.2.12 IBM fait tourner les certificats à chaque rechargement ou mise à jour des nœuds de travail.
5.1.2 IBM déploie certains composants système dont l'accès Kubernetes secret pourrait être davantage restreint.
5.1.3 IBM déploie certains composants système dont l'accès Kubernetes aux ressources pourrait être davantage restreint.
5.1.5 IBM ne définit automountServiceAccountToken: false pas pour chaque compte de service par défaut.
5.1.6 IBM déploie certains composants système qui pourraient définir automountServiceAccountToken: false.
5.2.1 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.2 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.3 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.4 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.5 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.6 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.7 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.8 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.2.9 IBM peut éventuellement configurer l'admission de sécurité des pods, qui est similaire aux politiques de sécurité des pods Kubernetes non prises en charge.
5.3.2 IBM dispose d'un ensemble de politiques par défaut Calico et Kubernetes réseau définies, et des politiques réseau supplémentaires peuvent être ajoutées en option.
5.4.2 IBM peut éventuellement activer Secrets Manager le service.
5.5.1 IBM peut éventuellement activer l'application de la sécurité des images.
5.7.2 IBM n'annote pas tous les pods avec seccomp profils.
5.7.3 IBM déploie certains composants système qui ne définissent pas de pod ou conteneur securityContext.
5.7.4 IBM déploie certaines Kubernetes ressources vers les noms par défaut.