Stellen Sie die Guestbook-Anwendung in Ihrem Tanzu Kubernetes-Cluster bereit, um die Pod-Sicherheitsrichtlinie für Dienstkonten sowie die Bereitstellung und Diensterstellung zu untersuchen.
Das Bereitstellen der Guestbook-Anwendung ist eine gebräuchliche Methode zum Erkunden von Kubernetes. Falls Sie alle Guestbook-YAML-Dateien für einen vom Tanzu Kubernetes Grid-Dienst zur Verfügung gestellten Tanzu Kubernetes-Cluster bereitstellen, wird der Anwendungs-Pod nicht erfolgreich erstellt. Wenn Sie den Befehl kubectl describe pod
ausführen, wird sinngemäß folgende Fehlermeldung angezeigt:
“Error: container has runAsNonRoot and image will run as root”
Die Guestbook-Anwendung verwendet sowohl deployment
- als auch replicaset
-Ressourcen zum Bereitstellen von privilegierten Containern im Standard-Namespace. Da der PodSecurityPolicy-Controller für Tanzu Kubernetes-Cluster aktiviert ist, werden die Dienstkonten für diese Controller anhand der PodSecurityPolicy überprüft, wenn ein Clusterbenutzer versucht, einen Guestbook-Anwendungs-Pod zu erstellen. Wenn keine geeignete PSP an diese Dienstkonten gebunden ist, wird die Anwendung nicht bereitgestellt.
Standardmäßig können Tanzu Kubernetes-Administratoren mit ihren Benutzerkonten privilegierte Pods direkt in einem beliebigen Namespace erstellen. Die Guestbook-Anwendung stellt jedoch privilegierte Container mithilfe von Dienstkonten bereit. Ein Clusteradministrator kann Bereitstellungen, StatefulSets und ein DaemonSet im kube-system
-Namespace erstellen. Die Guestbook-Anwendung stellt diese Ressourcen im Standard-Namespace bereit. Darüber hinaus können Benutzer, die keine Administratoren sind, ohne die korrekte PSP und korrekte Bindungen keine privilegierten oder nicht privilegierten Pods erstellen.
Eine Lösung besteht darin, Bindungen zur privilegierten Standard-PSP zu erstellen, um die Bereitstellung der Guestbook-Anwendung zu ermöglichen. Die privilegierte PodSecurityPolicy lässt als „root“ ausgeführte Pods und privilegierte Container für gebundene Konten zu. Sie können ein ClusterRoleBinding erstellen, das vmware-system-privileged
clusterweit anwendet. Dies könnte jedoch zu einem Verstoß gegen das Prinzip des „geringsten Rechts“ verstoßen, indem mehr Berechtigungen erteilt werden als erforderlich. Der bessere Ansatz besteht darin, ein RoleBinding zu erstellen, mit dem die Systemdienstkonten die privilegierte PodSecurityPolicy-Ressource im Standard-Namespace verwenden können. Weitere Informationen finden Sie unter Beispiel für Rollenbindungen für die Pod-Sicherheitsrichtlinie.