Как правильно поступить с хранением и использованием конфиденциальных данных в среде prod?
У меня есть веб-приложение django в производственной среде, размещенное на сервере. Для хранения конфиденциальных данных я использую .env
файл, исключенный из моего процесса git, хранящийся на сервере, где размещено мое приложение.
# .env file
{
"ENV_TYPE": "prod",
"SECRET_KEY": "mysecretkey",
"ALLOWED_HOSTS":[
"somewhere.com"
],
"DEBUG": false,
"STATIC_ROOT": "/somewhere/staticfiles",
"DATABASES": {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "databaseName",
"USER": "username",
"PASSWORD": "myPassword",
"HOST": "somewhereelse.com"
}
}
}
А в моем приложении я получаю обратно данные, например, такие setting.py
:
# setting.py
# Get back non secret env data such as DEBUG, ALLOWED HOSTS
with open(os.path.join(BASE_DIR, '.env'), 'r') as f:
env_data = json.load(f)
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env_data["SECRET_KEY"]
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env_data["DEBUG"]
ALLOWED_HOSTS = env_data["ALLOWED_HOSTS"]
Вы считаете, что это хороший способ действовать? Ведь у меня до сих пор где-то на сервере есть пароли, которые жестко закодированы.