我想使用SecurityContext.RunAsUser
保护我的集群。问题很简单:我应该使用哪个用户?
我知道容器内具有UID 1001(例如)的用户是主机上具有UID 1001的用户。那么,是否应该在所有主机上创建一个UID为1001且名为pod_user
的用户,并强制所有Pod使用该用户?还是应该验证所有主机上都没有使用此UID的用户?我没有找到关于此的最佳做法指南。
关于Dockerfile,我有相同类型的问题:我应该在Dockerfile中使用特定UID声明用户,然后在SecurityContext.RunAsUser
中重用它吗?一些正式镜像在Dockerfile中使用特定的硬编码用户运行,而其他一些则以无人运行。我发现了这个有趣的帖子,但没有明确的答案:Kubernetes: Linux user management。
最佳答案
我的理想建议是:
RUN adduser
将创建一个非root用户,并在完成所有软件安装USER
切换到该用户。唯一存在实际问题的地方是容器是否尝试将数据存储在卷中。同样,理想的情况是完全避免这种情况。如果可能的话,最好使用数据库或云存储。
如果确实需要使用本地卷,则可以使用补充的
fsGroup:
专门使用configure a security policy。那是一个任意的数字组ID(不是用户ID),它将拥有卷中的文件,也将被添加到主容器进程的组列表中。apiVersion: v1
kind: Pod
spec:
securityContext:
fsGroup: 12345 # or any numeric gid
根本不要使用hostPath
卷:如果重新安排Pod的时间,则不能保证每个节点上的内容都是相同的;如果节点发生故障,仅位于该节点上的内容将丢失。
关于linux - 如何使用Kubernetes管理Linux用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64065725/