Как использовать секреты докера без скопления роя?

В настоящее время мы работаем с приложением в одном док-контейнере, приложению нужны все виды конфиденциальных данных, которые должны передаваться как переменные среды,

Я помещаю их в команду запуска, чтобы они не попадали в образ, а затем в репозиторий, однако я получаю очень небезопасную команду запуска,

Теперь я понимаю, что секреты докеров существуют, однако, как я могу использовать их без развертывания кластера? или есть ли другой способ обезопасить эти данные?

С уважением,

3 ответа

Решение

Вы не можете... Это не поддерживает секреты без Роя. Если только вы не можете быть "Роем", используя только один узел.

Другое решение было бы, я думаю, использовать стороннее программное обеспечение хранилища, как этот:

https://www.vaultproject.io/

Но затем, чтобы использовать секреты в ваших контейнерах из Убежища, вам нужно прочитать документ.

Надеюсь, что это приведет вас к правильному пути, чтобы начать.

Да, вы можете использовать секреты, если вы используете композитный файл. (Вам не нужно запускать рой).

Вы используете файл compose с docker-compose: в файле docker-compose.yml есть документация для "секретов".

Я переключился на docker-compose, потому что хотел использовать секреты. Я счастлив, что сделал, это кажется намного более чистым. Каждый сервис отображается в контейнер. И если вы когда-нибудь захотите переключиться на запуск роя, вы уже там.

Примечание: секреты не загружаются в среду контейнера, они монтируются в /run/secrets/

Вот пример:

1) Структура проекта:

|
|---    docker-compose.yml
|---    super_duper_secret.txt

2) содержимое docker-compose.yml:

version: "3.6"

services:

  my_service:
    image: centos:7
    entrypoint: "cat /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./super_duper_secret.txt

3) содержимое super_duper_secret.txt:

Whatever you want to write for a secret really.

4) Запустите эту команду из корня проекта, чтобы увидеть, что контейнер имеет доступ к вашему секрету (должен быть запущен Docker и установлен docker-compose):

docker-compose up --build my_service

Вы должны увидеть, как ваш контейнер выводит ваш секрет.

Да (но на самом деле Нет)

Нет. В настоящее время Docker не поддерживает конфигурацию и секреты, если вы не в группе.

Но в спецификациях компоновки докера есть конфигурации и секретные спецификации компоновки.

Итак, как это работает?

На самом деле он создает том докера , чтобы вы поверили, что функциональность здесь, точнее, это монтирование Bind.

Это большая разница с Swarm, если вы хотите развернуть свое приложение удаленно!

пример

      services:
  test:
    image: alpine
    secrets:
      - source: my_secret
secrets:
  my_secret:
    file: $PWD/secret

относительно идентичен этому

      services:
  test:
    image: alpine
    volumes:
      - $PWD/secret:/run/secrets/my_secret:ro

Если вы смотрите на свои объемы сdocker inspect <container>если вы используете secret, вы увидите, что ваши секреты — это просто локальные тома привязки

Другие вопросы по тегам