Как сохранить секреты, используемые в Dockerfile? - PullRequest
6 голосов
/ 17 октября 2019

Ниже приведен фрагмент файла docker-compose с паролями:

test:
  build: ../../
  dockerfile: docker/dev/Dockerfile
  volumes_from:
    - cache
  links:
    - db
  environment:
    DJANGO_SETTINGS_MODULE: todobackend.settings.test
    MYSQL_HOST: db
    MYSQL_USER: root
    MYSQL_PASSWORD: password
    TEST_OUTPUT_DIR: /reports

db:
  image: mysql:5.6
  hostname: db
  expose:
    - "3386"
  environment:
    MYSQL_ROOT_PASSWORD: password

Запуск этого файла в среде AWS,

Может использоваться сохранение KMS в s3 и другой подходтакое хранилище параметров AWS

При создании dockerfile и запуске контейнеров с использованием docker-compose Как безопасно хранить секреты, не подвергая их текстовым файлам? любой фрагмент кода ...

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Вы можете использовать интеграцию между ECS и Secrets Manager, чтобы поместить ссылки на секреты, хранящиеся в Secrets Manager, в определение задачи ECS, а затем сослаться на них как на переменные среды. Документы ECS предоставляют краткое руководство по этому вопросу (и есть более сложные сообщения в блоге ).

1 голос
/ 18 октября 2019

Можно придумать несколько возможных подходов.

  1. Сохраните секрет в переменной окружения, ссылаясь на переменную среды в вашем файле компоновки, например this
environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:

Ключи без какого-либо значения преобразуются в их значения на машине.

Другой подход может заключаться в использовании секретный ключ докера . Создайте секрет

$ printf "This is a secret" | docker secret create db_password -

Если это файл, его можно сохранить, как

$docker secret create site.key site.key

Доступ к секрету в вашем наборе, как показано ниже

version: '3.1'

services:
   db:
     image: mysql:latest
     volumes:
       - db_data:/var/lib/mysql
     environment:
       MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD_FILE: /run/secrets/db_password
     secrets:
       - db_root_password
       - db_password

Секретдоступно в папке / run / secrets.

Если вы фиксируете контейнер, секреты не включаются.

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