Docker机密和RSA密钥

我有一个Docker群,我想在服务中使用一个秘密的RSA密钥,通过SSH连接到另一个容器。

我的安全策略是所有的秘密(密码,密钥等)都存储在与目标服务器(Swarm)不同的机器上。

其实(我不喜欢它),在我的Dockerfile中创build一个临时目录/run/secrets

 mkdir -p /run/secrets 

然后我创build伪造的id_rsaid_rsa.pub文件:

 touch /run/secrets/id_rsa touch /run/secrets/id_rsa.pub 

现在我创build一个符号链接:

 ln -s /run/secrets/id_rsa /root/.ssh/id_rsa ln -s /run/secrets/id_rsa.pub /root/.ssh/id_rsa.pub 

我这样做,因为我没有find一种方法来复制我的docker-entrypoint.sh的秘密:在入口点我不是根,所以我不能复制在/root目录。

所以,我已经在使用Docker的秘密了,但是这里的问题是容器中的秘密是只读的。 这会影响SSH的使用:

 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0444 for '/root/.ssh/id_rsa' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. 

我不能修改我的id_rsa文件的权限,因为它是只读的。

有没有解决方法或只是一个更好的方法来做到这一点?

谢谢

编辑1:

我试图改变我build立我的Docker镜像的方式,以便复制/root/.ssh目录中的键。

考虑用撰写文件创build一个堆栈。 这使您可以select更改秘密的文件权限。

 version: "3.1" services: redis: image: redis:latest deploy: replicas: 1 secrets: - source: my_secret target: redis_secret uid: '103' gid: '103' mode: 0440 secrets: my_secret: file: ./my_secret.txt my_other_secret: external: true 

更多信息可以在这里find: https : //docs.docker.com/compose/compose-file/#long-syntax-2