Comprendi le politiche di sicurezza dei pod EKS create da Amazon (PSP) - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprendi le politiche di sicurezza dei pod EKS create da Amazon (PSP)

Il controller di ammissione della policy di sicurezza di Pod Kubernetes convalida le richieste di creazione e aggiornamento dei Pod rispetto a una serie di regole. Per impostazione predefinita, EKS i cluster Amazon vengono forniti con una politica di sicurezza completamente permissiva senza restrizioni. Per ulteriori informazioni, consulta Policy di sicurezza pod nella documentazione di Kubernetes.

Nota

La PodSecurityPolicy (PSP) è stata obsoleta nella versione e rimossa in. Kubernetes 1.21 Kubernetes 1.25 PSPsvengono sostituiti da Pod Security Admission (PSA), un controller di ammissione integrato che implementa i controlli di sicurezza delineati nei Pod Security Standards (). PSS PSAe PSS hanno entrambi raggiunto lo stato di funzionalità beta e sono abilitati in Amazon EKS per impostazione predefinita. Per risolvere il problema PSP della rimozione1.25, ti consigliamo di implementarlo PSS in AmazonEKS. Per ulteriori informazioni, consulta Implementazione degli standard di sicurezza dei Pod in Amazon EKS sul AWS blog.

Policy di Pod sicurezza EKS predefinita di Amazon

EKSI cluster Amazon con Kubernetes versione 1.13 o superiore hanno una policy di Pod sicurezza predefinita denominataeks.privileged. Questa policy non prevede limitazioni sul tipo di Pod che può essere accettato nel sistema, il che equivale all'esecuzione di Kubernetes con il controller PodSecurityPolicy disabilitato.

Nota

Questa policy è stata creata per mantenere la compatibilità con le versioni precedenti dei cluster che non hanno il controller PodSecurityPolicy abilitato. È possibile creare policy più restrittive per il cluster e per i singoli spazi dei nomi e gli account di servizio, quindi eliminare la policy predefinita per abilitare le policy più restrittive.

È possibile visualizzare la policy di default con il comando seguente.

kubectl get psp eks.privileged

Di seguito viene riportato un output di esempio:

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

Per ulteriori dettagli, è possibile descrivere la policy con il comando seguente.

kubectl describe psp eks.privileged

Di seguito viene riportato un output di esempio:

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>

Puoi visualizzare il YAML file completo della politica di eks.privileged Pod sicurezza, il relativo ruolo del cluster e l'associazione dei ruoli del cluster. Installazione o ripristinino della policy di sicurezza Pod predefinita

Eliminare la politica di EKS Pod sicurezza predefinita di Amazon

Se crei politiche più restrittive per le tuePods, dopo averlo fatto, puoi eliminare la politica di EKS eks.privileged Pod sicurezza Amazon predefinita per abilitare le tue politiche personalizzate.

Importante

Se utilizzi una versione 1.7.0 o successiva del CNI plug-in e assegni una politica di Pod sicurezza personalizzata all'account di aws-node Kubernetes servizio utilizzato per la aws-node Pods distribuzione da Daemonset, la policy deve avere NET_ADMIN nella sua allowedCapabilities sezione insieme hostNetwork: true e privileged: true nella politica. spec

Eliminazione della policy di sicurezza Pod predefinita
  1. Crea un file denominato privileged-podsecuritypolicy.yaml con il contenuto del file di esempio in. Installazione o ripristinino della policy di sicurezza Pod predefinita

  2. Eliminare il file YAML con il seguente comando. In questo modo viene eliminata la policy di sicurezza Pod predefinita, ClusterRole e ClusterRoleBinding ad esso associato.

    kubectl delete -f privileged-podsecuritypolicy.yaml

Installazione o ripristinino della policy di sicurezza Pod predefinita

Se stai effettuando l'aggiornamento da una versione precedente o hai modificato o eliminato la politica di Kubernetes EKS eks.privileged Pod sicurezza predefinita di Amazon, puoi ripristinarla con i seguenti passaggi.

Installazione o ripristino della policy di sicurezza Pod predefinita
  1. Crea un file denominato privileged-podsecuritypolicy.yaml con i seguenti contenuti.

    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. Applica il YAML con il seguente comando.

    kubectl apply -f privileged-podsecuritypolicy.yaml