Benchmarks CIS

Ce document présente le benchmark CIS de Kubernetes, explique comment auditer votre conformité avec le benchmark et explique ce que GKE On-Prem configure lorsque vous ne pouvez pas mettre en œuvre vous-même une 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

Notez que les numéros de version peuvent différer selon les benchmarks.

Ce document fait référence aux versions suivantes :

Version Anthos Version de Kubernetes Version du benchmark CIS de Kubernetes
1.5.1 1.17.9 1,6

Benchmark CIS de Kubernetes

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 à:

  • être pratiques et prudentes ;
  • fournir un avantage clair en matière de sécurité ;
  • ne pas entraver l'utilité de la technologie au-delà du raisonnable.
  • Niveau 2

    Étend le profil de niveau 1.

    Les recommandations présentent une ou plusieurs des caractéristiques suivantes:

  • Elles sont destinés aux environnements ou aux cas d'utilisation où la sécurité est primordiale.
  • Elles servent de mesures de défense en profondeur.
  • Elles peuvent entraver l'utilité ou les performances de la technologie.
  • É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. Ils sont déterminés et pris en charge comme défini ci-dessous :

    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 GKE On-Prem

    Nous utilisons les valeurs suivantes pour spécifier l'état des recommandations Kubernetes dans GKE On-Prem:

    Status Description
    Réussite Respecte une recommandation du benchmark.
    Échec Ne respecte pas une recommandation du benchmark.
    Contrôle équivalent Ne respecte pas les termes exacts de la recommandation du benchmark, mais d'autres mécanismes dans GKE On-Prem existent pour fournir des contrôles de sécurité équivalents.
    Dépend de l'environnement GKE On-Prem 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 GKE On-Prem

    GKE On-Prem utilise un "cluster d'administrateur" pour gérer un ou plusieurs "clusters d'utilisateur" qui exécutent des charges de travail Kubernetes réelles. Pour plus d'informations sur cette architecture, consultez la présentation de GKE On-Prem. La configuration des clusters d'administrateur et d'utilisateur est évaluée par rapport au benchmark ci-dessous.

    État sur GKE On-Prem

    Lorsque vous créez un cluster GKE On-Prem avec la version spécifiée, voici les performances auxquelles vous pouvez vous attendre par rapport au benchmark CIS de Kubernetes.

    État du cluster d'administrateur GKE On-Prem:

    # Recommandation Level Status
    1 Configuration de la sécurité du nœud maître
    1.1 Fichiers de configuration du nœud maître
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 (Automatisée). L1 Réussite
    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 644 ou sur une option plus restrictive (Automatisée). L1 Contrôle équivalent
    1.1.14 Assurez-vous que la propriété du fichier admin.conf est définie sur root:root (Automatisée). L1 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Réussite
    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 Réussite
    1.2 Serveur d'API
    1.2.1 Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). L1 Échec
    1.2.2 Assurez-vous que l'argument --basic-auth-file n'est pas défini (Automatisée). L1 Réussite
    1.2.3 Assurez-vous que le paramètre --token-auth-file n'est pas défini (Automatisée). 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 Échec
    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 Dépend de l'environnement
    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 Contrôle équivalent
    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 "PodSecurityPolicy" est défini (Automatisée). L1 Contrôle équivalent
    1.2.17 Assurez-vous que le plug-in de contrôle d'admission "NodeRestriction" est défini (Automatisée). L1 Réussite
    1.2.18 Assurez-vous que l'argument --insecure-bind-address n'est pas défini (Automatisée). L1 Réussite
    1.2.19 Assurez-vous que l'argument --insecure-port est défini sur 0 (Automatisée). L1 Réussite
    1.2.20 Assurez-vous que l'argument --secure-port n'est pas défini sur 0 (Automatisée). L1 Réussite
    1.2.21 Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). L1 Réussite
    1.2.22 Assurez-vous que l'argument --audit-log-path est défini (Automatisée). L1 Contrôle équivalent
    1.2.23 Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent
    1.2.24 Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent
    1.2.25 Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent
    1.2.26 Assurez-vous que l'argument --request-timeout est défini de la manière appropriée (Automatisée). L1 Réussite
    1.2.27 Assurez-vous que l'argument --service-account-lookup est défini sur "true" (Automatisée). L1 Réussite
    1.2.28 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.29 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.30 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 Contrôle équivalent
    1.2.31 Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). L1 Réussite
    1.2.32 Assurez-vous que l'argument --etcd-cafile est défini de la manière appropriée (Automatisée). L1 Réussite
    1.2.33 Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). L1 Échec
    1.2.34 Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). L1 Échec
    1.2.35 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 Contrôle équivalent
    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 Configuration du nœud etcd
    2 Fichiers de configuration de 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 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 (Manuelle). L2 Réussite
    3.2 Logging
    3.2.1 Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). L1 Contrôle équivalent
    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 Configuration de la sécurité des nœuds de calcul
    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 Contrôle équivalent
    4.1.4 Assurez-vous que la propriété du fichier kubeconfig du proxy est définie sur root:root (Manuelle). L1 Contrôle équivalent
    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 Contrôle équivalent
    4.1.6 Assurez-vous que la propriété du fichier --kubeconfig kubelet.conf est définie sur root:root (Manuelle). L1 Contrôle équivalent
    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 Échec
    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 Contrôle équivalent
    4.2.13 Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). L1 Contrôle équivalent
    Description des défaillances et des contrôles équivalents pour le cluster d'administrateur GKE On-Prem:
    # Recommandation Level Status Valeur Justification
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 root:root Le conteneur etcd s'exécute en tant que root, et le répertoire de données etcd appartient à root:root.
    1.1.13 Assurez-vous que les autorisations du fichier admin.conf sont définies sur 644 ou sur une option plus restrictive (Automatisée). L1 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    1.1.14 Assurez-vous que la propriété du fichier admin.conf est définie sur root:root (Automatisée). L1 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    1.2.1 Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). L1 Échec Non défini Certains composants de surveillance de GKE On-Prem utilisent l'authentification anonyme pour effectuer des vérifications d'état.
    1.2.10 Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). L1 Échec Non défini GKE On-Prem n'est pas compatible avec le contrôleur d'admission Event Rate Limit, car il s'agit d'une fonctionnalité alpha Kubernetes.
    1.2.12 Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). L1 Dépend de l'environnement 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. GKE On-Prem n'active pas le contrôleur d'admission AlwaysPullImages, 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 Contrôle équivalent Non défini Les règles sur les paramètres de sécurité des pods sont gérées à l'aide de Policy Controller et d'Anthos Config Management.
    1.2.16 Assurez-vous que le plug-in de contrôle d'admission "PodSecurityPolicy" est défini (Automatisée). L1 Contrôle équivalent Non défini Les règles sur les paramètres de sécurité des pods sont gérées à l'aide de Policy Controller et d'Anthos Config Management.
    1.2.22 Assurez-vous que l'argument --audit-log-path est défini (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.23 Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.24 Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.25 Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.30 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 Contrôle équivalent Non défini GKE On-Prem gère le protocole TLS du serveur kubelet à l'aide de l'option --rotate-server-certificates.
    1.2.33 Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). L1 Échec Non défini GKE On-Prem n'est pas encore compatible avec le chiffrement des secrets au niveau de la couche d'application.
    1.2.34 Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). L1 Échec Non défini GKE On-Prem n'est pas encore compatible avec le chiffrement des secrets au niveau de la couche d'application.
    1.3.6 Assurez-vous que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Automatisée). L2 Contrôle équivalent Non défini GKE On-Prem active la rotation des certificats Kubelet en définissant --rotate-server-certificates=true sur les kubelets.
    3.2.1 Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    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 GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    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 Contrôle équivalent Non défini kube-proxy s'exécute en tant que daemonset dans GKE On-Prem et les autorisations sont gérées via RBAC.
    4.1.4 Assurez-vous que la propriété du fichier kubeconfig du proxy est définie sur root:root (Manuelle). L1 Contrôle équivalent Non défini kube-proxy s'exécute en tant que daemonset dans GKE On-Prem et les autorisations sont gérées via RBAC.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    4.1.6 Assurez-vous que la propriété du fichier --kubeconfig kubelet.conf est définie sur root:root (Manuelle). L1 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    4.2.4 Assurez-vous que l'argument --read-only-port est défini sur 0 (Manuelle). L1 Échec 10255 Certains composants de surveillance de GKE On-Prem utilisent le port en lecture seule du kubelet pour obtenir des métriques.
    4.2.6 Assurez-vous que l'argument --protect-kernel-defaults est défini sur "true" (Automatisée). L1 Échec false GKE On-Prem permet à kubelet de définir les paramètres de noyau nécessaires.
    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 Échec 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 GKE On-Prem gère le protocole TLS du serveur kubelet à l'aide de l'option --rotate-server-certificates.
    4.2.12 Vérifiez que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Manuelle). L1 Contrôle équivalent Non défini GKE On-Prem active la rotation des certificats Kubelet en définissant --rotate-server-certificates=true sur les kubelets.
    4.2.13 Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). L1 Contrôle équivalent Kubelet utilise l'ensemble par défaut des algorithmes de chiffrements cryptographiques.

    État du cluster d'utilisateur GKE On-Prem:

    # Recommandation Level Status
    1 Configuration de la sécurité du nœud maître
    1.1 Fichiers de configuration du nœud maître
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 (Automatisée). L1 Réussite
    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 644 ou sur une option plus restrictive (Automatisée). L1 Contrôle équivalent
    1.1.14 Assurez-vous que la propriété du fichier admin.conf est définie sur root:root (Automatisée). L1 Contrôle équivalent
    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 Contrôle équivalent
    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 Contrôle équivalent
    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 Réussite
    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 Réussite
    1.2 Serveur d'API
    1.2.1 Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). L1 Échec
    1.2.2 Assurez-vous que l'argument --basic-auth-file n'est pas défini (Automatisée). L1 Réussite
    1.2.3 Assurez-vous que le paramètre --token-auth-file n'est pas défini (Automatisée). 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 Échec
    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 Dépend de l'environnement
    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 Contrôle équivalent
    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 "PodSecurityPolicy" est défini (Automatisée). L1 Contrôle équivalent
    1.2.17 Assurez-vous que le plug-in de contrôle d'admission "NodeRestriction" est défini (Automatisée). L1 Réussite
    1.2.18 Assurez-vous que l'argument --insecure-bind-address n'est pas défini (Automatisée). L1 Échec
    1.2.19 Assurez-vous que l'argument --insecure-port est défini sur 0 (Automatisée). L1 Échec
    1.2.20 Assurez-vous que l'argument --secure-port n'est pas défini sur 0 (Automatisée). L1 Réussite
    1.2.21 Assurez-vous que l'argument --profiling est défini sur "false" (Automatisée). L1 Réussite
    1.2.22 Assurez-vous que l'argument --audit-log-path est défini (Automatisée). L1 Contrôle équivalent
    1.2.23 Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent
    1.2.24 Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent
    1.2.25 Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent
    1.2.26 Assurez-vous que l'argument --request-timeout est défini de la manière appropriée (Automatisée). L1 Réussite
    1.2.27 Assurez-vous que l'argument --service-account-lookup est défini sur "true" (Automatisée). L1 Réussite
    1.2.28 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.29 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.30 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 Contrôle équivalent
    1.2.31 Assurez-vous que l'argument --client-ca-file est défini de la manière appropriée (Automatisée). L1 Réussite
    1.2.32 Assurez-vous que l'argument --etcd-cafile est défini de la manière appropriée (Automatisée). L1 Réussite
    1.2.33 Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). L1 Échec
    1.2.34 Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). L1 Échec
    1.2.35 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 Contrôle équivalent
    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 Configuration du nœud etcd
    2 Fichiers de configuration de 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 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 (Manuelle). L2 Réussite
    3.2 Logging
    3.2.1 Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). L1 Contrôle équivalent
    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 Configuration de la sécurité des nœuds de calcul
    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 Contrôle équivalent
    4.1.4 Assurez-vous que la propriété du fichier kubeconfig du proxy est définie sur root:root (Manuelle). L1 Contrôle équivalent
    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 Contrôle équivalent
    4.1.6 Assurez-vous que la propriété du fichier --kubeconfig kubelet.conf est définie sur root:root (Manuelle). L1 Contrôle équivalent
    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 Échec
    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 Contrôle équivalent
    4.2.13 Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). L1 Contrôle équivalent
    Description des défaillances et des contrôles équivalents pour le cluster utilisateur GKE On-Prem:
    # Recommandation Level Status Valeur Justification
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 root:root Le conteneur etcd s'exécute en tant que root, et le répertoire de données etcd appartient à root:root.
    1.1.13 Assurez-vous que les autorisations du fichier admin.conf sont définies sur 644 ou sur une option plus restrictive (Automatisée). L1 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    1.1.14 Assurez-vous que la propriété du fichier admin.conf est définie sur root:root (Automatisée). L1 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    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 Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    1.2.1 Assurez-vous que l'argument --anonymous-auth est défini sur "false" (Manuelle). L1 Échec Non défini Certains composants de surveillance de GKE On-Prem utilisent l'authentification anonyme pour effectuer des vérifications d'état.
    1.2.10 Assurez-vous que le plug-in de contrôle d'admission "EventRateLimit" est défini (Manuelle). L1 Échec Non défini GKE On-Prem n'est pas compatible avec le contrôleur d'admission Event Rate Limit, car il s'agit d'une fonctionnalité alpha Kubernetes.
    1.2.12 Assurez-vous que le plug-in de contrôle d'admission "AlwaysPullImages" est défini (Manuelle). L1 Dépend de l'environnement 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. GKE On-Prem n'active pas le contrôleur d'admission AlwaysPullImages, 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 Contrôle équivalent Non défini Les règles sur les paramètres de sécurité des pods sont gérées à l'aide de Policy Controller et d'Anthos Config Management.
    1.2.16 Assurez-vous que le plug-in de contrôle d'admission "PodSecurityPolicy" est défini (Automatisée). L1 Contrôle équivalent Non défini Les règles sur les paramètres de sécurité des pods sont gérées à l'aide de Policy Controller et d'Anthos Config Management.
    1.2.18 Assurez-vous que l'argument --insecure-bind-address n'est pas défini (Automatisée). L1 Échec 127.0.0.1 metrics-proxy pour le cluster utilisateur kube-apiserver communique actuellement sur localhost dans le pod kube-apiserver à l'aide du protocole HTTP.
    1.2.19 Assurez-vous que l'argument --insecure-port est défini sur 0 (Automatisée). L1 Échec 80 metrics-proxy pour le cluster utilisateur kube-apiserver communique actuellement sur localhost dans le pod kube-apiserver à l'aide du protocole HTTP.
    1.2.22 Assurez-vous que l'argument --audit-log-path est défini (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.23 Assurez-vous que l'argument --audit-log-maxage est défini sur 30 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.24 Assurez-vous que l'argument --audit-log-maxbackup est défini sur 10 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.25 Assurez-vous que l'argument --audit-log-maxsize est défini sur 100 ou de la manière appropriée (Automatisée). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    1.2.30 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 Contrôle équivalent Non défini GKE On-Prem gère le protocole TLS du serveur kubelet à l'aide de l'option --rotate-server-certificates.
    1.2.33 Assurez-vous que l'argument --encryption-provider-config est défini de la manière appropriée (Manuelle). L1 Échec Non défini GKE On-Prem n'est pas encore compatible avec le chiffrement des secrets au niveau de la couche d'application.
    1.2.34 Assurez-vous que les fournisseurs de services de chiffrement sont configurés de la manière appropriée (Manuelle). L1 Échec Non défini GKE On-Prem n'est pas encore compatible avec le chiffrement des secrets au niveau de la couche d'application.
    1.3.6 Assurez-vous que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Automatisée). L2 Contrôle équivalent Non défini GKE On-Prem active la rotation des certificats Kubelet en définissant --rotate-server-certificates=true sur les kubelets.
    3.2.1 Assurez-vous qu'une stratégie d'audit minimale est créée (Manuelle). L1 Contrôle équivalent Non défini GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    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 GKE On-Prem capture les journaux d'audit, mais n'utilise pas ces indicateurs pour les audits. Pour plus d'informations, consultez la règle d'audit GKE On-Prem.
    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 Contrôle équivalent Non défini kube-proxy s'exécute en tant que daemonset dans GKE On-Prem et les autorisations sont gérées via RBAC.
    4.1.4 Assurez-vous que la propriété du fichier kubeconfig du proxy est définie sur root:root (Manuelle). L1 Contrôle équivalent Non défini kube-proxy s'exécute en tant que daemonset dans GKE On-Prem et les autorisations sont gérées via RBAC.
    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 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    4.1.6 Assurez-vous que la propriété du fichier --kubeconfig kubelet.conf est définie sur root:root (Manuelle). L1 Contrôle équivalent Les spécifications du pod du plan de contrôle sont protégées par une règle d'autorisation RBAC restrictive similaire dans le cluster d'administration et ne sont pas présentes sous forme de fichiers sur disque.
    4.2.4 Assurez-vous que l'argument --read-only-port est défini sur 0 (Manuelle). L1 Échec 10255 Certains composants de surveillance de GKE On-Prem utilisent le port en lecture seule du kubelet pour obtenir des métriques.
    4.2.6 Assurez-vous que l'argument --protect-kernel-defaults est défini sur "true" (Automatisée). L1 Échec false GKE On-Prem permet à kubelet de définir les paramètres de noyau nécessaires.
    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 Échec 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 GKE On-Prem gère le protocole TLS du serveur kubelet à l'aide de l'option --rotate-server-certificates.
    4.2.12 Vérifiez que l'argument "RotateKubeletServerCertificate" est défini sur "true" (Manuelle). L1 Contrôle équivalent Non défini GKE On-Prem active la rotation des certificats Kubelet en définissant --rotate-server-certificates=true sur les kubelets.
    4.2.13 Assurez-vous que le kubelet n'utilise que des algorithmes de chiffrement sécurisés (Manuelle). L1 Contrôle équivalent Kubelet utilise l'ensemble par défaut des algorithmes de chiffrements cryptographiques.

    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. Les outils répertoriés ci-dessous 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, par exemple :

    kube-bench node --benchmark cis-1.6