首页 > 解决方案 > 在 Spring Boot 应用程序中使用 Docker 保护密钥的最佳方法是什么

问题描述

最近,开始为我的应用程序构建 docker 映像。应用程序使用很少的密钥来连接其他微服务。我阅读了关于 swarm 模式的 docker 秘密,它保存了应用程序的秘密,我在应用程序中进行了更改以接受 docker 的秘密。我使用命令创建了秘密..

    printf "my-secrets12345" | docker secret create adminpassword

然后我使用以下命令和 docker-compose 文件部署服务..

    version: '3.1'
    services:
      testService:
        secrets:
         - adminpassword
        image: "test-docker-secret:latest"
        #container_name: test-docker-secret
        ports:
         - "8080:8080"
        environment:
          SPRING_PROFILES_ACTIVE: dev
          SERVER_SSL_ENABLED: "true"
        volumes:
         - /home/tridev/pathtocerts/:/tmp/certificates/
    secrets:
      adminpassword:
        external: true

和部署的

    docker stack deploy --compose-file=test-stack-compose.yml testservice

在此之后,我的服务开始并按预期工作,在这里我认为我的秘密以纯文本形式对任何人都不可见并且现在是安全的。但是当我进入容器并浏览目录/run/secrets/时,我可以在这里以纯文本形式看到我所有的秘密。我也可以通过使用从主机上看到我的秘密

    docker container exec $(docker ps --filter name=testservice -q) cat /run/secrets/adminpassword

在这里,我看到如果有人可以访问我的容器或服务,他可以看到秘密并访问其他服务的数据。在这里感觉 docker 的秘密是魔术师,秘密是可见的。

docker还有其他方法可以安全地存储密钥吗?

标签: javaspring-bootdockersecuritymicroservices

解决方案


推荐阅读