Ce document présente le benchmark CIS de Kubernetes et explique comment auditer votre conformité avec le benchmark. Pour les recommandations que vous ne pouvez pas mettre en œuvre vous-même, le document explique ce que Google Distributed Cloud fait pour répondre à la recommandation.
Utiliser les benchmarks CIS
Le Center for Internet Security (CIS) publie des benchmarks sur les bonnes pratiques de sécurité. Le benchmark CIS de Kubernetes fournit un ensemble de recommandations pour configurer Kubernetes afin de garantir une sécurité élevée. Le benchmark est lié à une version spécifique de Kubernetes. Le benchmark CIS de Kubernetes est écrit pour la distribution en Open Source de Kubernetes. Il est destiné à être appliqué de manière aussi universelle que possible entre les différentes distributions.
Versions
Le tableau suivant répertorie les versions de Google Distributed Cloud, de Kubernetes et du benchmark CIS de Kubernetes qui ont été utilisées pour effectuer l'évaluation décrite dans ce document :
1.29
Version de Google Distributed Cloud | Version de Kubernetes | Version du benchmark CIS de Kubernetes |
---|---|---|
1.29.0-gke.1449 | 1.29.3-gke.600 | v1.8.0 |
1.28
Version de Google Distributed Cloud | Version de Kubernetes | Version du benchmark CIS de Kubernetes |
---|---|---|
1.28.0-gke.435 | 1.28.3-gke.700 | v1.7.0 |
1.16
Version de Google Distributed Cloud | Version de Kubernetes | Version du benchmark CIS de Kubernetes |
---|---|---|
1.16.0 | 1.27.4-gke.1600 | V1.23 (1.0.1) |
Notez que les numéros de version peuvent différer selon les benchmarks.
Benchmark CIS de Kubernetes
Les sections suivantes fournissent des informations de base pour vous aider à interpréter l'état du benchmark CIS de Kubernetes pour Google Distributed Cloud.
Accéder au benchmark
Le benchmark CIS de Kubernetes est disponible sur le site Web du CIS.
Niveaux de recommandation
Dans le benchmark CIS de Kubernetes :
Niveau | Description |
---|---|
Niveau 1 | Les recommandations visent à : |
Niveau 2 | Étend le profil du niveau 1. Les recommandations présentent une ou plusieurs des caractéristiques suivantes : |
État d'évaluation
Un état d'évaluation est inclus pour chaque recommandation. L'état d'évaluation indique si la recommandation concernée peut être automatisée ou si elle nécessite une mise en œuvre manuelle. Les deux états sont tout aussi importants l'un que l'autre et sont déterminés et acceptés comme défini dans le tableau suivant :
Notation | Description |
---|---|
Automatiques | Représente les recommandations pour lesquelles l'évaluation d'un contrôle technique peut être entièrement automatisée et validée par un état de réussite/échec. Les recommandations comprennent les informations nécessaires à la mise en œuvre de l'automatisation. |
Manuel | Représente les recommandations pour lesquelles l'évaluation d'un contrôle technique ne peut pas être entièrement automatisée et nécessite une exécution manuelle de certaines étapes ou de toutes les étapes permettant de valider que l'état configuré est défini comme attendu. L'état attendu peut varier en fonction de l'environnement. |
Évaluation sur Google Distributed Cloud
Nous utilisons les valeurs suivantes pour spécifier l'état des recommandations Kubernetes dans Google Distributed Cloud :
État | Description |
---|---|
Réussite | Respecte une recommandation du benchmark. |
Échec | Ne respecte pas une recommandation du benchmark. |
Contrôle équivalent | Ne respecte pas les conditions exactes de la recommandation du benchmark, mais d'autres mécanismes existent dans Google Distributed Cloud pour fournir des contrôles de sécurité équivalents. |
Dépend de l'environnement | Google Distributed Cloud ne configure pas les éléments liés à cette recommandation. La configuration de l'utilisateur détermine si son environnement respecte une recommandation du benchmark. |
Architecture de Google Distributed Cloud
Google Distributed Cloud accepte plusieurs configurations et types de clusters. Chaque type de cluster compatible (administrateur, utilisateur, hybride et autonome) est évalué par rapport au benchmark CIS. Les évaluations et justifications suivantes s'appliquent à tous les types de clusters compatibles. Pour en savoir plus sur les configurations de cluster compatibles avec Google Distributed Cloud, consultez la section Choisir des modèles de déploiement.
État sur Google Distributed Cloud
Les sections suivantes contiennent les évaluations des nouveaux clusters créés avec la version spécifiée de Google Distributed Cloud. Ces évaluations sont un indicateur des performances des nouveaux clusters sans charges de travail d'utilisateur par rapport au benchmark CIS de Kubernetes. Si vous déployez vos propres charges de travail avant d'effectuer vous-même un audit des benchmarks, vos résultats peuvent être différents.
État des clusters GKE on Bare Metal :
1.29
# | Recommandation | Level | État |
---|---|---|---|
1 | cis-1.8 | ||
1.1 | Fichiers de configuration de nœud du plan de contrôle | ||
1.1.1 | Assurez-vous que les autorisations du fichier de spécification du pod du serveur d'API sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.2 | Assurez-vous que la propriété du fichier de spécification du pod du serveur d'API est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.3 | Assurez-vous que les autorisations du fichier de spécification du pod du gestionnaire de contrôleurs sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.4 | Assurez-vous que la propriété du fichier de spécification du pod du gestionnaire de contrôleurs est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.5 | Assurez-vous que les autorisations du fichier de spécification du pod du programmeur sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.6 | Assurez-vous que la propriété du fichier de spécification du pod du programmeur est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.7 | Assurez-vous que les autorisations du fichier de spécification du pod d'etcd sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.8 | Assurez-vous que la propriété du fichier de spécification du pod d'etcd est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.9 | Assurez-vous que les autorisations du fichier de la Container Network Interface sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent |
1.1.10 | Assurez-vous que la propriété du fichier de la Container Network Interface est définie sur root:root (Manuelle). |
L1 | Réussite |
1.1.11 | Assurez-vous que les autorisations du répertoire de données d'etcd sont définies sur 700 ou sur une option plus restrictive (Automatisée). |
L1 | Contrôle équivalent |
1.1.12 | Assurez-vous que la propriété du répertoire de données d'etcd est définie sur etcd:etcd (Automatisée). |
L1 | Contrôle équivalent |
1.1.13 | Assurez-vous que les autorisations du fichier admin. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.14 | Assurez-vous que la propriété du fichier admin. conf est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.15 | Assurez-vous que les autorisations du fichier scheduler. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.16 | Assurez-vous que la propriété du fichier scheduler. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.17 | Assurez-vous que les autorisations du fichier controller-manager. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.18 | Assurez-vous que la propriété du fichier controller-manager. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.19 | Assurez-vous que la propriété du fichier et du répertoire PKI de Kubernetes est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.20 | Assurez-vous que les autorisations du fichier de certificat PKI de Kubernetes sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent |
1.1.21 | Assurez-vous que les autorisations du fichier de clé PKI de Kubernetes sont définies sur 600 (Manuelle). |
L1 | Contrôle équivalent |
1.2 | Serveur d'API | ||
1.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). |
L1 | Avertir |
1.2.2 | Assurez-vous que le paramètre --token-auth-file n'est pas défini (Automatisée). |
L1 | Réussite |
1.2.3 | Assurez-vous que le paramètre -- DenyServiceExternalIPs est défini (Manuelle). |
L1 | Contrôle équivalent |
1.2.4 | Assurez-vous que les arguments --kubelet-client-certificate et --kubelet-client-key sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.5 | Assurez-vous que l'argument --kubelet-certificate-authority est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.6 | Assurez-vous que l'argument --authorization-mode n'est pas défini sur "AlwaysAllow" (Automatisée). |
L1 | Réussite |
1.2.7 | Assurez-vous que l'argument --authorization-mode inclut "Node" (Automatisée). |
L1 | Réussite |
1.2.8 | Assurez-vous que l'argument --authorization-mode inclut "RBAC" (Automatisée). |
L1 | Réussite |
1.2.9 | Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). | L1 | Avertissement |
1.2.10 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysAdmit" n'est pas défini (Automatisée). | L1 | Réussite |
1.2.11 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). | L1 | Avertissement |
1.2.12 | Assurez-vous que le plug-in de contrôle d'admission "SecurityContextDeny" est défini si "PodSecurityPolicy" n'est pas utilisé (Manuelle). | L1 | Avertir |
1.2.13 | Assurez-vous que le plug-in de contrôle d'admission "ServiceAccount" est défini (Automatisée). | L1 | Avertissement |
1.2.14 | Assurez-vous que le plug-in de contrôle d'admission "NamespaceLifecycle" est défini (Automatisée). | L1 | Réussite |
1.2.15 | Assurez-vous que le plug-in de contrôle d'admission "NodeRestriction" est défini (Automatisée). | L1 | Réussite |
1.2.16 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.2.17 | Assurez-vous que l'argument --audit-log-path est défini (Automatisée). |
L1 | Réussite |
1.2.18 | Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.19 | Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.20 | Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.21 | Assurez-vous que l'argument --request-timeout est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.2.22 | Assurez-vous que l'argument --service-account-lookup est défini sur "true" (Automatisée). |
L1 | Réussite |
1.2.23 | Assurez-vous que l'argument --service-account-key-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.24 | Assurez-vous que les arguments --etcd-certfile et --etcd-keyfile sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.25 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.26 | Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.27 | Assurez-vous que l'argument --etcd-cafile est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.28 | Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.2.29 | Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). | L1 | Réussite |
1.2.30 | Assurez-vous que le serveur d'API utilise uniquement des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Réussite |
1.3 | Gestionnaire de contrôleurs | ||
1.3.1 | Assurez-vous que l'argument --terminated-pod-gc-threshold est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.3.2 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.3.3 | Assurez-vous que l'argument --use-service-account-credentials est défini sur "true" (Automatisée). |
L1 | Réussite |
1.3.4 | Assurez-vous que l'argument --service-account-private-key-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.3.5 | Assurez-vous que l'argument --root-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.3.6 | Assurez-vous que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Automatisée). | L2 | Réussite |
1.3.7 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertissement |
1.4 | Scheduler | ||
1.4.1 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.4.2 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertissement |
2 | cis-1.8 | ||
2 | Configuration du nœud etcd | ||
2.1 | Assurez-vous que les arguments --cert-file et --key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
2.2 | Assurez-vous que l'argument --client-cert-auth est défini sur "true" (Automatisée). |
L1 | Réussite |
2,3 | Assurez-vous que l'argument --auto-tls n'est pas défini sur "true" (Automatisée). |
L1 | Réussite |
2.4 | Assurez-vous que les arguments --peer-cert-file et --peer-key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
2.5 | Assurez-vous que l'argument --peer-client-cert-auth est défini sur "true" (Automatisée). |
L1 | Réussite |
2.6 | Assurez-vous que l'argument --peer-auto-tls n'est pas défini sur "true" (Automatisée). |
L1 | Réussite |
2.7 | Assurez-vous qu'une autorité de certification unique est utilisée pour etcd (Manuelle). | L2 | Réussite |
3 | cis-1.8 | ||
3.1 | Authentification et autorisation | ||
3.1.1 | L'authentification par certificat client ne doit pas être utilisée pour les utilisateurs (Manuelle). | L2 | Réussite |
3.1.2 | L'authentification par jeton de compte de service ne doit pas être utilisée pour les utilisateurs (Manuelle). | L1 | Réussite |
3.1.3 | L'authentification par jeton d'amorçage ne doit pas être utilisée pour les utilisateurs (Manuelle). | L1 | Réussite |
3.2 | Logging | ||
3.2.1 | Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). | L1 | Réussite |
3.2.2 | Assurez-vous que la stratégie d'audit couvre les principaux problèmes de sécurité (Manuelle). | L2 | Contrôle équivalent |
4 | cis-1.8 | ||
4.1 | Fichiers de configuration du nœud de calcul | ||
4.1.1 | Assurez-vous que les autorisations du fichier du service kubelet sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Échec |
4.1.2 | Assurez-vous que la propriété du fichier du service kubelet est définie sur root:root (Automatisée). |
L1 | Réussite |
4.1.3 | Si le fichier kubeconfig du proxy existe, assurez-vous que les autorisations sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Réussite |
4.1.4 | Si le fichier kubeconfig du proxy existe, assurez-vous que la définition du propriétaire est définie sur root:root (Manuelle). |
L1 | Réussite |
4.1.5 | Assurez-vous que les autorisations du fichier --kubeconfig kubelet. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
4.1.6 | Assurez-vous que la propriété du fichier --kubeconfig kubelet. conf est définie sur root:root (Automatisée). |
L1 | Réussite |
4.1.7 | Assurez-vous que les autorisations du fichier des autorités de certification sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Échec |
4.1.8 | Assurez-vous que la propriété du fichier des autorités de certification du client est définie sur root:root (Manuelle). |
L1 | Réussite |
4.1.9 | Si le fichier de configuration config. yaml de kubelet est utilisé, vérifiez que les autorisations sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Échec |
4.1.10 | Si le fichier de configuration config. yaml de kubelet est utilisé, vérifiez que la propriété du fichier est définie sur root:root (Automatisée). |
L1 | Réussite |
4.2 | Kubelet | ||
4.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Automatisée). |
L1 | Réussite |
4.2.2 | Assurez-vous que l'argument --authorization-mode n'est pas défini sur "AlwaysAllow" (Automatisée). |
L1 | Réussite |
4.2.3 | Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
4.2.4 | Vérifiez que l'argument --read-only-port est défini sur 0 (Manuelle). |
L1 | Réussite |
4.2.5 | Assurez-vous que l'argument --streaming-connection-idle-timeout n'est pas défini sur 0 (Manuelle). |
L1 | Réussite |
4.2.6 | Assurez-vous que l'argument --make-iptables-util-chains est défini sur "true" (Automatisée). |
L1 | Échec |
4.2.7 | Assurez-vous que l'argument --hostname-override n'est pas défini (Manuelle). |
L1 | Réussite |
4.2.8 | Assurez-vous que l'argument eventRecordRPS est défini sur un niveau garantissant une capture d'événement appropriée (Manuelle). | L1 | Réussite |
4.2.9 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Manuelle). |
L2 | Contrôle équivalent |
4.2.10 | Assurez-vous que l'argument --rotate-certificates n'est pas défini sur "false" (Manuelle). |
L1 | Contrôle équivalent |
4.2.11 | Vérifiez que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Manuelle). | L1 | Réussite |
4.2.12 | Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Réussite |
4.2.13 | Assurez-vous qu'une limite est définie pour les PID des pods (Manuelle). | L1 | Avertissement |
1.28
# | Recommandation | Level | État |
---|---|---|---|
1 | cis-1.7 | ||
1.1 | Fichiers de configuration de nœud du plan de contrôle | ||
1.1.1 | Assurez-vous que les autorisations du fichier de spécification du pod du serveur d'API sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.2 | Assurez-vous que la propriété du fichier de spécification du pod du serveur d'API est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.3 | Assurez-vous que les autorisations du fichier de spécification du pod du gestionnaire de contrôleurs sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.4 | Assurez-vous que la propriété du fichier de spécification du pod du gestionnaire de contrôleurs est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.5 | Assurez-vous que les autorisations du fichier de spécification du pod du programmeur sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.6 | Assurez-vous que la propriété du fichier de spécification du pod du programmeur est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.7 | Assurez-vous que les autorisations du fichier de spécification du pod d'etcd sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.8 | Assurez-vous que la propriété du fichier de spécification du pod d'etcd est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.9 | Assurez-vous que les autorisations du fichier de la Container Network Interface sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent |
1.1.10 | Assurez-vous que la propriété du fichier de la Container Network Interface est définie sur root:root (Manuelle). |
L1 | Réussite |
1.1.11 | Assurez-vous que les autorisations du répertoire de données d'etcd sont définies sur 700 ou sur une option plus restrictive (Automatisée). |
L1 | Contrôle équivalent |
1.1.12 | Assurez-vous que la propriété du répertoire de données d'etcd est définie sur etcd:etcd (Automatisée). |
L1 | Contrôle équivalent |
1.1.13 | Assurez-vous que les autorisations du fichier admin. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.14 | Assurez-vous que la propriété du fichier admin. conf est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.15 | Assurez-vous que les autorisations du fichier scheduler. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.16 | Assurez-vous que la propriété du fichier scheduler. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.17 | Assurez-vous que les autorisations du fichier controller-manager. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.18 | Assurez-vous que la propriété du fichier controller-manager. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.19 | Assurez-vous que la propriété du fichier et du répertoire PKI de Kubernetes est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.20 | Assurez-vous que les autorisations du fichier de certificat PKI de Kubernetes sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent |
1.1.21 | Assurez-vous que les autorisations du fichier de clé PKI de Kubernetes sont définies sur 600 (Manuelle). |
L1 | Contrôle équivalent |
1.2 | Serveur d'API | ||
1.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). |
L1 | Avertir |
1.2.2 | Assurez-vous que le paramètre --token-auth-file n'est pas défini (Automatisée). |
L1 | Réussite |
1.2.3 | Assurez-vous que le paramètre -- DenyServiceExternalIPs est défini (Manuelle). |
L1 | Contrôle équivalent |
1.2.4 | Assurez-vous que les arguments --kubelet-client-certificate et --kubelet-client-key sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.5 | Assurez-vous que l'argument --kubelet-certificate-authority est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.6 | Assurez-vous que l'argument --authorization-mode n'est pas défini sur "AlwaysAllow" (Automatisée). |
L1 | Réussite |
1.2.7 | Assurez-vous que l'argument --authorization-mode inclut "Node" (Automatisée). |
L1 | Réussite |
1.2.8 | Assurez-vous que l'argument --authorization-mode inclut "RBAC" (Automatisée). |
L1 | Réussite |
1.2.9 | Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). | L1 | Avertissement |
1.2.10 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysAdmit" n'est pas défini (Automatisée). | L1 | Réussite |
1.2.11 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). | L1 | Avertissement |
1.2.12 | Assurez-vous que le plug-in de contrôle d'admission "SecurityContextDeny" est défini si "PodSecurityPolicy" n'est pas utilisé (Manuelle). | L1 | Avertir |
1.2.13 | Assurez-vous que le plug-in de contrôle d'admission "ServiceAccount" est défini (Automatisée). | L1 | Avertissement |
1.2.14 | Assurez-vous que le plug-in de contrôle d'admission "NamespaceLifecycle" est défini (Automatisée). | L1 | Réussite |
1.2.15 | Assurez-vous que le plug-in de contrôle d'admission "NodeRestriction" est défini (Automatisée). | L1 | Réussite |
1.2.16 | Assurez-vous que l'argument --secure-port n'est pas défini sur 0 . Remarque : Cette recommandation est obsolète et sera supprimée conformément au processus de consensus (Manuelle). |
L1 | Réussite |
1.2.17 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.2.18 | Assurez-vous que l'argument --audit-log-path est défini (Automatisée). |
L1 | Réussite |
1.2.19 | Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.20 | Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). |
L1 | Échec |
1.2.21 | Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.22 | Assurez-vous que l'argument --request-timeout est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.2.23 | Assurez-vous que l'argument --service-account-lookup est défini sur "true" (Automatisée). |
L1 | Réussite |
1.2.24 | Assurez-vous que l'argument --service-account-key-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.25 | Assurez-vous que les arguments --etcd-certfile et --etcd-keyfile sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.26 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.27 | Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.28 | Assurez-vous que l'argument --etcd-cafile est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.29 | Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.2.30 | Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). | L1 | Réussite |
1.2.31 | Assurez-vous que le serveur d'API utilise uniquement des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Réussite |
1.3 | Gestionnaire de contrôleurs | ||
1.3.1 | Assurez-vous que l'argument --terminated-pod-gc-threshold est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.3.2 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.3.3 | Assurez-vous que l'argument --use-service-account-credentials est défini sur "true" (Automatisée). |
L1 | Réussite |
1.3.4 | Assurez-vous que l'argument --service-account-private-key-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.3.5 | Assurez-vous que l'argument --root-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.3.6 | Assurez-vous que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Automatisée). | L2 | Réussite |
1.3.7 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertissement |
1.4 | Scheduler | ||
1.4.1 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.4.2 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertissement |
2 | cis-1.7 | ||
2 | Configuration du nœud etcd | ||
2.1 | Assurez-vous que les arguments --cert-file et --key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
2.2 | Assurez-vous que l'argument --client-cert-auth est défini sur "true" (Automatisée). |
L1 | Réussite |
2,3 | Assurez-vous que l'argument --auto-tls n'est pas défini sur "true" (Automatisée). |
L1 | Réussite |
2.4 | Assurez-vous que les arguments --peer-cert-file et --peer-key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
2.5 | Assurez-vous que l'argument --peer-client-cert-auth est défini sur "true" (Automatisée). |
L1 | Réussite |
2.6 | Assurez-vous que l'argument --peer-auto-tls n'est pas défini sur "true" (Automatisée). |
L1 | Réussite |
2.7 | Assurez-vous qu'une autorité de certification unique est utilisée pour etcd (Manuelle). | L2 | Réussite |
3 | cis-1.7 | ||
3.1 | Authentification et autorisation | ||
3.1.1 | L'authentification par certificat client ne doit pas être utilisée pour les utilisateurs (Manuelle). | L2 | Réussite |
3.1.2 | L'authentification par jeton de compte de service ne doit pas être utilisée pour les utilisateurs (Manuelle). | L1 | Réussite |
3.1.3 | L'authentification par jeton d'amorçage ne doit pas être utilisée pour les utilisateurs (Manuelle). | L1 | Réussite |
3.2 | Logging | ||
3.2.1 | Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). | L1 | Réussite |
3.2.2 | Assurez-vous que la stratégie d'audit couvre les principaux problèmes de sécurité (Manuelle). | L2 | Contrôle équivalent |
4 | cis-1.7 | ||
4.1 | Fichiers de configuration du nœud de calcul | ||
4.1.1 | Assurez-vous que les autorisations du fichier du service kubelet sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Échec |
4.1.2 | Assurez-vous que la propriété du fichier du service kubelet est définie sur root:root (Automatisée). |
L1 | Réussite |
4.1.3 | Si le fichier kubeconfig du proxy existe, assurez-vous que les autorisations sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Réussite |
4.1.4 | Si le fichier kubeconfig du proxy existe, assurez-vous que la définition du propriétaire est définie sur root:root (Manuelle). |
L1 | Réussite |
4.1.5 | Assurez-vous que les autorisations du fichier --kubeconfig kubelet. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
4.1.6 | Assurez-vous que la propriété du fichier --kubeconfig kubelet. conf est définie sur root:root (Automatisée). |
L1 | Réussite |
4.1.7 | Assurez-vous que les autorisations du fichier des autorités de certification sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Échec |
4.1.8 | Assurez-vous que la propriété du fichier des autorités de certification du client est définie sur root:root (Manuelle). |
L1 | Réussite |
4.1.9 | Si le fichier de configuration config. yaml de kubelet est utilisé, vérifiez que les autorisations sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Échec |
4.1.10 | Si le fichier de configuration config. yaml de kubelet est utilisé, vérifiez que la propriété du fichier est définie sur root:root (Manuelle). |
L1 | Réussite |
4.2 | Kubelet | ||
4.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Automatisée). |
L1 | Réussite |
4.2.2 | Assurez-vous que l'argument --authorization-mode n'est pas défini sur "AlwaysAllow" (Automatisée). |
L1 | Réussite |
4.2.3 | Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
4.2.4 | Vérifiez que l'argument --read-only-port est défini sur 0 (Manuelle). |
L1 | Réussite |
4.2.5 | Assurez-vous que l'argument --streaming-connection-idle-timeout n'est pas défini sur 0 (Manuelle). |
L1 | Réussite |
4.2.6 | Assurez-vous que l'argument --make-iptables-util-chains est défini sur "true" (Automatisée). |
L1 | Échec |
4.2.7 | Assurez-vous que l'argument --hostname-override n'est pas défini (Manuelle). |
L1 | Réussite |
4.2.8 | Assurez-vous que l'argument eventRecordRPS est défini sur un niveau garantissant une capture d'événement appropriée (Manuelle). | L1 | Réussite |
4.2.9 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Manuelle). |
L2 | Contrôle équivalent |
4.2.10 | Assurez-vous que l'argument --rotate-certificates n'est pas défini sur "false" (Manuelle). |
L1 | Contrôle équivalent |
4.2.11 | Vérifiez que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Manuelle). | L1 | Réussite |
4.2.12 | Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Réussite |
4.2.13 | Assurez-vous qu'une limite est définie pour les PID des pods (Manuelle). | L1 | Avertissement |
1.16
# | Recommandation | Level | État |
---|---|---|---|
1 | cis-1.23 | ||
1.1 | Fichiers de configuration de nœud du plan de contrôle | ||
1.1.1 | Assurez-vous que les autorisations du fichier de spécification du pod du serveur d'API sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.2 | Assurez-vous que la propriété du fichier de spécification du pod du serveur d'API est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.3 | Assurez-vous que les autorisations du fichier de spécification du pod du gestionnaire de contrôleurs sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.4 | Assurez-vous que la propriété du fichier de spécification du pod du gestionnaire de contrôleurs est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.5 | Assurez-vous que les autorisations du fichier de spécification du pod du programmeur sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.6 | Assurez-vous que la propriété du fichier de spécification du pod du programmeur est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.7 | Assurez-vous que les autorisations du fichier de spécification du pod d'etcd sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.8 | Assurez-vous que la propriété du fichier de spécification du pod d'etcd est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.9 | Assurez-vous que les autorisations du fichier de la Container Network Interface sont définies sur 644 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent |
1.1.10 | Assurez-vous que la propriété du fichier de la Container Network Interface est définie sur root:root (Manuelle). |
L1 | Réussite |
1.1.11 | Assurez-vous que les autorisations du répertoire de données d'etcd sont définies sur 700 ou sur une option plus restrictive (Automatisée). |
L1 | Contrôle équivalent |
1.1.12 | Assurez-vous que la propriété du répertoire de données d'etcd est définie sur etcd:etcd (Automatisée). |
L1 | Contrôle équivalent |
1.1.13 | Assurez-vous que les autorisations du fichier admin. conf sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.14 | Assurez-vous que la propriété du fichier admin. conf est définie sur root:root (Automatisée). |
L1 | Réussite |
1.1.15 | Assurez-vous que les autorisations du fichier scheduler. conf sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.16 | Assurez-vous que la propriété du fichier scheduler. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.17 | Assurez-vous que les autorisations du fichier controller-manager. conf sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
1.1.18 | Assurez-vous que la propriété du fichier controller-manager. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.19 | Assurez-vous que la propriété du fichier et du répertoire PKI de Kubernetes est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent |
1.1.20 | Assurez-vous que les autorisations du fichier de certificat PKI de Kubernetes sont définies sur 644 ou sur une option plus restrictive (Manuelle). |
L1 | Réussite |
1.1.21 | Assurez-vous que les autorisations du fichier de clé PKI de Kubernetes sont définies sur 600 (Manuelle). |
L1 | Contrôle équivalent |
1.2 | Serveur d'API | ||
1.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). |
L1 | Avertir |
1.2.2 | Assurez-vous que le paramètre --token-auth-file n'est pas défini (Automatisée). |
L1 | Réussite |
1.2.3 | Assurez-vous que le paramètre -- DenyServiceExternalIPs n'est pas défini (Automatisé). |
L1 | Réussite |
1.2.4 | Assurez-vous que l'argument --kubelet-https est défini sur "true" (Automatisée). |
L1 | Réussite |
1.2.5 | Assurez-vous que les arguments --kubelet-client-certificate et --kubelet-client-key sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.6 | Assurez-vous que l'argument --kubelet-certificate-authority est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.7 | Assurez-vous que l'argument --authorization-mode n'est pas défini sur "AlwaysAllow" (Automatisée). |
L1 | Réussite |
1.2.8 | Assurez-vous que l'argument --authorization-mode inclut "Node" (Automatisée). |
L1 | Réussite |
1.2.9 | Assurez-vous que l'argument --authorization-mode inclut "RBAC" (Automatisée). |
L1 | Réussite |
1.2.10 | Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). | L1 | Avertissement |
1.2.11 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysAdmit" n'est pas défini (Automatisée). | L1 | Réussite |
1.2.12 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). | L1 | Avertir |
1.2.13 | Assurez-vous que le plug-in de contrôle d'admission "SecurityContextDeny" est défini si "PodSecurityPolicy" n'est pas utilisé (Manuelle). | L1 | Avertissement |
1.2.14 | Assurez-vous que le plug-in de contrôle d'admission "ServiceAccount" est défini (Automatisée). | L1 | Réussite |
1.2.15 | Assurez-vous que le plug-in de contrôle d'admission "NamespaceLifecycle" est défini (Automatisée). | L1 | Réussite |
1.2.16 | Assurez-vous que le plug-in de contrôle d'admission "NodeRestriction" est défini (Automatisée). | L1 | Réussite |
1.2.17 | Assurez-vous que l'argument --secure-port n'est pas défini sur 0 (Automatisée). |
L1 | Réussite |
1.2.18 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.2.19 | Assurez-vous que l'argument --audit-log-path est défini (Automatisée). |
L1 | Échec |
1.2.20 | Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). |
L1 | Échec |
1.2.21 | Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). |
L1 | Échec |
1.2.22 | Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). |
L1 | Échec |
1.2.23 | Assurez-vous que l'argument --request-timeout est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.2.24 | Assurez-vous que l'argument --service-account-lookup est défini sur "true" (Automatisée). |
L1 | Réussite |
1.2.25 | Assurez-vous que l'argument --service-account-key-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.26 | Assurez-vous que les arguments --etcd-certfile et --etcd-keyfile sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.27 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.28 | Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.29 | Assurez-vous que l'argument --etcd-cafile est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.2.30 | Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.2.31 | Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). | L1 | Réussite |
1.2.32 | Assurez-vous que le serveur d'API utilise uniquement des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Réussite |
1.3 | Gestionnaire de contrôleurs | ||
1.3.1 | Assurez-vous que l'argument --terminated-pod-gc-threshold est défini de la manière appropriée (Manuelle). |
L1 | Réussite |
1.3.2 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.3.3 | Assurez-vous que l'argument --use-service-account-credentials est défini sur "true" (Automatisée). |
L1 | Réussite |
1.3.4 | Assurez-vous que l'argument --service-account-private-key-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.3.5 | Assurez-vous que l'argument --root-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
1.3.6 | Assurez-vous que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Automatisée). | L2 | Réussite |
1.3.7 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Réussite |
1.4 | Scheduler | ||
1.4.1 | Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). |
L1 | Réussite |
1.4.2 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Réussite |
2 | cis-1.23 | ||
2 | Configuration du nœud etcd | ||
2.1 | Assurez-vous que les arguments --cert-file et --key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
2.2 | Assurez-vous que l'argument --client-cert-auth est défini sur "true" (Automatisée). |
L1 | Réussite |
2,3 | Assurez-vous que l'argument --auto-tls n'est pas défini sur "true" (Automatisée). |
L1 | Réussite |
2.4 | Assurez-vous que les arguments --peer-cert-file et --peer-key-file sont définis de la manière appropriée (Automatisée). |
L1 | Réussite |
2.5 | Assurez-vous que l'argument --peer-client-cert-auth est défini sur "true" (Automatisée). |
L1 | Réussite |
2.6 | Assurez-vous que l'argument --peer-auto-tls n'est pas défini sur "true" (Automatisée). |
L1 | Réussite |
2.7 | Assurez-vous qu'une autorité de certification unique est utilisée pour etcd (Manuelle). | L2 | Réussite |
3 | cis-1.23 | ||
3.1 | Authentification et autorisation | ||
3.1.1 | L'authentification par certificat client ne doit pas être utilisée pour les utilisateurs (Manuelle). | L2 | Réussite |
3.2 | Logging | ||
3.2.1 | Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). | L1 | Réussite |
3.2.2 | Assurez-vous que la stratégie d'audit couvre les principaux problèmes de sécurité (Manuelle). | L2 | Contrôle équivalent |
4 | cis-1.23 | ||
4.1 | Fichiers de configuration du nœud de calcul | ||
4.1.1 | Assurez-vous que les autorisations du fichier du service kubelet sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
4.1.2 | Assurez-vous que la propriété du fichier du service kubelet est définie sur root:root (Automatisée). |
L1 | Réussite |
4.1.3 | Si le fichier kubeconfig du proxy existe, assurez-vous que les autorisations sont définies sur 644 ou sur une option plus restrictive (Manuelle). |
L1 | Réussite |
4.1.4 | Si le fichier kubeconfig du proxy existe, assurez-vous que la définition du propriétaire est définie sur root:root (Manuelle). |
L1 | Réussite |
4.1.5 | Assurez-vous que les autorisations du fichier --kubeconfig kubelet. conf sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
4.1.6 | Assurez-vous que la propriété du fichier --kubeconfig kubelet. conf est définie sur root:root (Automatisée). |
L1 | Réussite |
4.1.7 | Assurez-vous que les autorisations du fichier des autorités de certification sont définies sur 644 ou sur une option plus restrictive (Manuelle). |
L1 | Réussite |
4.1.8 | Assurez-vous que la propriété du fichier des autorités de certification du client est définie sur root:root (Manuelle). |
L1 | Réussite |
4.1.9 | Assurez-vous que les autorisations du fichier de configuration --config du service kubelet sont définies sur 644 ou sur une option plus restrictive (Automatisée). |
L1 | Réussite |
4.1.10 | Assurez-vous que la propriété du fichier de configuration --config du service kubelet est définie sur root:root (Automatisée). |
L1 | Réussite |
4.2 | Kubelet | ||
4.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Automatisée). |
L1 | Réussite |
4.2.2 | Assurez-vous que l'argument --authorization-mode n'est pas défini sur "AlwaysAllow" (Automatisée). |
L1 | Réussite |
4.2.3 | Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). |
L1 | Réussite |
4.2.4 | Assurez-vous que l'argument --read-only-port est défini sur 0 (Manuelle). |
L1 | Échec |
4.2.5 | Assurez-vous que l'argument --streaming-connection-idle-timeout n'est pas défini sur 0 (Manuelle). |
L1 | Réussite |
4.2.6 | Assurez-vous que l'argument --protect-kernel-defaults est défini sur "true" (Automatisée). |
L1 | Échec |
4.2.7 | Assurez-vous que l'argument --make-iptables-util-chains est défini sur "true" (Automatisée). |
L1 | Réussite |
4.2.8 | Assurez-vous que l'argument --hostname-override n'est pas défini (Manuelle). |
L1 | Réussite |
4.2.9 | Assurez-vous que l'argument --event-qps est défini sur 0 ou un niveau garantissant une capture d'événement appropriée (Manuelle). |
L2 | Avertir |
4.2.10 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Manuelle). |
L1 | Contrôle équivalent |
4.2.11 | Assurez-vous que l'argument --rotate-certificates n'est pas défini sur "false" (Manuelle). |
L1 | Réussite |
4.2.12 | Vérifiez que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Manuelle). | L1 | Réussite |
4.2.13 | Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Contrôle équivalent |
Défaillances et contrôles équivalents pour un cluster d'administrateur GKE on Bare Metal :
1.29
# | Recommandation | Level | État | Value | Justification |
---|---|---|---|---|---|
1.1.9 | Assurez-vous que les autorisations du fichier de la Container Network Interface sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent | 755 |
Le chemin d'accès à la Container Network Interface des clusters Anthos sur Bare Metal est /opt/cni/bin et son autorisation est définie sur 755 pour le fonctionnement normal du cluster. |
1.1.11 | Assurez-vous que les autorisations du répertoire de données d'etcd sont définies sur 700 ou sur une option plus restrictive (Automatisée). |
L1 | Contrôle équivalent | 755 |
Le répertoire de données etcd dispose des autorisations 755 par défaut, mais ses sous-répertoires sont 700 . |
1.1.12 | Assurez-vous que la propriété du répertoire de données d'etcd est définie sur etcd:etcd (Automatisée). |
L1 | Contrôle équivalent | 2003:2003 |
Le répertoire de données etcd, /var/lib/etcd, est détenu par 2003:2003 en raison d'un plan de contrôle sans racine afin de renforcer la sécurité. |
1.1.16 | Assurez-vous que la propriété du fichier scheduler. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | 2002:2002 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.18 | Assurez-vous que la propriété du fichier controller-manager. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | 2001:2001 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.19 | Assurez-vous que la propriété du fichier et du répertoire PKI de Kubernetes est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | variable:variable |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.20 | Assurez-vous que les autorisations du fichier de certificat PKI de Kubernetes sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent | 644 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.21 | Assurez-vous que les autorisations du fichier de clé PKI de Kubernetes sont définies sur 600 (Manuelle). |
L1 | Contrôle équivalent | 600~640 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). |
L1 | Avertir | non défini | Certains clusters Anthos sur Bare Metal (les clusters haute disponibilité par exemple) nécessitent l'activation de l'authentification anonyme. |
1.2.3 | Assurez-vous que le paramètre -- DenyServiceExternalIPs est défini (Manuelle). |
L1 | Contrôle équivalent | non défini | Activé par défaut dans les versions Kubernetes 1.25 et ultérieures. |
1.2.9 | Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). | L1 | Avertir | non défini | À corriger dans les prochaines versions. |
1.2.11 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). | L1 | Avertir | non défini | Le contrôleur d'admission AlwaysPullImages fournit une protection pour les images de registre privé dans des clusters mutualisés non coopératifs, et pour ce faire, il fait en sorte que les registres de conteneurs soient un point de défaillance unique pour la création des pods sur l'ensemble du cluster. Les clusters Anthos sur Bare Metal n'activent pas le contrôleur d'admission AlwaysPullImages et ce sont donc les administrateurs du cluster qui décident de la mise en œuvre de la règle d'admission. |
1.2.12 | Assurez-vous que le plug-in de contrôle d'admission "SecurityContextDeny" est défini si "PodSecurityPolicy" n'est pas utilisé (Manuelle). | L1 | Avertir | non défini | Les clusters Anthos sur bare metal n'activent pas les règles de sécurité des pods. L'admission de sécurité du pod est activée par défaut dans les clusters Kubernetes 1.23. Consultez la page https://kubernetes.io/docs/concepts/security/pod-security-admission/. |
1.2.13 | Assurez-vous que le plug-in de contrôle d'admission "ServiceAccount" est défini (Automatisée). | L1 | Avertir | non défini | À corriger dans les prochaines versions. |
1.3.7 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertir | non défini | À corriger dans les prochaines versions. |
1.4.2 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertir | non défini | À corriger dans les prochaines versions. |
3.2.2 | Assurez-vous que la stratégie d'audit couvre les principaux problèmes de sécurité (Manuelle). | L2 | Contrôle équivalent | non défini | Les clusters Anthos sur bare metal capturent les journaux d'audit, mais n'utilisent pas ces options pour les audits, et davantage pour la journalisation et la surveillance. |
4.1.1 | Assurez-vous que les autorisations du fichier du service kubelet sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Échec | 644 | À corriger dans les prochaines versions. |
4.1.7 | Assurez-vous que les autorisations du fichier des autorités de certification sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Échec | 644 | À corriger dans les prochaines versions. |
4.1.9 | Si le fichier de configuration config. yaml de kubelet est utilisé, vérifiez que les autorisations sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Échec | 644 | À corriger dans les prochaines versions. |
4.2.6 | Assurez-vous que l'argument --make-iptables-util-chains est défini sur "true" (Automatisée). |
L1 | Échec | false |
Les machines de cluster Anthos sur bare metal ne protègent pas les valeurs par défaut du noyau de Kubernetes, car les charges de travail clientes sont susceptibles de les modifier. |
4.2.9 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Manuelle). |
L2 | Contrôle équivalent | non défini | Les clusters Anthos sur bare metal gèrent le protocole TLS du serveur kubelet à l'aide de l'option --rotate-server-certificates . |
4.2.10 | Assurez-vous que l'argument --rotate-certificates n'est pas défini sur "false" (Manuelle). |
L1 | Contrôle équivalent | non défini | Les clusters Anthos sur Bare Metal gèrent le protocole TLS du serveur kubelet en utilisant l'option --rotate-server-certificates. |
4.2.13 | Assurez-vous qu'une limite est définie pour les PID des pods (Manuelle). | L1 | Avertir | non défini | Le paramètre --pod-max-pids de kubelet de clusters Anthos sur bare metal n'est pas défini par défaut. Par conséquent, aucune limite explicite n'est appliquée au nombre de PID qu'un pod peut utiliser. Le pod hérite de la limite PID globale de l'hôte, qui est généralement définie par le paramètre de kernel pid_max du système d'exploitation. Le système d'exploitation appartient à l'utilisateur. |
1.28
# | Recommandation | Level | État | Value | Justification |
---|---|---|---|---|---|
1.1.9 | Assurez-vous que les autorisations du fichier de la Container Network Interface sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent | 755 |
Le chemin d'accès à la Container Network Interface des clusters Anthos sur Bare Metal est /opt/cni/bin et son autorisation est définie sur 755 pour le fonctionnement normal du cluster. |
1.1.11 | Assurez-vous que les autorisations du répertoire de données d'etcd sont définies sur 700 ou sur une option plus restrictive (Automatisée). |
L1 | Contrôle équivalent | 755 |
Le répertoire de données etcd dispose des autorisations 755 par défaut, mais ses sous-répertoires sont 700 . |
1.1.12 | Assurez-vous que la propriété du répertoire de données d'etcd est définie sur etcd:etcd (Automatisée). |
L1 | Contrôle équivalent | 2003:2003 |
Le répertoire de données etcd, /var/lib/etcd, est détenu par 2003:2003 en raison d'un plan de contrôle sans racine afin de renforcer la sécurité. |
1.1.16 | Assurez-vous que la propriété du fichier scheduler. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | 2002:2002 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.18 | Assurez-vous que la propriété du fichier controller-manager. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | 2001:2001 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.19 | Assurez-vous que la propriété du fichier et du répertoire PKI de Kubernetes est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | variable:variable |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.20 | Assurez-vous que les autorisations du fichier de certificat PKI de Kubernetes sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent | 644 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.21 | Assurez-vous que les autorisations du fichier de clé PKI de Kubernetes sont définies sur 600 (Manuelle). |
L1 | Contrôle équivalent | 600~640 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). |
L1 | Avertir | non défini | Certains clusters Anthos sur Bare Metal (les clusters haute disponibilité par exemple) nécessitent l'activation de l'authentification anonyme. |
1.2.3 | Assurez-vous que le paramètre -- DenyServiceExternalIPs est défini (Manuelle). |
L1 | Contrôle équivalent | non défini | Activé par défaut dans les versions Kubernetes 1.25 et ultérieures. |
1.2.9 | Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). | L1 | Avertir | non défini | À corriger dans les prochaines versions. |
1.2.11 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). | L1 | Avertir | non défini | Le contrôleur d'admission AlwaysPullImages fournit une protection pour les images de registre privé dans des clusters mutualisés non coopératifs, et pour ce faire, il fait en sorte que les registres de conteneurs soient un point de défaillance unique pour la création des pods sur l'ensemble du cluster. Les clusters Anthos sur Bare Metal n'activent pas le contrôleur d'admission AlwaysPullImages et ce sont donc les administrateurs du cluster qui décident de la mise en œuvre de la règle d'admission. |
1.2.12 | Assurez-vous que le plug-in de contrôle d'admission "SecurityContextDeny" est défini si "PodSecurityPolicy" n'est pas utilisé (Manuelle). | L1 | Avertir | non défini | Les clusters Anthos sur bare metal n'activent pas les règles de sécurité des pods. L'admission de sécurité du pod est activée par défaut dans les clusters Kubernetes 1.23. Consultez la page https://kubernetes.io/docs/concepts/security/pod-security-admission/. |
1.2.13 | Assurez-vous que le plug-in de contrôle d'admission "ServiceAccount" est défini (Automatisée). | L1 | Avertir | non défini | À corriger dans les prochaines versions. |
1.2.20 | Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). |
L1 | Échec | 1 | À corriger dans les prochaines versions. |
1.3.7 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertir | non défini | À corriger dans les prochaines versions. |
1.4.2 | Assurez-vous que l'argument --bind-address est défini sur 127.0.0.1 (Automatisée). |
L1 | Avertir | non défini | À corriger dans les prochaines versions. |
3.2.2 | Assurez-vous que la stratégie d'audit couvre les principaux problèmes de sécurité (Manuelle). | L2 | Contrôle équivalent | non défini | Les clusters Anthos sur bare metal capturent les journaux d'audit, mais n'utilisent pas ces options pour les audits, et davantage pour la journalisation et la surveillance. |
4.1.1 | Assurez-vous que les autorisations du fichier du service kubelet sont définies sur 600 ou sur une option plus restrictive (Automatisée). |
L1 | Échec | 644 | À corriger dans les prochaines versions. |
4.1.7 | Assurez-vous que les autorisations du fichier des autorités de certification sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Échec | 644 | À corriger dans les prochaines versions. |
4.1.9 | Si le fichier de configuration config. yaml de kubelet est utilisé, vérifiez que les autorisations sont définies sur 600 ou sur une option plus restrictive (Manuelle). |
L1 | Échec | 644 | À corriger dans les prochaines versions. |
4.2.6 | Assurez-vous que l'argument --make-iptables-util-chains est défini sur "true" (Automatisée). |
L1 | Échec | false |
Les machines de cluster Anthos sur bare metal ne protègent pas les valeurs par défaut du noyau de Kubernetes, car les charges de travail clientes sont susceptibles de les modifier. |
4.2.9 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Manuelle). |
L2 | Contrôle équivalent | non défini | Les clusters Anthos sur bare metal gèrent le protocole TLS du serveur kubelet à l'aide de l'option --rotate-server-certificates . |
4.2.10 | Assurez-vous que l'argument --rotate-certificates n'est pas défini sur "false" (Manuelle). |
L1 | Contrôle équivalent | non défini | Les clusters Anthos sur Bare Metal gèrent le protocole TLS du serveur kubelet en utilisant l'option --rotate-server-certificates. |
4.2.13 | Assurez-vous qu'une limite est définie pour les PID des pods (Manuelle). | L1 | Avertir | non défini | Le paramètre --pod-max-pids de kubelet de clusters Anthos sur bare metal n'est pas défini par défaut. Par conséquent, aucune limite explicite n'est appliquée au nombre de PID qu'un pod peut utiliser. Le pod hérite de la limite PID globale de l'hôte, qui est généralement définie par le paramètre de kernel pid_max du système d'exploitation. Le système d'exploitation appartient à l'utilisateur. |
1.16
# | Recommandation | Level | État | Value | Justification |
---|---|---|---|---|---|
1.1.9 | Assurez-vous que les autorisations du fichier de la Container Network Interface sont définies sur 644 ou sur une option plus restrictive (Manuelle). |
L1 | Contrôle équivalent | 755 |
Le chemin d'accès à la Container Network Interface des clusters Anthos sur Bare Metal est /opt/cni/bin et son autorisation est définie sur 755 pour le fonctionnement normal du cluster. |
1.1.11 | Assurez-vous que les autorisations du répertoire de données d'etcd sont définies sur 700 ou sur une option plus restrictive (Automatisée). |
L1 | Contrôle équivalent | 755 |
Le répertoire de données etcd dispose des autorisations 755 par défaut, mais ses sous-répertoires sont 700 . |
1.1.12 | Assurez-vous que la propriété du répertoire de données d'etcd est définie sur etcd:etcd (Automatisée). |
L1 | Contrôle équivalent | 2003:2003 |
Le répertoire de données etcd, /var/lib/etcd, est détenu par 2003:2003 en raison d'un plan de contrôle sans racine afin de renforcer la sécurité. |
1.1.16 | Assurez-vous que la propriété du fichier scheduler. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | 2002:2002 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.18 | Assurez-vous que la propriété du fichier controller-manager. conf est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | 2001:2001 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.19 | Assurez-vous que la propriété du fichier et du répertoire PKI de Kubernetes est définie sur root:root (Automatisée). |
L1 | Contrôle équivalent | variable:variable |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.1.21 | Assurez-vous que les autorisations du fichier de clé PKI de Kubernetes sont définies sur 600 (Manuelle). |
L1 | Contrôle équivalent | 600~640 |
À partir de la version 1.9.0, les clusters Anthos sur bare metal implémentent un plan de contrôle sans racine pour plus de sécurité. |
1.2.1 | Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). |
L1 | Avertir | non défini | Certains clusters Anthos sur Bare Metal (les clusters haute disponibilité par exemple) nécessitent l'activation de l'authentification anonyme. |
1.2.10 | Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). | L1 | Avertissement | ||
1.2.12 | Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). | L1 | Avertir | non défini | Le contrôleur d'admission AlwaysPullImages fournit une protection pour les images de registre privé dans des clusters mutualisés non coopératifs, et pour ce faire, il fait en sorte que les registres de conteneurs soient un point de défaillance unique pour la création des pods sur l'ensemble du cluster. Les clusters Anthos sur Bare Metal n'activent pas le contrôleur d'admission AlwaysPullImages et ce sont donc les administrateurs du cluster qui décident de la mise en œuvre de la règle d'admission. |
1.2.13 | Assurez-vous que le plug-in de contrôle d'admission "SecurityContextDeny" est défini si "PodSecurityPolicy" n'est pas utilisé (Manuelle). | L1 | Avertir | non défini | Les clusters Anthos sur bare metal n'activent pas les règles de sécurité des pods. L'admission de sécurité du pod est activée par défaut dans les clusters Kubernetes 1.23. Consultez la page https://kubernetes.io/docs/concepts/security/pod-security-admission/. |
1.2.19 | Assurez-vous que l'argument --audit-log-path est défini (Automatisée). |
L1 | Échec | non défini par défaut. Ne définissez /var/log/apiserver/audit.log que si Cloud Audit Logging est désactivé |
Par défaut, les clusters Anthos sur bare metal envoient les journaux d'audit du serveur d'API Kubernetes à Google Cloud. |
1.2.20 | Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). |
L1 | Échec | non défini par défaut. Ne définissez 30 que si Cloud Audit Logging est désactivé |
Par défaut, les clusters Anthos sur bare metal envoient les journaux d'audit du serveur d'API Kubernetes à Google Cloud. |
1.2.21 | Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). |
L1 | Échec | non défini par défaut. Ne définissez 10 que si Cloud Audit Logging est désactivé |
Par défaut, les clusters Anthos sur bare metal envoient les journaux d'audit du serveur d'API Kubernetes à Google Cloud. |
1.2.22 | Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). |
L1 | Échec | non défini par défaut. Ne définissez 100 que si Cloud Audit Logging est désactivé |
Par défaut, les clusters Anthos sur bare metal envoient les journaux d'audit du serveur d'API Kubernetes à Google Cloud. |
3.2.2 | Assurez-vous que la stratégie d'audit couvre les principaux problèmes de sécurité (Manuelle). | L2 | Contrôle équivalent | non défini | Les clusters Anthos sur bare metal capturent les journaux d'audit, mais n'utilisent pas ces options pour les audits, et davantage pour la journalisation et la surveillance. |
4.2.4 | Assurez-vous que l'argument --read-only-port est défini sur 0 (Manuelle). |
L1 | Échec | 10255 | Les clusters Anthos sur bare metal définissent actuellement l'argument --read-only-port sur 10255 pour la collecte de métriques provenant de kubelet. |
4.2.6 | Assurez-vous que l'argument --protect-kernel-defaults est défini sur "true" (Automatisée). |
L1 | Échec | false |
Les machines de cluster Anthos sur bare metal ne protègent pas les valeurs par défaut du noyau de Kubernetes, car les charges de travail clientes sont susceptibles de les modifier. |
4.2.9 | Assurez-vous que l'argument --event-qps est défini sur 0 ou un niveau garantissant une capture d'événement appropriée (Manuelle). |
L2 | Avertir | non défini | Les événements sont des objets Kubernetes stockés dans etcd. Pour éviter de surcharger etcd, ils ne sont conservés qu'une heure et ne constituent pas un mécanisme d'audit de sécurité approprié. Le fait d'autoriser des événements illimités, comme suggéré dans ce contrôle, expose le cluster à un risque de DoS inutile et va à l'encontre de la recommandation d'utiliser le contrôleur d'admission EventRateLimits. Les événements de sécurité nécessitant un stockage permanent doivent être envoyés dans des journaux. |
4.2.10 | Assurez-vous que les arguments --tls-cert-file et --tls-private-key-file sont définis de la manière appropriée (Manuelle). |
L1 | Contrôle équivalent | non défini | Les clusters Anthos sur Bare Metal gèrent le protocole TLS du serveur kubelet en utilisant l'option --rotate-server-certificates. |
4.2.13 | Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). | L1 | Contrôle équivalent | Dans les clusters Anthos sur bare metal, kubelet utilise les suites de chiffrement Go par défaut. Les clusters Anthos sur bare metal ne fournissent pas d'options de configuration permettant aux utilisateurs de personnaliser la sélection des suites de chiffrement. Notez que les clients modernes négocient des suites de chiffrement et n'utiliseront pas les algorithmes de chiffrement faibles si des algorithmes de chiffrement forts sont mutuellement disponibles. |
Comment auditer les benchmarks
Des instructions spécifiques pour l'audit de chaque recommandation sont disponibles dans le benchmark CIS approprié. Toutefois, vous souhaiterez peut-être automatiser certaines de ces vérifications afin de simplifier le contrôle de ces commandes dans votre environnement. Des outils comme celui présenté dans la section suivante peuvent vous y aider.
Audit automatisé du benchmark CIS de Kubernetes
Vous pouvez utiliser un outil Open Source kube-bench
pour tester la configuration de votre cluster vis-à-vis du benchmark CIS de Kubernetes.
Assurez-vous de spécifier la version appropriée, comme illustré dans l'exemple suivant :
kube-bench node --benchmark cis-1.8