Docker 个秘密和 RSA 密钥
Docker secrets and RSA keys
我有一个 Docker 群,我想在服务中使用秘密 RSA 密钥通过 SSH 连接到另一个容器。
我的安全策略是所有机密(密码、密钥等)都存储在与目标服务器(Swarm)不同的机器上。
实际上(我不喜欢),在我的 Docker 文件中我创建了一个临时目录 /run/secrets
:
mkdir -p /run/secrets
然后我创建假的 id_rsa
和 id_rsa.pub
文件:
touch /run/secrets/id_rsa
touch /run/secrets/id_rsa.pub
现在我创建一个符号 link:
ln -s /run/secrets/id_rsa /root/.ssh/id_rsa
ln -s /run/secrets/id_rsa.pub /root/.ssh/id_rsa.pub
我这样做是因为我没有找到在我的 docker-entrypoint.sh
中复制秘密的方法:在入口点我不是 root,所以我不能在 /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:
我正在尝试更改构建 Docker 映像的方式,以便在 /root/.ssh
目录中复制密钥。
考虑使用撰写文件创建堆栈。
这使您可以选择更改机密的文件权限。
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
可以在此处找到更多信息:https://docs.docker.com/compose/compose-file/#long-syntax-2
我有一个 Docker 群,我想在服务中使用秘密 RSA 密钥通过 SSH 连接到另一个容器。
我的安全策略是所有机密(密码、密钥等)都存储在与目标服务器(Swarm)不同的机器上。
实际上(我不喜欢),在我的 Docker 文件中我创建了一个临时目录 /run/secrets
:
mkdir -p /run/secrets
然后我创建假的 id_rsa
和 id_rsa.pub
文件:
touch /run/secrets/id_rsa
touch /run/secrets/id_rsa.pub
现在我创建一个符号 link:
ln -s /run/secrets/id_rsa /root/.ssh/id_rsa
ln -s /run/secrets/id_rsa.pub /root/.ssh/id_rsa.pub
我这样做是因为我没有找到在我的 docker-entrypoint.sh
中复制秘密的方法:在入口点我不是 root,所以我不能在 /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:
我正在尝试更改构建 Docker 映像的方式,以便在 /root/.ssh
目录中复制密钥。
考虑使用撰写文件创建堆栈。 这使您可以选择更改机密的文件权限。
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
可以在此处找到更多信息:https://docs.docker.com/compose/compose-file/#long-syntax-2