Управление секретами django

Я создаю веб-приложение Django, которое будет размещено в AWS. Я разрабатываю на своем ноутбуке (Mac) и использую docker compose для запуска базы данных postgres в AWS. Соответственно, иногда я использую базу данных разработки с моего Mac в PyCharm, а иногда мне нужно скомпилировать и запустить docker, чтобы проверить, что функциональность работает в контейнере

Проблема, с которой я столкнулся, заключается в управлении секретами во всех этих местах. Было бы идеально иметь одно "хранилище секретов", к которому можно было бы получить доступ во время выполнения либо из докера, либо из PyCharm, чтобы упростить жизнь. Я знаком с .env файлами и способом их импорта, но это также требует копирования их в контейнер docker во время сборки.

Существует ли какой-то "простой, но надежный" способ более легкого управления этим? Мне кажется, что наличие копий разных .env файлов в разных окружениях сопряжено с определенными рисками.

После некоторых исследований я решил использовать для этой цели Amazon Secrets Manager (https://aws.amazon.com/secrets-manager/). Таким образом, мне нужно беспокоиться только о двух ключевых значениях, чтобы защитить все мои переменные. Я отредактировал свой файл .profile (как в локальном, так и в докерном окружении), включив в него:

export aws_access_key_id=AWSPUBLICKEY
export aws_secret_access_key=AWSSUPERSECRETKEY

В Python я импортирую переменные окружения и могу получить доступ к секретам AWS следующим образом (обратите внимание, что мне пришлось ссылаться на "secret_name", используя полный адрес arn):

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

Вернуться на верх