VsM*_*VsM 7 security docker docker-secrets
我有一个非 root 用户运行的 docker 容器以提高安全性,但它似乎无法访问我与之共享的秘密:
Importing account from "/run/secrets/authority.priv.json" failed: Permission denied (os error 13)
Run Code Online (Sandbox Code Playgroud)
我在我的 docker compose 中尝试了不同的解决方案:1. 将 uid 和 gid 设置为 1000(如果用户在容器内,则设置为 uid/gid) 2. 将模式设置为 0444 甚至 0777
但是这些都没有奏效,只有使用 root 才能使用这些秘密。
任何的想法?
额外的问题:在 kubernetes 中会出现同样的问题吗?
码头档案:
FROM parity/parity:v2.2.1
LABEL maintainer="vincent@serpoul.com"
# SAD but It seems impossible to read the secrets otherwise
USER root
VOLUME ["/home/parity/.local/share/io.parity.ethereum"]
ADD ./configPoANode.toml /home/parity/configPoANode.toml
ADD ./PoA.json /home/parity/PoA.json
ADD ./entrypoint.sh /home/parity/entrypoint.sh
ENTRYPOINT ["/home/parity/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)
附录:存储库(dockerfile 中有用户 ROOT):
小智 36
使用RUN --mount=type=secret,id=mysecret,uid=1000 cat /run/secrets/mysecret
mysecret你传递给哪里的docker build --secret id=mysecret,src=authority.priv.json是奇偶校验uid用户uid的。
这是因为您在 docker 容器中设置 root 用户,并且 root 拥有所有蒙特卷和文件,而不是我不确定是否存在的奇偶校验用户。
我会做以下事情:
USER root从 dockerfile 中删除。默认是root。
检查parity用户是否存在于容器中。
如果没有,请使用/home/parity目录创建它。
像您一样安装卷和文件。
RUN chown -R parity:parity /home/parity赋予新创建用户的所有权。
然后告诉容器默认使用新创建的用户USER parity
添加您可能需要的入口点,RUN chmod ug+x /home/parity/entrypoint.sh以确保它可以执行。
一切顺利(希望),运行容器时不需要设置任何用户,默认情况下USER parity将使用该parity用户。
| 归档时间: |
|
| 查看次数: |
1715 次 |
| 最近记录: |