
我在具有 VirtualBox 虛擬機器管理程式的 MacOSX 主機上執行 minikube。它與主機共用一個資料夾(/Users)。這是做什麼用的?
我猜想逃逸一個容器,然後是一個 Pod,然後是虛擬機是很困難的,但我只是簡單地進入了那裡minikube ssh
,我不知道共享資料夾,而且 shell 允許我探索主機。
答案1
不,這不安全。想像一下,部署了一個使用容器映像部署的 pod,該容器映像是使用 Dockerfile 中的 USER 守護程式指令建置的,這使得容器在守護程式使用者下運行。如果攻擊者訪問您的圖像註冊表並在同一標籤下推送不同的圖像怎麼辦?攻擊者的映像被配置為以 root 使用者身分執行。當 Kubernetes 安排 pod 的新實例時,Kubelet 將下載攻擊者的映像並執行他們放入其中的任何程式碼。儘管容器大多與主機系統隔離,但以 root 身分運行其進程仍然被認為是一種不好的做法。例如,當主機目錄掛載到容器中時,如果容器中運行的程序以 root 身份運行,則它具有對掛載目錄的完全訪問權限,而如果它以非 root 身份運行,則不會。為了防止前面描述的攻擊場景,您可以指定 pod 的容器需要以非 root 使用者身分執行,如下列表所示。
apiVersion: v1
kind: Pod
metadata:
name: pod-run-as-non-root
spec:
containers:
- name: main
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
runAsNonRoot: true