Django存储访问密钥的最佳实践

时间:2014-06-06 16:33:34

标签: django api passwords

在settings.py中存储您需要的API访问密钥的最佳方法是什么,但是您不想将其提交到git中?

2 个答案:

答案 0 :(得分:3)

我使用的环境文件保留在我的计算机上,并包含一些链接到我的环境的变量。

在我的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的情况下进行设置:)

说实话,我的主要目标不是与安全相关,而是与环境分裂有关。但这对我猜两个都有帮助。

答案 1 :(得分:2)

我在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中省略生产配置,或者将它移到你的仓库之外。