5.9. Respecter l'admission à la sécurité des pods


Pod security admission est une implémentation des standards de sécurité des pods de Kubernetes. L'admission de sécurité des pods restreint le comportement des pods. Les pods qui ne sont pas conformes à l'admission de sécurité des pods définie globalement ou au niveau de l'espace de noms ne sont pas admis dans le cluster et ne peuvent pas s'exécuter.

Si votre projet Operator ne nécessite pas d'autorisations accrues pour s'exécuter, vous pouvez vous assurer que vos charges de travail s'exécutent dans des espaces de noms définis au niveau de sécurité du pod restricted. Si votre projet Operator nécessite des autorisations d'escalade pour s'exécuter, vous devez définir les configurations de contexte de sécurité suivantes :

  • Niveau d'admission à la sécurité du pod autorisé pour l'espace de noms de l'opérateur
  • Les contraintes de contexte de sécurité (SCC) autorisées pour le compte de service de la charge de travail

Pour plus d'informations, voir Comprendre et gérer l'admission à la sécurité des pods.

5.9.1. Synchronisation des contraintes du contexte de sécurité avec les normes de sécurité des pods

OpenShift Container Platform inclut l'admission de sécurité des pods Kubernetes. Globalement, le profil privileged est appliqué et le profil restricted est utilisé pour les avertissements et les audits.

En plus de la configuration globale du contrôle d'admission à la sécurité des pods, il existe un contrôleur qui applique les étiquettes de contrôle d'admission à la sécurité des pods warn et audit aux espaces de noms en fonction des autorisations SCC des comptes de service qui se trouvent dans un espace de noms donné.

Important

La synchronisation de l'admission à la sécurité des pods est désactivée en permanence pour les espaces de noms définis comme faisant partie de la charge utile du cluster. Vous pouvez activer la synchronisation de l'admission à la sécurité des pods sur d'autres espaces de noms si nécessaire. Si un opérateur est installé dans un espace de noms openshift-* créé par l'utilisateur, la synchronisation est activée par défaut après la création d'une version de service de cluster (CSV) dans l'espace de noms.

Le contrôleur examine les autorisations de l'objet ServiceAccount pour utiliser les contraintes de contexte de sécurité dans chaque espace de noms. Les contraintes de contexte de sécurité (SCC) sont converties en profils de sécurité de pods en fonction de leurs valeurs de champ ; le contrôleur utilise ces profils traduits. Les étiquettes d'admission à la sécurité des modules warn et audit sont définies sur le profil de sécurité de module le plus privilégié trouvé dans l'espace de noms afin d'éviter les avertissements et la journalisation d'audit lors de la création des modules.

L'étiquetage de l'espace de nommage est basé sur la prise en compte des privilèges du compte de service local de l'espace de nommage.

L'application directe des pods peut utiliser les privilèges SCC de l'utilisateur qui exécute le pod. Cependant, les privilèges de l'utilisateur ne sont pas pris en compte lors de l'étiquetage automatique.

5.9.2. Veiller à ce que les charges de travail de l'opérateur s'exécutent dans des espaces de noms définis au niveau de sécurité "restricted pod"

Pour que votre projet Operator puisse fonctionner dans une grande variété de déploiements et d'environnements, configurez les charges de travail de l'Operator pour qu'elles s'exécutent dans des espaces de noms définis au niveau de sécurité du pod restricted.

Avertissement

Vous devez laisser le champ runAsUser vide. Si votre image nécessite un utilisateur spécifique, elle ne peut pas être exécutée avec des contraintes de contexte de sécurité restreintes (SCC) et une application restreinte de la sécurité des pods.

Procédure

  • Pour configurer les charges de travail de l'opérateur afin qu'elles s'exécutent dans des espaces de noms définis au niveau de sécurité du pod restricted, modifiez la définition de l'espace de noms de votre opérateur comme dans les exemples suivants :

    Important

    Il est recommandé de définir le profil seccomp dans la définition de l'espace de noms de votre opérateur. Cependant, la définition du profil seccomp n'est pas prise en charge dans OpenShift Container Platform 4.10.

    • Pour les projets Operator qui doivent fonctionner uniquement sur OpenShift Container Platform 4.11 et plus, modifiez la définition de l'espace de noms de votre Operator comme dans l'exemple suivant :

      Exemple de fichier config/manager/manager.yaml

      ...
      spec:
       securityContext:
         seccompProfile:
           type: RuntimeDefault 1
         runAsNonRoot: true
       containers:
         - name: <operator_workload_container>
           securityContext:
             allowPrivilegeEscalation: false
             capabilities:
               drop:
                 - ALL
      ...

      1
      En définissant le type de profil seccomp sur RuntimeDefault, le SCC utilise par défaut le profil de sécurité pod de l'espace de noms.
    • Pour les projets Operator qui doivent également fonctionner dans OpenShift Container Platform 4.10, modifiez la définition de l'espace de noms de votre Operator comme dans l'exemple suivant :

      Exemple de fichier config/manager/manager.yaml

      ...
      spec:
       securityContext: 1
         runAsNonRoot: true
       containers:
         - name: <operator_workload_container>
           securityContext:
             allowPrivilegeEscalation: false
             capabilities:
               drop:
                 - ALL
      ...

      1
      En laissant le type de profil seccomp non défini, votre projet Operator peut fonctionner dans OpenShift Container Platform 4.10.

5.9.3. Gestion de l'admission à la sécurité des pods pour les charges de travail de l'opérateur qui nécessitent des autorisations accrues

Si votre projet d'opérateur nécessite des autorisations élargies pour fonctionner, vous devez modifier la version du service de cluster (CSV) de votre opérateur.

Procédure

  1. Définissez la configuration du contexte de sécurité au niveau d'autorisation requis dans le CSV de votre opérateur, comme dans l'exemple suivant :

    Exemple <operator_name>.clusterserviceversion.yaml fichier avec les privilèges d'un administrateur de réseau

    ...
    containers:
       - name: my-container
         securityContext:
           allowPrivilegeEscalation: false
           capabilities:
             add:
               - "NET_ADMIN"
    ...

  2. Définissez les privilèges du compte de service qui permettent aux charges de travail de votre opérateur d'utiliser les contraintes de contexte de sécurité (SCC) requises, comme dans l'exemple suivant :

    Exemple de fichier <operator_name>.clusterserviceversion.yaml

    ...
      install:
        spec:
          clusterPermissions:
          - rules:
            - apiGroups:
              - security.openshift.io
              resourceNames:
              - privileged
              resources:
              - securitycontextconstraints
              verbs:
              - use
            serviceAccountName: default
    ...

  3. Modifiez la description CSV de votre opérateur pour expliquer pourquoi votre projet d'opérateur nécessite des autorisations accrues, comme dans l'exemple suivant :

    Exemple de fichier <operator_name>.clusterserviceversion.yaml

    ...
    spec:
      apiservicedefinitions:{}
      ...
    description: The <operator_name> requires a privileged pod security admission label set on the Operator's namespace. The Operator's agents require escalated permissions to restart the node if the node needs remediation.

5.9.4. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.