java - 在 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还有其他方法可以安全地存储密钥吗?
解决方案
推荐阅读
- php - 如何检查两个日期之间是否存在条目
- c# - 为什么 Xamarin ClipboardManager 不包含仅纯文本的 html?
- python - 使用 1.14 版中的预制 Estimator 进行推理的输入函数
- php - 在 cURL 中发送发布请求以获取 cookie 在一个虚拟主机上有效,但在另一个虚拟主机上无效
- php - .htaccess - 将所有 URL + 现有目录重定向到 index.php
- node.js - 从带有数据的nodejs向php Api发出请求
- javascript - 在 macOS 中停止 Webpack 的正确方法是什么?
- amazon-web-services - .NET Core Docker 镜像 - 推送新镜像,EB 不反映更改
- c# - 使用 JSON 在 Unity 中创建通知列表
- reactjs - 具有不同长度描述的卡片未对齐