【发布时间】:2019-04-22 11:30:51
【问题描述】:
为了更好的安全性,我有一个使用非 root 用户运行的 docker 容器,但它似乎无法访问我与之共享的秘密:
Importing account from "/run/secrets/authority.priv.json" failed: Permission denied (os error 13)
我在 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"]
附录:repository(dockerfile 中有用户 ROOT):
【问题讨论】:
-
我遇到了同样的问题。 Secret 需要非 root 用户读取,失败。 chmod 和 chown 也不起作用,因为它是“只读文件系统”。将内容复制到其他地方或保存在 ENV var 中会使秘密机制毫无意义。我很高兴有一个解决方案:)
标签: docker security docker-secrets