更改Kubernetes中卷安装机密的所有者

时间:2018-08-30 00:10:48

标签: kubernetes

我将ssh私钥(/home/user/.ssh/id_rsa)作为容器中的卷装入机密。 Kubernetes似乎使用uid 0挂载了它。但是,我的应用程序以特定用户身份运行,因此无法访问ssh私钥,该私钥的最小权限必须为600。如何更改私钥的所有权以反映特定用户的所有权?

谢谢。

1 个答案:

答案 0 :(得分:2)

在Linux中,用户名已映射到用户ID,可以通过命令id -u someusername查看。

在许多情况下,SSH默认情况下要求您的SSH密钥由运行SSH的用户拥有,并对其他人600隐藏

因此,我强烈建议您复制密钥而不是挂载密钥,除非您的容器用户具有与您相同的用户ID。


如果使用的是Linux容器,则可以在容器内运行命令以获取确切的用户ID,然后使用用户ID(而不是用户名)整理文件。

kubectl exec -it mypod bashsh(如果bash不起作用) $ id -u someuser

OR

kubectl exec -it mypod id -u(如果您的容器中有一个用户启动了主进程)

之后

复制您的id文件,以便在不影响ssh的能力的情况下对其进行签名。

mkdir -p /data/secrets/myapp
cp /home/user/.ssh/id_rsa /data/secrets/myapp/id_rsa
chown $MYAPPUSERID:$MYAPPUSERID /data/secrets/myapp/id_rsa
chmod 600 /data/secrets/myapp/id_rsa

由于主机操作系统可能已经映射了该用户ID,因此可能似乎您的文件由另一个任意用户拥有,但最终重要的是所有者/组的用户ID。 / p>