簡體   English   中英

在 kubernetes 中運行時,我是否需要在 Dockerfile 中指定 UID

[英]Do I need to specify an UID in my Dockerfile when running in kubernetes

擁有這個 dockerfile:

FROM debian:stretch
CMD ["cat", "/tmp/secrets.txt"]

然后我可以運行

docker run -v /etc/shadow:/tmp/secrets.txt spycontainer

即使我不是 root,我也能看到/etc/shadow

Kubernetes 如何避免有人這樣做? 我是否需要確保每個圖像都有 dockerfile 中的 UID?

在 kubernetes 中,您可以使用pod 安全上下文

當您在沒有任何安全上下文的情況下運行容器時,帶有 run as root的 entrypoint 命令。 例如

$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
/ # ps aux
PID   USER     TIME  COMMAND
    1 root      0:00 sh

如果您使用如下安全上下文

spec:
  securityContext:
    runAsUser: 1000
    runAsGroup: 3000
    fsGroup: 2000

使用runAsUser ,您可以修改容器內進程的用戶 ID。 例如

$ kubectl apply -f https://k8s.io/examples/pods/security/security-context.yaml
$ kubectl exec -it security-context-demo -- sh
/ $ ps aux
PID   USER     TIME  COMMAND
    1 1000      0:00 sleep 1h
    6 1000      0:00 sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM