
Ich führe Minikube auf einem MacOSX-Host mit einem VirtualBox-Hypervisor aus. Es teilt einen Ordner (/Users) mit dem Host. Wozu und wie sicher ist das? Sicher genug, um meinen Cluster online auszuführen?
Ich schätze, es ist schwierig, aus einem Container und dann aus einem Pod und dann aus der VM zu entkommen, aber ich bin einfach mit „ und „ hineingekommen minikube ssh
, ich wusste nichts von dem freigegebenen Ordner und dass die Shell es mir ermöglicht, den Host zu erkunden.
Antwort1
Nein, es ist nicht sicher. Stellen Sie sich vor, Sie haben einen Pod mit einem Container-Image bereitgestellt, das mit einer USER-Daemon-Direktive in der Docker-Datei erstellt wurde, wodurch der Container unter dem Daemon-Benutzer ausgeführt wird. Was passiert, wenn ein Angreifer Zugriff auf Ihr Image-Register erhält und ein anderes Image unter demselben Tag pusht? Das Image des Angreifers ist so konfiguriert, dass es als Root-Benutzer ausgeführt wird. Wenn Kubernetes eine neue Instanz Ihres Pods plant, lädt das Kubelet das Image des Angreifers herunter und führt den Code aus, den dieser darin eingegeben hat. Obwohl Container größtenteils vom Hostsystem isoliert sind, gilt es dennoch als schlechte Praxis, ihre Prozesse als Root auszuführen. Wenn beispielsweise ein Host-Verzeichnis in den Container eingebunden wird und der im Container ausgeführte Prozess als Root ausgeführt wird, hat er vollen Zugriff auf das eingebundene Verzeichnis, während er keinen Zugriff hat, wenn er als Nicht-Root-Benutzer ausgeführt wird. Um das zuvor beschriebene Angriffsszenario zu verhindern, können Sie angeben, dass der Container des Pods als Nicht-Root-Benutzer ausgeführt werden muss, wie in der folgenden Auflistung gezeigt.
apiVersion: v1
kind: Pod
metadata:
name: pod-run-as-non-root
spec:
containers:
- name: main
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
runAsNonRoot: true