Politique de sécurité de pod - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Politique de sécurité de pod

Le contrôleur d'admission de la stratégie de sécurité de Pod Kubernetes valide les demandes de création et de mise à jour de Pod en fonction d'un ensemble de règles. Par défaut, les clusters Amazon EKS sont livrés avec une politique de sécurité entièrement permissive sans aucune restriction. Pour plus d'informations, consultez Stratégies de sécurité de Pod dans la documentation Kubernetes.

Note

PodSecurityPolicy (PSP) est devenue obsolète dans Kubernetes 1.21 et a été supprimée dans Kubernetes 1.25. Les PSPs sont remplacés par Pod Security Admission (PSA), un contrôleur d'admission intégré qui met en œuvre les contrôles de sécurité décrits dans les normes de sécurité des pods (PSS). PSA et PSS ont tous deux atteint des états de fonctionnalités bêta et sont activés par défaut dans Amazon EKS. Pour remédier à la suppression de PSP dans la version 1.25, nous vous recommandons d'implémenter PSS dans Amazon EKS. Pour plus d'informations, consultez la section Implémentation des normes de sécurité des pods dans Amazon EKS sur le blog AWS.

Stratégie de sécurité de Pod Amazon EKS par défaut

Les clusters Amazon EKS avec Kubernetes version 1.13 ou ultérieure ont une stratégie de sécurité de Pod par défaut nommée eks.privileged. Cette stratégie n'a aucune limite en ce qui concerne le type de Pod pouvant être accepté dans le système, ce qui équivaut à exécuter Kubernetes avec le contrôleur PodSecurityPolicy désactivé.

Note

Cette politique a été créée pour maintenir la rétrocompatibilité avec les clusters pour lesquels le contrôleur PodSecurityPolicy n'était pas activé. Vous pouvez créer des politiques plus restrictives pour votre cluster et pour les espaces de noms et comptes de service individuels, puis supprimer la politique par défaut pour activer les politiques plus restrictives.

Vous pouvez afficher la politique par défaut à l'aide de la commande suivante.

kubectl get psp eks.privileged

L'exemple qui suit illustre un résultat.

NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES eks.privileged true * RunAsAny RunAsAny RunAsAny RunAsAny false *

Pour plus de détails, vous pouvez décrire la politique avec la commande suivante.

kubectl describe psp eks.privileged

L'exemple qui suit illustre un résultat.

Name:  eks.privileged

Settings:
  Allow Privileged:                       true
  Allow Privilege Escalation:             0xc0004ce5f8
  Default Add Capabilities:               <none>
  Required Drop Capabilities:             <none>
  Allowed Capabilities:                   *
  Allowed Volume Types:                   *
  Allow Host Network:                     true
  Allow Host Ports:                       0-65535
  Allow Host PID:                         true
  Allow Host IPC:                         true
  Read Only Root Filesystem:              false
  SELinux Context Strategy: RunAsAny
    User:                                 <none>
    Role:                                 <none>
    Type:                                 <none>
    Level:                                <none>
  Run As User Strategy: RunAsAny
    Ranges:                               <none>
  FSGroup Strategy: RunAsAny
    Ranges:                               <none>
  Supplemental Groups Strategy: RunAsAny
    Ranges:                               <none>

Vous pouvez consulter le fichier YAML complet pour connaître la stratégie de sécurité du Pod eks.privileged, son rôle de cluster et la liaison du rôle de cluster dans Installer ou restaurer la stratégie de sécurité de Pod par défaut.

Supprimer la stratégie de sécurité de Pod Amazon EKS par défaut

Si vous créez des stratégies plus restrictives pour vos Pods, vous pouvez, après l'avoir fait, supprimer la stratégie de sécurité par défaut du Pod eks.privileged d'Amazon EKS pour activer vos stratégies personnalisées.

Important

Si vous utilisez la version 1.7.0 ou une version ultérieure du plug-in CNI et que vous attribuez une politique de sécurité de Pod personnalisée au compte de service aws-node Kubernetes utilisé pour les Pods aws-node déployés par le Daemonset, la politique doit comporter NET_ADMIN dans sa section allowedCapabilities, avec hostNetwork: true et privileged: true dans les spec de la politique.

Pour supprimer la stratégie de sécurité de Pod par défaut
  1. Créez un fichier nommé privileged-podsecuritypolicy.yaml avec le contenu du fichier d'exemple dans Installer ou restaurer la stratégie de sécurité de Pod par défaut.

  2. Supprimez le fichier YAML avec la commande suivante. Ceci supprime la stratégie de sécurité de Pod par défaut, le ClusterRole et le ClusterRoleBinding qui lui est associé.

    kubectl delete -f privileged-podsecuritypolicy.yaml

Installer ou restaurer la stratégie de sécurité de Pod par défaut

Si vous effectuez une mise à niveau à partir d'une version antérieure de Kubernetes ou si vous avez modifié ou supprimé la stratégie de sécurité de Pod par défaut eks.privileged Amazon EKS, vous pouvez la restaurer en procédant comme suit.

Pour installer ou restaurer la stratégie de sécurité de Pod par défaut
  1. Créez un fichier nommé privileged-podsecuritypolicy.yaml avec le contenu suivant.

    apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: eks.privileged annotations: kubernetes.io/description: 'privileged allows full unrestricted access to Pod features, as if the PodSecurityPolicy controller was not enabled.' seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policy spec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0 max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' readOnlyRootFilesystem: false --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:podsecuritypolicy:privileged labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policy rules: - apiGroups: - policy resourceNames: - eks.privileged resources: - podsecuritypolicies verbs: - use --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:podsecuritypolicy:authenticated annotations: kubernetes.io/description: 'Allow all authenticated users to create privileged Pods.' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policy roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:podsecuritypolicy:privileged subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated
  2. Appliquez le fichier YAML avec la commande suivante.

    kubectl apply -f privileged-podsecuritypolicy.yaml