Docker+Django+SECRET_KEY: регенерировать?

Представьте, что вы создаете docker-compose.yml с Django и кучей кода и используете переменную среды для настройки SECRET_KEY в settings.py.

Если вы распространяете этот образ Docker, вы не будете делиться SECRET_KEY.

Какой SECRET_KEY следует использовать при развертывании вашего образа Docker?

Они не могут придумать свой собственный SECRET_KEY, верно?

Согласно документации, изменение секретного ключа сделает недействительным :

  • Все сеансы, если вы используете какой-либо другой сервер сеансов, кроме django.contrib.sessions.backends.cache, или используете get_session_auth_hash() по умолчанию.
  • Все сообщения, если вы используете CookieStorage или FallbackStorage.
  • Все токены PasswordResetView.
  • Любое использование криптографической подписи, если не предоставлен другой ключ.

Каков наилучший способ «восстановить» секретный ключ после развертывания контейнера Docker с кучей кода, который вы создали?

(Я искал и искал, но чувствую, что ищу не те вещи или полностью что-то упустил :-)


person DJF3    schedule 10.09.2019    source источник


Ответы (1)


Каждый, кто развертывает сервис самостоятельно, должен иметь свой SECRET_KEY. (Вы активно не хотите, чтобы вещи, которые вы описываете, разделялись между установками: если я вошел в свою копию вашей службы, я не смогу повторно использовать файл cookie сеанса в вашей копии.) Команда, которую я обычно использую для Это

dd if=/dev/urandom bs=60 count=1 | base64

который сгенерирует 80-символьный высококачественный случайный ключ.

Следствием этого является то, что вы не можете распространять зашифрованные данные с вашим изображением. Обычно это не проблема (трудно распространять предварительно заполненную реляционную базу данных в Docker), и если вы сделаете это, запустив миграцию базы данных и начальные задания при первом запуске, они смогут использовать любой ключ, который вы установили при установке.

person David Maze    schedule 10.09.2019