Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Inspect cluster workloads

Dernière mise à jour :Aug 31, 2026

ACK propose une fonctionnalité d'inspection permettant de détecter les risques de sécurité liés à la configuration des charges de travail de votre cluster. Une fois la tâche d'inspection exécutée, le système génère un rapport. Ce rapport vous permet de consulter et de traiter les éléments à risque, tout en surveillant l'état de santé de vos charges de travail en temps réel.

Prérequis

  • Le cluster doit exécuter Kubernetes v1.14 ou une version ultérieure. Pour mettre à niveau votre cluster, consultez la rubrique Mettre à jour manuellement un cluster ACK.

  • Si vous utilisez un utilisateur RAM, effectuez les autorisations RAM et RBAC comme décrit dans les sections suivantes.

    • Autorisation RAM

      Accordez l'autorisation RAM sur la page Inspections afin de garantir que l'utilisateur RAM actuel dispose des permissions nécessaires pour utiliser cette page pour le cluster concerné. À défaut, vous rencontrerez des erreurs de permissions insuffisantes et ne pourrez pas utiliser les fonctionnalités de la page Inspections. Pour plus d'informations, consultez la rubrique Accorder des permissions d'accès aux clusters et aux ressources cloud via RAM.

      Politique d'autorisation d'inspection

      {
        "Statement": [
          {
            "Action": [
              "cs:DescribePolarisConfig",
              "cs:DescribePolarisJob",
              "cs:DescribePolarisCronJob",
              "cs:UpdatePolarisJob",
              "cs:UpdatePolarisCronJob"
            ],
            "Effect": "Allow",
            "Resource": [
              "acs:cs:*:*:cluster/<yourclusterID>"
            ]
          }
        ],
        "Version": "1"
      }

      Pour utiliser la fonctionnalité de rapport d'inspection, vous devez accorder à l'utilisateur RAM des permissions de lecture sur le projet Simple Log Service (SLS) spécifié. Ce projet est utilisé par le composant de collecte de journaux de votre cluster. Sans ces permissions, vous ne pourrez pas consulter les rapports d'inspection. Pour plus d'informations, consultez la rubrique Exemples d'autorisations RAM personnalisées.

      Politique d'autorisation des journaux SLS

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "log:Get*",
                      "log:List*"
                  ],
                  "Resource": "acs:log:*:*:project/<your_project_name>/*",
                  "Effect": "Allow"
              }
          ]
      }
    • Autorisation RBAC

      Effectuez l'autorisation RBAC pour les ressources de la page Inspections afin d'accorder à l'utilisateur RAM des permissions d'administrateur pour le cluster spécifié. Cela garantit que l'utilisateur RAM dispose des permissions nécessaires pour gérer les ressources Kubernetes depuis la page Inspections. Pour plus d'informations, consultez la rubrique Utiliser RBAC pour autoriser les opérations sur les ressources d'un cluster.

Exécuter une inspection

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Inspections.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Clusters > Security.

  3. Facultatif : Suivez les instructions à l'écran pour installer ou mettre à jour le composant d'inspection.

    Le composant security-inspector est gratuit, mais consomme des ressources de pod. Pour plus d'informations sur ce composant et ses notes de version, consultez la rubrique security-inspector.

  4. Exécutez une inspection.

    Important
    • Nous vous recommandons d'exécuter les inspections pendant les heures creuses.

    • Par défaut, l'inspection analyse tous les éléments pris en charge. Dans le coin supérieur droit de la page Inspections, vous pouvez cliquer sur Inspections pour spécifier les éléments à analyser. Pour plus d'informations, consultez la section Éléments d'inspection.

    • Pour lancer une inspection immédiate, cliquez sur Configure Periodic Inspection dans le coin supérieur droit de la page Inspections.

    • Pour planifier des inspections périodiques, cliquez sur Inspect dans le coin supérieur droit de la page Inspections. Sélectionnez ensuite Configure Periodic Inspection et configurez la période d'inspection.

  5. Une fois l'inspection terminée, accédez à l'onglet Configure Periodic Inspection, repérez le résultat d'inspection souhaité et cliquez sur Inspections dans la colonne Details.

Détails de l'inspection

La page Actions répertorie les résultats détaillés de l'inspection pour différentes charges de travail. Elle offre les fonctionnalités suivantes :

  • Filtrez les résultats selon des critères tels que Inspections, Passed or Failed et Namespace, et consultez le nombre d'Workload Type et d'Number of Passed Items pour chaque charge de travail.

  • Consultez les détails de chaque élément inspecté, y compris le statut de vérification (Passed ou Failed) au niveau des pods et des conteneurs, une description détaillée et des suggestions de correction. Si un élément échoué ne nécessite aucune correction, vous pouvez l'ajouter à la liste d'autorisation.

  • Affichez le fichier YAML d'une charge de travail.

Rapports d'inspection

La page Risk Item affiche les résultats de la dernière inspection. Elle inclut les informations suivantes :

  • Un aperçu des résultats de l'analyse, comprenant le nombre total d'éléments inspectés, le nombre et le pourcentage de chaque type de ressource inspectée, ainsi que le score de santé global.

  • Des statistiques pour les principales catégories d'analyse, notamment les vérifications de santé, les images, la mise en réseau, les ressources et la sécurité.

  • Les résultats détaillés de l'analyse pour chaque configuration de charge de travail, incluant le type de ressource, le nom de la ressource, le namespace, le type de vérification, l'élément d'inspection et le résultat.

Éléments d'inspection

La fonctionnalité d'inspection de la configuration analyse et affiche les résultats pour les éléments suivants.

ID de vérification

Élément de vérification

Description et risque de sécurité

Correction

hostNetworkSet

Empêcher les conteneurs de partager le namespace réseau de l'hôte

Vérifie si hostNetwork: true est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre est activé, les conteneurs peuvent accéder au namespace réseau de l'hôte, ce qui crée un risque d'attaques réseau et d'interception de données depuis le pod.

Modifiez la spécification du pod pour supprimer le champ hostNetwork.

Exemple :

      labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2

hostIPCSet

Empêcher les conteneurs de partager le namespace IPC de l'hôte

Vérifie si hostIPC: true est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre est activé, les conteneurs peuvent accéder au namespace IPC de l'hôte, ce qui leur permet d'attaquer ou d'intercepter les données d'autres processus sur l'hôte.

Modifiez la spécification du pod pour supprimer le champ hostIPC.

Exemple :

      labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2

hostPIDSet

Empêcher les conteneurs de partager le namespace PID de l'hôte

Vérifie si hostPID: true est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre est activé, les conteneurs peuvent accéder au namespace des identifiants de processus (PID) de l'hôte, ce qui leur permet d'attaquer ou de collecter des données auprès d'autres processus sur l'hôte.

Modifiez la spécification du pod pour supprimer le champ hostPID.

Exemple :

      labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2

hostPortSet

Empêcher les processus de conteneur d'écouter sur les ports de nœud

Vérifie si hostPort est configuré dans la spécification du pod d'une charge de travail. Si un port de conteneur est mappé à un port sur le nœud hôte, il peut occuper le port hôte et recevoir des requêtes provenant de sources non intendedues.

Modifiez la spécification du pod pour supprimer le champ hostPort.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80

runAsRootAllowed

Empêcher les conteneurs de s'exécuter en tant qu'utilisateur root

Vérifie si runAsNonRoot: true est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, les conteneurs s'exécutent par défaut en tant qu'utilisateur root. Cela crée un risque que des processus malveillants compromettent vos applications, l'hôte ou l'ensemble du cluster.

Modifiez la spécification du pod pour ajouter runAsNonRoot: true.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
            securityContext:
              runAsNonRoot: true

runAsPrivileged

Empêcher les conteneurs de s'exécuter en mode privilégié

Vérifie si privileged: true est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre est activé, le conteneur dispose d'un accès root à l'hôte. Cela crée un risque grave que des processus malveillants compromettent vos applications, l'hôte ou l'ensemble du cluster.

Modifiez la spécification du pod pour supprimer le champ privileged.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
            securityContext: {}

privilegeEscalationAllowed

Empêcher l'élévation de privilèges dans les conteneurs

Vérifie si allowPrivilegeEscalation: false est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, un processus enfant dans un conteneur peut obtenir plus de privilèges que son processus parent. Cela crée un risque d'attaques par élévation de privilèges.

Modifiez la spécification du pod pour ajouter le champ allowPrivilegeEscalation: false.

Exemple :

        ports:
            - containerPort: 80
            securityContext:
              allowPrivilegeEscalation: false
              readOnlyRootFilesystem: true
              runAsNonRoot: true
            volumeMounts:

capabilitiesAdded

Supprimer les capacités Linux inutiles

Vérifie le champ capabilities dans la spécification du pod d'une charge de travail pour détecter les capacités Linux à haut niveau de privilège telles que SYS_ADMIN, NET_ADMIN ou ALL. Si ces capacités sont accordées, des processus malveillants peuvent les utiliser pour compromettre vos applications, composants ou cluster.

Modifiez la spécification du pod pour n'ajouter que les capacités Linux requises et supprimer toutes les autres.

Si aucune capacité Linux supplémentaire n'est requise, supprimez-les toutes. Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
            securityContext:
              capabilities:
                drop:
                - ALL

Si des capacités spécifiques sont requises, ajoutez uniquement celles qui sont nécessaires et supprimez toutes les autres. Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
            securityContext:
              capabilities:
                add:
                - CHOWN
                drop:
                - ALL

notReadOnlyRootFilesystem

Utiliser un système de fichiers racine en lecture seule pour les conteneurs

Vérifie si readOnlyRootFilesystem: true est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, le système de fichiers racine du conteneur est accessible en écriture. Cela crée un risque que des processus malveillants modifient les fichiers système.

Modifiez la spécification du pod pour ajouter readOnlyRootFilesystem: true. Si vous devez écrire dans un répertoire spécifique, utilisez volumeMounts.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
            securityContext:
              readOnlyRootFilesystem: true

Si vous devez modifier des fichiers dans un répertoire spécifique, utilisez un champ volumeMounts.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
            securityContext:
              readOnlyRootFilesystem: true
              runAsNonRoot: true
            volumeMounts:
            - mountPath: /path/to/write
              name: writeable
          volumes:
          - emptyDir: {}
            name: writeable

cpuRequestsMissing

Définir les requêtes CPU pour les conteneurs

Vérifie si resources.requests.cpu est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, les pods peuvent être planifiés sur des nœuds disposant de ressources CPU insuffisantes, ce qui peut entraîner des performances lentes.

Modifiez la spécification du pod pour ajouter un champ resources.requests.cpu.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                cpu: 100m

cpuLimitsMissing

Définir les limites CPU pour les conteneurs

Vérifie si resources.limits.cpu est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, des processus anormaux dans un conteneur peuvent consommer des ressources de nœud excessives, épuisant potentiellement les ressources CPU du nœud ou de l'ensemble du cluster.

Modifiez la spécification du pod pour ajouter un champ resources.limits.cpu.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                cpu: 100m
              limits:
                cpu: 100m

memoryRequestsMissing

Définir les requêtes de mémoire pour les conteneurs

Vérifie si resources.requests.memory est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, les pods peuvent être planifiés sur des nœuds disposant d'une mémoire insuffisante, entraînant des erreurs de manque de mémoire (OOM).

Modifiez la spécification du pod pour ajouter un champ resources.requests.memory.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                cpu: 100m
                memory: 128Mi

memoryLimitsMissing

Définir les limites de mémoire pour les conteneurs

Vérifie si resources.limits.memory est configuré dans la spécification du pod d'une charge de travail. Si ce paramètre n'est pas configuré, des processus anormaux dans un conteneur peuvent consommer des ressources de nœud excessives, épuisant potentiellement la mémoire du nœud ou de l'ensemble du cluster.

Modifiez la spécification du pod pour ajouter un champ resources.limits.memory.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 100m
                memory: 128Mi

readinessProbeMissing

Configurer les sondes de readiness pour les conteneurs

Vérifie si une readinessProbe est configurée dans la spécification du pod d'une charge de travail. Sans sonde de readiness, le trafic peut être envoyé vers un conteneur avant qu'il ne soit prêt à traiter les requêtes, ce qui peut provoquer des erreurs d'application.

Modifiez la spécification du pod pour ajouter un champ readinessProbe.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            readinessProbe:
              httpGet:
                path: /health
                port: 8080
              initialDelaySeconds: 5
              periodSeconds: 20

livenessProbeMissing

Configurer les sondes de liveness pour les conteneurs

Vérifie si une livenessProbe est configurée dans la spécification du pod d'une charge de travail. Sans sonde de liveness, un conteneur qui ne répond pas n'est pas redémarré automatiquement, ce qui peut entraîner des temps d'arrêt de l'application.

Modifiez la spécification du pod pour ajouter un champ livenessProbe.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            livenessProbe:
              httpGet:
                path: /health
                port: 8080
              initialDelaySeconds: 5
              periodSeconds: 20

tagNotSpecified

Utiliser un tag d'image spécifique pour les conteneurs

Vérifie si le champ image dans la spécification du pod d'une charge de travail ne comporte pas de tag d'image ou utilise le tag latest. Si un tag d'image spécifique n'est pas utilisé, la charge de travail peut exécuter une version inattendue de l'image de conteneur, ce qui peut provoquer des erreurs d'application.

Modifiez le champ image dans la spécification du pod pour utiliser un tag d'image spécifique. N'utilisez pas le tag latest.

Exemple :

    spec:
          containers:
          - name: nginx
            image: nginx:1.14.2

anonymousUserRBACBinding

Interdire l'accès anonyme au cluster

Vérifie les liaisons RBAC (Role-Based Access Control) dans le cluster pour identifier toute configuration accordant un accès aux utilisateurs anonymes. Si l'accès anonyme est autorisé, des utilisateurs malveillants peuvent voler des informations sensibles ou attaquer le cluster.

Modifiez les liaisons RBAC pour supprimer toutes les permissions permettant aux utilisateurs anonymes d'accéder aux ressources du cluster.

Exemple :

  - apiGroup: rbac.authorization.k8s.io
    kind: Group
    name: 'foo-group'

Événements

Type d'événement

Nom de l'événement

Exemple de contenu

Description

Actions

Normal

SecurityInspectorConfigAuditStart

Démarrage de l'audit de configuration

La tâche d'inspection démarre.

Aucune action n'est requise.

Normal

SecurityInspectorConfigAuditFinished

Audit de configuration terminé

La tâche d'inspection est terminée.

Aucune action n'est requise.

Avertissement

SecurityInspectorConfigAuditHighRiskFound

2 éléments à haut risque trouvés après l'audit de configuration

Après l'inspection, des éléments à haut risque non atténués ont été trouvés dans certaines charges de travail.

  1. Sur la page Reports du cluster, accédez à l'onglet Inspections pour consulter les résultats détaillés de l'inspection.

  2. Filtrez les résultats par Inspections, Passed or Failed et Namespace afin d'identifier les charges de travail à risque.

  3. Cliquez sur Workload Type pour une charge de travail afin de consulter les résultats de chacun de ses éléments d'inspection.

    • Pour un élément que vous confirmez ne pas nécessiter de correction, cliquez sur Details.

    • Pour un élément nécessitant une correction, cliquez sur Add to Whitelist et suivez la suggestion de remédiation pour corriger l'élément.