Pod-Sicherheitsrichtlinie - Amazon EKS

Helfen Sie mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

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.

Pod-Sicherheitsrichtlinie

Der Zulassungscontroller für Kubernetes-Pod-Sicherheitsrichtlinien überprüft Pod-Erstellung und Update-Anfragen anhand einer Reihe von Regeln. Standardmäßig werden Amazon-EKS-Cluster mit einer vollständig permissiven Sicherheitsrichtlinie ohne Einschränkungen bereitgestellt. Weitere Informationen finden Sie unter Pod Security Policies in der Kubernetes-Dokumentation.

Anmerkung

PodSecurityPolicy (PSP) war in der Kubernetes-Version 1.21 veraltet und wurde in Kubernetes 1.25 entfernt. PSPs werden durch Pod Security Admission (PSA) ersetzt, einen integrierten Zulassungscontroller, die die in den Pod Security Standards (PSS) beschriebenen Sicherheitskontrollen implementiert. PSA und PSS haben beide den Beta-Featurestatus erreicht und sind in Amazon EKS standardmäßig aktiviert. Um das Entfernen von PSP in 1.25 anzugehen, empfehlen wir Ihnen, PSS in Amazon EKS zu implementieren. Weitere Informationen finden Sie unter Implementieren von Pod-Sicherheitsstandards in Amazon EKS im AWS-Blog.

Amazon-EKS-Pod-Standardsicherheitsrichtlinie

Amazon-EKS-Cluster mit Kubernetes-Version 1.13 oder höher verfügen über eine standardmäßige Pod-Sicherheitsrichtlinie mit dem Namen eks.privileged. Diese Richtlinie weist keine Einschränkungen hinsichtlich der Art der vom System akzeptierten Pod auf. Dies entspricht der Ausführung von 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 eks.privileged-Pod-Sicherheitsrichtlinie, ihre Clusterrolle und die Clusterrollenbindung in Installieren oder Wiederherstellen der standardmäßigen Pod-Sicherheitsrichtlinie anzeigen.

Löschen der standardmäßigen Amazon-EKS-Pod-Sicherheitsrichtlinie

Wenn Sie restriktivere Richtlinien für Ihre Pods erstellen, können Sie anschließend die standardmäßige eks.privileged-Pod-Sicherheitsrichtlinie von Amazon-EKS löschen, um Ihre benutzerdefinierten Richtlinien zu aktivieren.

Wichtig

Wenn Sie Version 1.7.0 oder höher des CNI-Plugins verwenden und dem aws-node–KubernetesServicekonto, das für die im Daemonset bereitgestellten aws-node-Pods verwendet wird, eine benutzerdefinierte Pod-Sicherheitsrichtlinie zuweisen, muss die Richtlinie NET_ADMIN im Abschnitt allowedCapabilities zusammen mit hostNetwork: true und privileged: true in den spec der Richtlinie enthalten.

So löschen Sie die Pod-Standardsicherheitsrichtlinie
  1. Erstellen Sie eine Datei namens privileged-podsecuritypolicy.yaml mit dem Inhalt in der Beispieldatei in Installieren oder Wiederherstellen der standardmäßigen Pod-Sicherheitsrichtlinie.

  2. Löschen Sie die YAML-Datei mit dem folgenden Befehl. Dadurch werden die standardmäßige Pod-Sicherheitsrichtlinie, das ClusterRole und das damit verknüpfte ClusterRoleBinding gelöscht.

    kubectl delete -f privileged-podsecuritypolicy.yaml

Installieren oder Wiederherstellen der standardmäßigen Pod-Sicherheitsrichtlinie

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

So installieren Sie die Standard-Pod-Sicherheitsrichtlinie oder stellen sie wieder her
  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 die YAML-Datei mit dem folgenden Befehl an.

    kubectl apply -f privileged-podsecuritypolicy.yaml