Как сохранить секрет SECRET_KEY в Django? - PullRequest
4 голосов
/ 09 мая 2020

Документация Django предлагает хранить SECRET_KEY в переменных среды, а не в файле settings.py.

Почему это считается более безопасным? Переменные среды представляют собой простые текстовые файлы, которые предлагают тот же уровень защиты, что и settings.py. Даже если права доступа к файлу установлены на root -only, я предполагаю, что это несложно сломать.

Мой вопрос: какие еще параметры существуют для хранения SECRET_KEY?

Или главный ключ, используемый для шифрования. From django -encrypted-secrets :

django -encrypted-secrets работает с использованием ключа (хранящегося локально в файле master.key или считываемого из переменная окружения DJANGO_MASTER_KEY) и чтение / запись секретов в зашифрованный файл secrets.yml.en c.

Если нет другого варианта, кроме обычного текстового файла или переменной окружения хранится локально. Как его можно защитить должным образом?

1 Ответ

4 голосов
/ 09 мая 2020

Причина, по которой это считается более безопасным, заключается в том, что вы должны иметь свой файл настроек в git или какой-либо другой VCS, чтобы иметь согласованную среду разработки, но ваши секреты должны быть за ее пределами. Таким образом, даже у разработчиков нет производственных секретов, если они им не нужны.

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

Другой вариант - использовать текстовый файл на сервере.

Хороший вариант, если вы хотите зашифровать секреты, - хранить их в зашифрованном виде в вашем решении непрерывной интеграции , который вводит их в среду во время развертывания. Travis CI, GitHub Actions, более или менее любое решение CI может это сделать.

Но в целом просто держать его вне VCS и ограничивать доступ к секретам обычно достаточно.

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