Verstehen Sie die EKS von Amazon erstellten Pod-Sicherheitsrichtlinien (PSP) - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verstehen Sie die EKS von Amazon erstellten Pod-Sicherheitsrichtlinien (PSP)

Das Tool Kubernetes Pod Der Access Controller für Sicherheitsrichtlinien validiert Pod Erstellungs- und Aktualisierungsanforderungen anhand einer Reihe von Regeln. Standardmäßig werden EKS Amazon-Cluster mit einer vollständig zulässigen Sicherheitsrichtlinie ohne Einschränkungen ausgeliefert. Weitere Informationen finden Sie unter Pod-Sicherheitsrichtlinien im Kubernetes -Dokumentation.

Anmerkung

Das PodSecurityPolicy (PSP) war veraltet in Kubernetes Version 1.21 und entfernt in Kubernetes 1.25. PSPs werden durch Pod Security Admission (PSA) ersetzt, einen integrierten Zugangscontroller, der die in den Pod Security Standards (PSS) beschriebenen Sicherheitskontrollen implementiert. PSAund PSS haben beide den Status der Beta-Funktionen erreicht und sind EKS standardmäßig in Amazon aktiviert. Zu adressieren PSP Entfernung in1.25, wir empfehlen Ihnen, die Implementierung PSS in Amazon vorzunehmenEKS. Weitere Informationen finden Sie im AWS Blog unter Implementierung von Pod-Sicherheitsstandards in EKS Amazon.

EKSAmazon-Standard Pod Sicherheitsrichtlinie

EKSAmazon-Cluster mit Kubernetes Version 1.13 oder höher haben eine Standardeinstellung Pod Sicherheitsrichtlinie benannteks.privileged. Diese Richtlinie hat keine Beschränkung in Bezug auf die Art von Pod kann in das System aufgenommen werden, was dem Ausführen entspricht Kubernetes mit deaktiviertem PodSecurityPolicy Controller.

Anmerkung

Diese Richtlinie wurde erstellt, um die Rückwärtskompatibilität mit Clustern aufrechtzuerhalten, für die der PodSecurityPolicy-Controller nicht aktiviert war. Sie können restriktivere Richtlinien für Ihren Cluster und für einzelne Namespaces und Service-Konten erstellen und dann die Standardrichtlinie löschen, um die restriktiveren Richtlinien zu aktivieren.

Sie können die Standardrichtlinie mit dem folgenden Befehl anzeigen.

kubectl get psp eks.privileged

Eine Beispielausgabe sieht wie folgt aus.

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

Um weitere Details anzugeben, können Sie die Richtlinie mit dem folgenden Befehl beschreiben.

kubectl describe psp eks.privileged

Eine Beispielausgabe sieht wie folgt aus.

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>

Sie können die vollständige YAML Datei für die ansehen eks.privileged Pod Sicherheitsrichtlinie, ihre Clusterrolle und die Clusterrollenbindung finden Installieren oder stellen Sie die Standardeinstellung wieder her Pod Sicherheitsrichtlinie Sie unter Installieren oder Wiederherstellen der standardmäßigen Pod-Sicherheitsrichtlinie.

Löschen Sie das Standard-Amazon EKS Pod Sicherheitsrichtlinie

Wenn Sie restriktivere Richtlinien für Ihre erstellen Pods, danach können Sie den Standard-Amazon löschen EKS eks.privileged Pod Sicherheitsrichtlinie, um Ihre benutzerdefinierten Richtlinien zu aktivieren.

Wichtig

Wenn Sie eine Version 1.7.0 oder eine neuere Version des CNI Plugins verwenden und eine benutzerdefinierte Version zuweisen Pod Sicherheitsrichtlinie für aws-node Kubernetes Dienstkonto, das für das verwendet wird aws-node Pods vom Daemonset bereitgestellt, dann muss die Richtlinie NET_ADMIN in ihrem allowedCapabilities Abschnitt zusammen mit hostNetwork: true und privileged: true in der Richtlinie enthalten sein. spec

  1. Erstellen Sie eine Datei mit dem Namen privileged-podsecuritypolicy.yaml mit dem Inhalt der Beispieldatei unter Installieren oder stellen Sie die Standardeinstellung wieder her Pod Sicherheitsrichtlinie Installieren oder Wiederherstellen der standardmäßigen Pod-Sicherheitsrichtlinie.

  2. Löschen Sie das YAML mit dem folgenden Befehl. Dadurch wird die Standardeinstellung gelöscht Pod SicherheitsrichtlinieClusterRole, die und die ClusterRoleBinding damit verknüpften.

    kubectl delete -f privileged-podsecuritypolicy.yaml

Installieren oder stellen Sie die Standardeinstellung wieder her Pod Sicherheitsrichtlinie

Wenn Sie ein Upgrade von einer früheren Version von durchführen Kubernetes, oder haben das Standard-Amazon geändert oder gelöscht EKS eks.privileged Pod Sicherheitsrichtlinie, Sie können sie mit den folgenden Schritten wiederherstellen.

  1. Erstellen Sie eine Datei mit dem Namen privileged-podsecuritypolicy.yaml und den folgenden Inhalten.

    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. Wenden Sie das YAML mit dem folgenden Befehl an.

    kubectl apply -f privileged-podsecuritypolicy.yaml