Как скрыть секретный ключ с помощью virtualenv и Django?

Я использую Джанго, python, виртуальное окружение, virtualenvwrapper и залетный.

до сих пор я просто оставил свой secret_key внутри . Это работает файл для локальных файлов. Однако я уже разместил свои файлы в Git. Я знаю, что это неприемлемо для производства(Apache).

каков правильный способ скрыть мой secret_key?

должен ли я использовать virtualenv чтобы скрыть это?

3 ответов


есть много различных методов, чтобы скрыть секреты.

  1. используйте другой, не версионный файл.

    создать новый файл secrets.py или что у вас есть и положить ваши секреты в этом. Поместите его рядом с файлом настроек и поместите туда все секретно; затем в файл настроек поместите from secrets import * в верхней части. Затем, как сказал Рахул, добавьте


вы можете создать файл с именем secret_settings.py и место вашей SECRET_KEY внутри этого файла. Затем добавьте этот файл в .gitignore. Затем в настройках вы можете удалить переменную секретного ключа и импортировать ее оттуда. Это должно гарантировать, что SECRET_KEY переменной остается вне контроля версий.

создайте файл с именем secret_settings а затем поместите свой SECRET_KEY и другие секретные настройки в нем.

SECRET_KEY = .. # add your setting here

затем в settings.py file, импортируйте эти настройки.

from secret_settings import *

наконец, добавьте secret_settings.py на .

Примечание:

если вы уже зафиксировали некоторые конфиденциальные данные в своем РЕПО, измените его!

по состоянию на Github на сайте удаление конфиденциальных данных статьи:

если вы совершили пароль, изменить его! Если вы совершили ключ, создайте новый.

Регистрация это ссылке о том, как очистить файл от истории вашего репозитория.


общий подход, если вы хотите настроить регион, но не хотите хранить конфиденциальную информацию в РЕПО, - это передать ее через переменные среды. Когда вам это нужно, просто позвоните os.environ('SECRET') (даже в свой settings.py). Лучше с некоторой резервной стоимостью.

Virtualenv не помогает вам скрыть что-либо, это просто мешает вам общесистемной установке Python от засорения одним проектом необходимых пакетов.