Comprendre les politiques de sécurité des Pod (PSP) créées par Amazon EKS - Amazon EKS

Aidez à améliorer cette page

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.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

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.

Comprendre les politiques de sécurité des Pod (PSP) créées par Amazon EKS

Le contrôleur d'admission à la politique de sécurité du Kubernetes Pod valide les demandes de création et de mise à jour du pod par rapport à 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 Pod Security Policies dans la documentation Kubernetes.

Note

La PodSecurityPolicy (PSP) était obsolète dans la version Kubernetes et supprimée dans Kubernetes. 1.21 1.25 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 résoudre le problème de la suppression du PSP dans1.25, nous vous recommandons d'implémenter le PSS dans Amazon EKS. Pour plus d'informations, consultez la section Implementation des normes de sécurité des pods dans Amazon EKS sur le AWS blog.

Politique de sécurité par défaut d'Amazon EKS pour Pod

Les clusters Amazon EKS dotés d'une version Kubernetes 1.13 ou supérieure ont une politique de sécurité Pod par défaut nommée. eks.privileged Cette politique n'impose aucune restriction quant au type de Pod pouvant être accepté dans le système, ce qui équivaut à exécuter Kubernetes avec le PodSecurityPolicy contrôleur 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 la politique de sécurité du eks.privileged Pod, son rôle de cluster et la liaison des rôles de cluster dans Installer ou restaurer la politique de sécurité par défaut du Pod.

Supprimer la politique de sécurité par défaut d'Amazon EKS Pod

Si vous créez des politiques plus restrictives pour vos pods, vous pouvez ensuite supprimer la politique de sécurité par défaut d'Amazon EKS eks.privileged Pod pour activer vos politiques personnalisées.

Important

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

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

  2. Supprimez le fichier YAML avec la commande suivante. Cela supprime la politique de sécurité par défaut du Pod, laClusterRole, et celle qui y est ClusterRoleBinding associée.

    kubectl delete -f privileged-podsecuritypolicy.yaml

Installer ou restaurer la politique de sécurité par défaut du Pod

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

  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