Недавно начал сборку docker образа для своего приложения. Приложение использует несколько секретных ключей, которые используются для подключения других микросервисов. Я читал о секретах docker в режиме роя, которые хранят секреты приложения, и я внес изменения в приложение, чтобы принимать секреты docker. Я создал секреты с помощью команды ..
printf "my-secrets12345" | docker secret create adminpassword
Затем я развернул службу, используя следующую команду с docker -compose file ..
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, где я могу надежно хранить секретные ключи?