在kubernetes中运行时,是否需要在Dockerfile中指定UID
拥有此dockerfile:在kubernetes中运行时,是否需要在Dockerfile中指定UID,docker,kubernetes,Docker,Kubernetes,拥有此dockerfile: FROM debian:stretch CMD ["cat", "/tmp/secrets.txt"] 然后我就可以跑了 docker run -v /etc/shadow:/tmp/secrets.txt spycontainer 即使我不是root,我也能看到/etc/shadow 库伯内特斯是如何避免有人这样做的?我是否需要确保每个图像的dockerfile中都有UID???您可以使用的kubernetes 当您在没有任何安全上下文的情况下运行容器时,en
FROM debian:stretch
CMD ["cat", "/tmp/secrets.txt"]
然后我就可以跑了
docker run -v /etc/shadow:/tmp/secrets.txt spycontainer
即使我不是root,我也能看到/etc/shadow
库伯内特斯是如何避免有人这样做的?我是否需要确保每个图像的dockerfile中都有UID???您可以使用的kubernetes 当您在没有任何安全上下文的情况下运行容器时,entrypoint命令将使用runasroot。比如说
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
/ # ps aux
PID USER TIME COMMAND
1 root 0:00 sh
$ 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
如果您像下面这样使用安全上下文
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
使用runAsUser
可以修改容器内进程的用户id。比如说
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
/ # ps aux
PID USER TIME COMMAND
1 root 0:00 sh
$ 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
在kubernetes中,您可以使用 当您在没有任何安全上下文的情况下运行容器时,entrypoint命令将使用runasroot。比如说
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
/ # ps aux
PID USER TIME COMMAND
1 root 0:00 sh
$ 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
如果您像下面这样使用安全上下文
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
使用runAsUser
可以修改容器内进程的用户id。比如说
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
/ # ps aux
PID USER TIME COMMAND
1 root 0:00 sh
$ 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
(您可以显式指定
-u 0
以强制容器以用户ID 0[根]运行,即使映像具有备用用户
;您也可以使用相同的技术编辑主机文件。这是Docker默认情况下需要sudo
访问的关键原因。)我不需要在笔记本电脑中执行sudo
,即可运行上一个容器。这让我很惊讶。我没有对卷影文件执行cat的权限,但我可以使用我发布的示例执行此操作(您可以显式指定-u 0
,以强制容器使用用户ID 0[root]运行),即使图像有一个备用的用户
;您也可以使用相同的技术来编辑主机文件。这是Docker默认需要sudo
访问的一个关键原因。)我不需要在笔记本电脑中运行上一个容器。这让我很惊讶。我没有权限对卷影文件执行cat,但我可以使用我发布的示例执行此操作