Как лучше всего защитить секретные ключи с помощью Docker в приложении Spring Boot - PullRequest
2 голосов
/ 16 июня 2020

Недавно начал сборку 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, где я могу надежно хранить секретные ключи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...