【发布时间】:2014-07-28 00:17:50
【问题描述】:
在 settings.py 中存储您需要但又不想提交到 git 中的 API 访问密钥的最佳方法是什么?
【问题讨论】:
在 settings.py 中存储您需要但又不想提交到 git 中的 API 访问密钥的最佳方法是什么?
【问题讨论】:
我使用的环境文件保留在我的计算机上,并包含一些链接到我的环境的变量。
在我的 Django settings.py(在 github 上上传):
# MANDRILL API KEY
MANDRILL_KEY = os.environ.get('DJANGO_MANDRILL_KEY')
在开发环境中,我的 .env 文件(已从我的 Git 存储库中排除)包含:
DJANGO_MANDRILL_KEY=PuoSacohjjshE8-5y-0pdqs
这是 Heroku 提出的“模式”:https://devcenter.heroku.com/articles/config-vars
我想有一种简单的方法可以在不使用 Heroku 的情况下进行设置:)
说实话,我的主要目标与安全无关,而是与环境拆分有关。但我想这对双方都有帮助。
【讨论】:
我在settings.py 中使用了类似的东西:
import json
if DEBUG:
secret_file = '/path/to/development/config.json'
else:
secret_file = '/path/to/production/config.json'
with open(secret_file) as f:
SECRETS = json.loads(f)
secret = lambda n: str(SECRETS[n])
SECRET_KEY = secret('secret_key')
DATABASES['default']['PASSWORD'] = secret('db_password')
和 JSON 文件:
{
"db_password": "foo",
"secret_key": "bar"
}
这样您可以从 git 中省略生产配置或将其移出您的存储库。
【讨论】: