Policy di sicurezza pod - 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à.

Policy di sicurezza pod

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, i cluster Amazon EKS vengono forniti con una policy di sicurezza con autorizzazioni complete senza limitazioni. Per ulteriori informazioni, consulta Policy di sicurezza pod nella documentazione di Kubernetes.

Nota

La PodSecurityPolicy (PSP) attualmente è obsoleta in Kubernetes versione 1.21 e rimossa in Kubernetes 1.25. I PSPs verranno sostituiti con PSA (Pod Security Admission), un controller di ammissione integrato che implementa i controlli di sicurezza descritti in PSS (Pod Security Standards). PSA e PSS sono funzioni che entrambe hanno raggiunto lo stato beta e sono abilitate in Amazon EKS per impostazione predefinita. Per gestire la rimozione di PSP in 1.25, è preferibile implementare PSS in Amazon EKS. Per ulteriori informazioni, consulta Implementazione degli standard di sicurezza Pod in Amazon EKS nel blog AWS.

Policy di sicurezza Pod predefinita di Amazon EKS

I cluster Amazon EKS con Kubernetes versione 1.13 e successive hanno una policy di sicurezza per i Pod predefinita denominata eks.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 file YAML completo per la policy di sicurezza Pod eks.privileged, il ruolo del cluster e l'associazione del ruolo del cluster in Installazione o ripristinino della policy di sicurezza Pod predefinita.

Eliminazione della policy di sicurezza Pod predefinita di Amazon EKS

Se crei policy più restrittive per i Pods, successivamente potrai eliminare la policy di sicurezza Pod eks.privileged di Amazon EKS predefinita per abilitare le policy personalizzate.

Importante

Se si utilizza la versione 1.7.0 o successive del plug-in CNI e si assegna una policy di sicurezza del Pod personalizzata all'account del servizio Kubernetes aws-node utilizzato per i Pods aws-node implementati dal Daemonset, la policy deve avere NET_ADMIN nella sezione allowedCapabilities e inoltre hostNetwork: true e privileged: true nella spec della policy.

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

  2. Eliminare il file YAML con il comando seguente. 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 di Kubernetes o se hai modificato o eliminato la policy di sicurezza Pod eks.privileged di Amazon EKS predefinita, potrai ripristinarla completando la seguente procedura.

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

    kubectl apply -f privileged-podsecuritypolicy.yaml