代码之家  ›  专栏  ›  技术社区  ›  Paul Rey

Docker机密和RSA密钥

  •  2
  • Paul Rey  · 技术社区  · 8 年前

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

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

    实际上(我不喜欢),我在Dockerfile中创建了一个临时目录 /run/secrets :

    mkdir -p /run/secrets
    

    然后我制造假货 id_rsa id_rsa.pub 文件夹:

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

    现在我创建了一个符号链接:

    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 目录

    所以,我已经在使用Docker secrets了,但这里的问题是,容器中的秘密是只读的。这会影响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\u rsa 文件,因为它是只读的。

    有没有解决方法或更好的方法?

    谢谢

    编辑1:

    /root/.ssh 目录

    1 回复  |  直到 8 年前
        1
  •  4
  •   Chris    8 年前

    考虑使用compose文件创建堆栈。 这使您可以选择更改机密的文件权限。

    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