Rechercher des failles connues dans les charges de travail


Cette page explique comment analyser automatiquement les systèmes d'exploitation (OS) et les packages de langages dans vos charges de travail en cours d'exécution pour détecter les failles connues et obtenir des stratégies d'atténuation exploitables. L'analyse des failles des charges de travail fait partie du tableau de bord de stratégie de sécurité, un ensemble de fonctionnalités qui fournissent des informations et des recommandations pour améliorer la sécurité des clusters Google Kubernetes Engine (GKE) et des charges de travail.

Pour en savoir plus, consultez la page À propos de l'analyse des failles des charges de travail.

Tarification

Pour en savoir plus sur la tarification, consultez la page Tarifs du tableau de bord de stratégie de sécurité GKE.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Conditions requises

  • Pour obtenir les autorisations nécessaires pour utiliser l'analyse des failles des charges de travail, demandez à votre administrateur de vous accorder le rôle IAM de lecteur de stratégie de sécurité (roles/containersecurity.viewer) sur votre projet Google Cloud. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

    Ce rôle prédéfini contient les autorisations requises pour utiliser l'analyse des failles des charges de travail. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

    Autorisations requises

    Les autorisations suivantes sont requises pour utiliser l'analyse des failles des charges de travail :

    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • containersecurity.locations.list
    • containersecurity.locations.get
    • containersecurity.clusterSummaries.list
    • containersecurity.findings.list

    Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

  • Advanced Vulnerability Insights nécessite GKE version 1.27 ou ultérieure.

Niveaux d'analyse des failles des charges de travail

Vous activez l'analyse des failles par niveaux, qui ajoute des fonctionnalités d'analyse comme suit. Si vous gérez les parcs de clusters à l'aide de l'édition Enterprise Google Kubernetes Engine (GKE), vous pouvez également configurer les paramètres d'analyse des failles au niveau du parc qui s'appliquent à tous les clusters membres. Pour obtenir des instructions, consultez la page Configurer les fonctionnalités du tableau de bord de stratégie de sécurité GKE au niveau du parc.

Niveau Fonctionnalités activées Exigence de version GKE
Standard
standard
Analyse des failles de Container OS
  • Édition GKE Enterprise : activée par défaut dans tous les nouveaux clusters exécutant la version 1.27 ou ultérieure
  • Édition GKE Standard : activée par défaut dans tous les nouveaux clusters en mode Autopilot exécutant la version 1.27 ou ultérieure. Désactivé par défaut dans tous les nouveaux clusters en mode Standard.
Advanced Vulnerability Insights
enterprise
  • Analyse des failles de Container OS
  • Analyse des failles des packages de langages
  • Édition GKE Enterprise : activée par défaut dans tous les nouveaux clusters exécutant la version 1.27 ou ultérieure
  • Édition GKE Standard : désactivée par défaut dans tous les nouveaux clusters.

Pour en savoir plus sur chaque fonctionnalité, consultez la page À propos de l'analyse des failles des charges de travail.

Activer l'analyse des failles de Container OS

L'analyse des failles de Container OS est activée par défaut dans les nouveaux clusters Autopilot exécutant les versions 1.27 et ultérieures. Cette section explique comment activer cette fonctionnalité dans les nouveaux clusters standards et dans les clusters Autopilot exécutant des versions antérieures à 1.27.

Activer l'analyse de Container OS sur un nouveau cluster

gcloud

Créez un cluster GKE à l'aide de la CLI gcloud :

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=standard

Remplacez les éléments suivants :

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine
  2. Cliquez sur Créer.
  3. Dans la section GKE Standard, cliquez sur Configurer.
  4. Dans le volet de navigation, cliquez sur Sécurité.
  5. Dans la section Sécurité, cochez la case Analyse des failles.
  6. Sélectionnez l'option Basique.
  7. Configurez les autres options de votre cluster, puis cliquez sur Créer lorsque vous êtes prêt.

Activer l'analyse de Container OS sur un cluster existant

gcloud

Mettez à jour le cluster :

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=standard

Remplacez les éléments suivants :

Console

  1. Accédez à la page Stratégie de sécurité dans la console Google Cloud.

    Accédez à la stratégie de sécurité
  2. Cliquez sur l'onglet Paramètres.
  3. Dans la section Clusters activés pour l'analyse des failles, cliquez sur Sélectionner des clusters.
  4. Cochez les cases des clusters que vous souhaitez ajouter.
  5. Dans le menu déroulant Sélectionner une action, sélectionnez Définir sur "Basique".
  6. Cliquez sur Appliquer.

Activer les insights avancés sur les failles

Advanced Vulnerability Insights permet d'analyser en continu vos applications en cours d'exécution afin de détecter les types de failles suivants:

  • Failles de Container OS
  • Failles des packages de langages

Lorsque vous activez Advanced Vulnerability Insights, la fonctionnalité d'analyse des failles de Container OS est automatiquement activée et ne peut pas être désactivée séparément.

Conditions requises

Activer Advanced Vulnerability Insights sur un nouveau cluster

gcloud

Créez un cluster GKE à l'aide de la CLI gcloud :

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=enterprise

Remplacez les éléments suivants :

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine
  2. Cliquez sur Créer.
  3. Dans la section GKE Autopilot, cliquez sur Configurer.
  4. Dans le volet de navigation, cliquez sur Paramètres avancés. Si vous créez un cluster standard, cliquez plutôt sur Sécurité.
  5. Dans la section Sécurité, cochez la case Analyse des failles.
  6. Sélectionnez l'option Avancé.
  7. Configurez les autres options de votre cluster, puis cliquez sur Créer lorsque vous êtes prêt.

Activer les insights avancés sur les failles sur un cluster existant

gcloud

Mettez à jour le cluster :

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=enterprise

Remplacez les éléments suivants :

Console

  1. Accédez à la page Stratégie de sécurité dans la console Google Cloud.

    Accédez à la stratégie de sécurité
  2. Cliquez sur l'onglet Paramètres.
  3. Dans la section Clusters activés pour l'analyse des failles, cliquez sur Sélectionner des clusters.
  4. Cochez les cases des clusters que vous souhaitez ajouter.
  5. Dans le menu déroulant Sélectionner une action, sélectionnez Définir sur Avancé.
  6. Cliquez sur Appliquer.

Déployer une charge de travail de test

Les exemples de fichiers manifestes suivants présentent des failles connues à des fins de démonstration. En pratique, vous ne devriez probablement pas exécuter une application si vous savez qu'elle est vulnérable.

  1. Enregistrez le manifeste suivant sous le nom os-vuln-sample.yaml :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontend
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: guestbook
          tier: frontend
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend@sha256:dc8de8e0d569d2f828b187528c9317bd6b605c273ac5a282aebe471f630420fc
            env:
            - name: GET_HOSTS_FROM
              value: "dns"
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 80
    
  2. Examinez le fichier manifeste suivant, qui contient une faille Maven connue :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: maven-vulns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mavenvulns
      template:
        metadata:
          labels:
            app: mavenvulns
        spec:
          containers:
          - name: maven-vulns-app
            image: us-docker.pkg.dev/google-samples/containers/gke/security/maven-vulns
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
              - name: PORT
                value: "8080"
            resources:
              requests:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
              limits:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
  3. Si vous le souhaitez, obtenez des identifiants pour votre cluster :

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=COMPUTE_REGION
    
  4. Déployez les applications sur votre cluster :

    kubectl apply -f os-vuln-sample.yaml
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/security/language-vulns/maven/deployment.yaml
    

Pour tester d'autres failles, essayez de déployer des versions plus anciennes d'images telles que nginx dans des environnements de préproduction.

Afficher les résultats et agir en conséquence

L'analyse initiale prend au moins 15 minutes pour renvoyer les résultats, en fonction du nombre de charges de travail analysées. GKE affiche les résultats dans le tableau de bord de stratégie de sécurité et ajoute automatiquement des entrées à Logging.

Afficher les résultats

Pour afficher une vue d'ensemble des problèmes détectés sur les clusters et les charges de travail de votre projet, procédez comme suit :

  1. Accédez à la page Stratégie de sécurité dans la console Google Cloud.

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

  2. Cliquez sur l'onglet Problèmes.

  3. Dans le volet Filtrer les problèmes de la section Type de problème, cochez la case Faille.

Afficher les détails et les recommandations

Pour afficher des informations détaillées sur une faille spécifique, cliquez sur la ligne contenant ce problème.

Le volet Problème de faille affiche les informations suivantes :

  • Description : une description du problème, y compris un numéro CVE (le cas échéant) et une description détaillée de la faille et de son impact potentiel.
  • Action recommandée : actions que vous pouvez entreprendre pour corriger les failles, telles que les versions de package corrigées et où appliquer le correctif.

Afficher les journaux pour les problèmes détectés

GKE ajoute des entrées à Logging pour chaque problème détecté.

  1. Accédez à l'explorateur de journaux dans la console Google Cloud.

    Accéder à l'explorateur de journaux

  2. Dans le champ Requête, saisissez la requête suivante :

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_VULNERABILITY"
    
  3. Cliquez sur Exécuter la requête.

Pour recevoir des notifications lorsque GKE ajoute de nouvelles découvertes à Logging, configurez des alertes basées sur les journaux pour cette requête. Pour en savoir plus, consultez la page Gérer les alertes basées sur les journaux.

Effectuer un nettoyage

  1. Supprimez l'exemple de charge de travail que vous avez déployé :

    kubectl delete deployment frontend
    
  2. Vous pouvez également supprimer le cluster que vous avez utilisé :

    gcloud container clusters delete CLUSTER_NAME \
        --region=COMPUTE_REGION
    

Désactiver l'analyse des failles des charges de travail

Vous pouvez désactiver l'analyse des failles des charges de travail à l'aide de gcloud CLI ou de la console Google Cloud.

gcloud

Exécutez la commande ci-dessous.

gcloud container clusters update CLUSTER_NAME \
    --region=LOCATION \
    --workload-vulnerability-scanning=disabled

Remplacez les éléments suivants :

Console

  1. Accédez à la page Stratégie de sécurité dans la console Google Cloud.

    Accédez à la stratégie de sécurité
  2. Cliquez sur l'onglet Paramètres.
  3. Dans la section Clusters activés pour l'analyse des failles, cliquez sur Sélectionner des clusters.
  4. Cochez les cases correspondant aux clusters que vous souhaitez supprimer.
  5. Dans le menu déroulant Sélectionner une action, sélectionnez D2finir sur désactivé.
  6. Cliquez sur Appliquer.

Étapes suivantes