【问题标题】:Django best practice for storing access keysDjango 存储访问密钥的最佳实践
【发布时间】:2014-07-28 00:17:50
【问题描述】:

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

【问题讨论】:

    标签: django api passwords


    【解决方案1】:

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

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

    说实话,我的主要目标与安全无关,而是与环境拆分有关。但我想这对双方都有帮助。

    【讨论】:

      【解决方案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 中省略生产配置或将其移出您的存储库。

      【讨论】:

      • 我相信你应该使用 json.load() 而不是 json.loads()。
      猜你喜欢
      • 2011-09-23
      • 2022-11-03
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多