À propos de l'analyse de la stratégie de sécurité Kubernetes


Cette page décrit l'analyse de la stratégie de sécurité Kubernetes, une fonctionnalité du tableau de bord de stratégie de sécurité qui détecte les problèmes les plus courants dans la configuration de sécurité, les bulletins de sécurité exploitables dans vos charges de travail Kubernetes et les menaces actives dans vos clusters GKE Enterprise.

Pour activer et utiliser l'analyse de la stratégie de sécurité Kubernetes, consultez les ressources suivantes :

L'analyse de la stratégie de sécurité Kubernetes offre les fonctionnalités suivantes :

Tarification

  • Niveau Standard : offert sans frais supplémentaires dans GKE.
  • Niveau Advanced : inclus dans GKE Enterprise.

Les entrées ajoutées à Cloud Logging sont soumises aux tarifs de Cloud Logging.

À propos de l'audit de la configuration des charges de travail

Les charges de travail que vous déployez sur GKE doivent disposer d'une configuration renforcée qui limite leur surface d'attaque. Il peut être difficile de vérifier manuellement les charges de travail des clusters pour détecter les problèmes de configuration à grande échelle. Le tableau de bord de stratégie de sécurité vous permet d'auditer automatiquement la configuration de toutes vos charges de travail en cours d'exécution sur plusieurs clusters. Vous pouvez ainsi renvoyer des résultats exploitables et quantifiables, ainsi que des recommandations avisées, pour améliorer votre stratégie de sécurité.

L'audit de la configuration de la charge de travail vérifie chaque charge de travail déployée par rapport à un sous-ensemble de règles dans les normes de sécurité des pods. L'audit de la configuration de la charge de travail a lieu sur l'infrastructure de Google et n'utilise pas de ressources de calcul sur vos nœuds.

Avantages de l'audit de la configuration des charges de travail

  • Automatisez la détection des problèmes de configuration connus dans toutes les charges de travail.
  • Obtenez des recommandations exploitables pour améliorer la sécurité.
  • Utilisez la console Google Cloud pour obtenir une vue d'ensemble des problèmes de configuration.
  • Utilisez Logging pour obtenir une piste contrôlable des préoccupations pour une meilleure création de rapports et d'observabilité.

Fonctionnement de l'audit de configuration de la charge de travail

Pour chaque charge de travail déployée éligible, GKE analyse en continu la spécification de la charge de travail et compare les champs et les valeurs aux contrôles définis dans la stratégie de sécurité sous-jacente. Par exemple, un pod avec spec.containers.securityContext.privileged=true ne respecte pas la norme de sécurité Baseline des pods et un pod avec le champ spec.securityContext.runAsNonRoot défini sur false ne respecte pas la norme restreinte. Pour obtenir la liste des stratégies de sécurité vérifiées par GKE, consultez la page Que vérifie l'audit de la configuration de la charge de travail ?.

Après avoir analysé et détecté les problèmes, GKE évalue la gravité des problèmes de configuration détectés en fonction des mesures de renforcement de la sécurité intégrées. GKE attribue un niveau de gravité qui peut informer la vitesse à laquelle vous répondez au problème. La console Google Cloud affiche les résultats et les actions recommandées pour résoudre le problème. GKE ajoute également des entrées à Cloud Logging pour le traçage et l'audit.

Que vérifie l'audit de la configuration de la charge de travail ?

Problème Champs Valeurs autorisées Gravité

Espaces de noms d'hôte

Les pods qui partagent des espaces de noms d'hôte permettent aux processus de pod de communiquer avec les processus hôtes et de collecter des informations sur l'hôte, ce qui peut entraîner une échappement des conteneurs.

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • Indéterminé ou nul
  • false
High

Conteneurs privilégiés

Les conteneurs privilégiés autorisent un accès hôte presque illimité. Ils partagent des espaces de noms avec l'hôte, et n'ont pas les restrictions de groupe de contrôle, seccomp, AppArmor et de capacité.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • Indéterminé ou nul
  • false
High

Accès au port hôte

L'exposition d'un port hôte à un conteneur peut lui permettre d'intercepter le trafic réseau vers un service hôte via ce port ou de contourner les règles de contrôle d'accès au réseau, telles que les règles de NetworkPolicy.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • Indéterminé ou nul
  • 0
High

Fonctionnalités autres que celles par défaut

Un conteneur est doté de fonctionnalités permettant d'échapper un conteneur.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • Indéterminé ou nul
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
Moyen

Installer des volumes de chemins d'accès à l'hôte

Les volumes hostPath installent les fichiers ou les répertoires de l'hôte. Ces volumes présentent des risques de sécurité qui pourraient entraîner la fuite du conteneur.

spec.volumes[*].hostPath Indéterminé ou nul Moyen

Masque /proc autre que celui par défaut

Le type d'installation /proc par défaut masque certains chemins d'accès dans /proc pour éviter l'exposition de chemins pouvant entraîner une fuite d'informations ou une échappement des conteneurs. L'utilisation d'un type autre que celui par défaut augmente ces risques.

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • Indéterminé ou nul
  • Par défaut
Moyen

Masque sysctls non sécurisé

Un pod peut être configuré pour autoriser la modification de paramètres de noyau non sécurisés via le système de fichiers virtuel /proc/sys. Les paramètres non sécurisés n'acceptent pas les espaces de noms, n'isolent pas correctement leurs effets entre les pods, peuvent nuire à l'état du nœud ou permettre au pod d'obtenir des ressources au-delà de ses limites.

spec.securityContext.sysctls[*].name
  • Indéterminé ou nul
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
Moyen

Exécuter en tant qu'utilisateur non racine

Vous pouvez explicitement autoriser un conteneur à s'exécuter en tant qu'utilisateur racine si la directive runAsUser ou USER de l'image spécifie l'utilisateur racine. L'absence de contrôles de sécurité préventifs lors de l'exécution en tant qu'utilisateur racine augmente le risque d'échappement des conteneurs.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true Moyen

Élévation des privilèges

Un conteneur peut être explicitement configuré pour autoriser l'élévation des privilèges lors de l'exécution. Cela permet à un processus créé dans le conteneur en exécutant set-user-id, set-group-id ou de fichier exécutable pour obtenir les privilèges spécifiés par le fichier exécutable. L'absence de contrôle de sécurité préventif augmente le risque d'échappement des conteneurs.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false Moyen

Profil non confiné par AppArmor

Un conteneur peut être explicitement configuré pour être non confiné par AppArmor. Cela garantit qu'aucun profil AppArmor n'est appliqué au conteneur et n'est donc pas limité par ceux-ci. Le contrôle de sécurité préventif désactivé augmente le risque d'échappement des conteneurs.

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false Faible

À propos de l'affichage des bulletins de sécurité

Lorsqu'une faille est détectée dans GKE, nous lui appliquons un correctif et publions un bulletin de sécurité la décrivant. Pour en savoir plus sur l'identification des failles, l'application de correctifs et la chronologie, consultez la page Correctifs de sécurité GKE.

Le tableau de bord de stratégie de sécurité affiche les bulletins de sécurité qui affectent vos clusters, vos charges de travail et vos pools de nœuds en mode Standard. Cette capacité fait partie de la fonctionnalité de stratégie de sécurité de Kubernetes du tableau de bord de stratégie de sécurité. Elle est automatiquement activée lorsque vous créez un cluster Autopilot ou Standard. Pour activer l'analyse de la stratégie de sécurité Kubernetes, suivez les instructions de la section Auditer automatiquement les problèmes de configuration dans les charges de travail.

La console Google Cloud affiche des détails tels que les clusters et versions concernés, ainsi que les versions de correctifs recommandées pour des mises à niveau visant à réduire les risques liés à la faille. Vous ne voyez que les bulletins pour lesquels une atténuation des risques est disponible dans la région ou la zone Google Cloud de votre cluster.

Pour afficher les bulletins des clusters que vous avez enregistrés dans l'analyse de la stratégie de sécurité Kubernetes, accédez au tableau de bord de stratégie de sécurité :

Accédez à la stratégie de sécurité

Tous les bulletins disponibles qui affectent votre environnement apparaissent dans la section Bulletins de sécurité.

À propos de GKE Threat Detection

GKE Threat Detection analyse les journaux d'audit de vos clusters enregistrés pour détecter les menaces actives et fournir des mesures de mitigation recommandées. GKE Threat Detection s'appuie sur le service Event Threat Detection de Security Command Center. Pour en savoir plus, consultez la page À propos de GKE Threat Detection dans la documentation GKE Enterprise.

Étapes suivantes