1

Мне действительно трудно скрыть свой чувствительный материал в настройках django.py Я попытался создать отдельный файл настроек для локальных и производство найдено here люди советуют, а затем останавливаются на полпути. Я также пытался создать файл с именем secrets.py в моем основном файле, где мой WSGI и настройка и т.д., и пытался это сделатьЯ изо всех сил пытаюсь скрыть свою чувствительную информацию в настройках django.py

DEBUG = True 

if DEBUG: 
    from .secrets import SECRET_KEY_LO 
    this = SECRET_KEY_LO 
    SECRET_KEY = this 
else: 
    SECRET_KEY = os.environ['SECRET_KEY'] 

, но это не сработало. Каков способ профессионального программирования? Поэтому мне не нужно вручную менять DEBUG true для DEBUG false все время, когда он чувствует себя очень новичком, и это может быть ужасно раздражающим

+1

Что это не сработало? – IanAuld

ответ

0

Вы можете использовать файл config.json, чтобы сохранить все свои секреты. Вы можете добавить этот файл в свой .gitignore, чтобы он не загружался в ваш репозиторий в облаке (например, GitHub). Затем вы можете сделать файл settings.py прочитанным файлом config.json и начать присваивать значения требуемым переменным Python.

0

Two scoops of django, один из наиболее ценных текстов Джанго лучших практик объясняет эту проблему следующим образом: Вы должны создать каталог settings где вы храните иерархию настроек файлов, которые import друг от друга. Затем вы должны запустить django, используя переключатель --settings, а также настроить файл настроек в wsgi.py.

Затем вы создаете файл (скажем local_secret.py), содержащий только секретные ключи (ключи API и т. Д.) И import остальные настройки из остальных файлов. Вы сохраняете local_secrets.py из репозитория кода (например, с помощью .gitignore).

This question has an answer by omouse and gene_wood это - подробнее. Этот вопрос касается локальной и производственной среды, а не секретного ключа, помните об этом.

+0

спасибо за ответ. Я действительно пытался это сделать до этого, и я продолжал получать ошибки. Это не позволило мне выполнить git push heroku master, не выбросив меня на ошибку. – nothingness

+0

Провал «git push heroku master» (предположим) произошел из-за невоспроизводимых файлов. Это означает, что '.gitignore' не игнорирует ваш файл или что' .gitignore' не выполняется, и геройку его не видит. – grochmal

1

Посмотрите на django-configurations. Он имеет встроенную поддержку для размещения значений по умолчанию, которые не являются секретными, а затем делает их требуемыми и разными в Prod. Эти значения поставляются через переменные среды, поэтому он немного перемещает проблему по цепочке.

Как только у вас есть хорошие значения для тестирования, вы столкнулись с проблемой развертывания того, как вы скрываете секретные значения. Кажется, что у каждой PAAS есть своя версия, как и многие системы управления конфигурацией (Chef, Puppet, Salt, Ansible и т. Д.). Один из лучших, что я нашел, использовал credstash в развертывании AWS. Ваш сценарий запуска на сервере просто должен сделать несколько звонков на credstash get, а затем передать эти значения вниз, как переменные ENV, в guniororn/uwsgi/whatever, а затем django-configurations выбирает их и применяет. Это, очевидно, зависит от AWS, так что это зависит от того, где вы развертываетесь, но основная идея остается прежней. Получите секретное значение и подайте его на свой сервис через ENV.

+1 для рассмотрения всего вопроса перед проверкой секретных значений. Все, что часто бывает очень легко сделать немного google dorking на github для таких вещей.