【问题标题】:Best Practices Python - Where to store API KEYS/TOKENS最佳实践 Python - 存储 API KEYS/TOKENS 的位置
【发布时间】:2019-07-11 18:30:10
【问题描述】:

我正在构建一个使用 API 令牌和密钥来访问服务的系统,但是存储它们的最佳位置在哪里?我想在不推送令牌的情况下将代码推送到 GitHub。

目前,我已将它们放在名为 Constants.py 的空白文件中,并且在主 python 文件中,我导入 Constants.py

API_KEY_SERVICE = "ABC123ABC"

Main.py:

import Constants
service_key = Constants.API_KEY_SENDGRID

【问题讨论】:

  • 一个选项是从环境变量中读取这些常量。这样你的源代码中就不会有任何秘密。
  • 首先,您应该将文件添加到.gitignore 以防止意外提交和推送。
  • 另一个正在使用 yaml 文件并将 .yaml 添加到 .gitignore

标签: python api-key bearer-token


【解决方案1】:

您尝试的是从代码中分离敏感信息的正确方法。您应该在您的.gitignore 文件中包含constants.py,这将阻止git 跟踪该文件,从而不会将其推送到github。

.gitignore,请参考:https://git-scm.com/docs/gitignore

【讨论】:

    【解决方案2】:

    有几个选项:

    1. 将其存储在本地,正如 Sebastin Santy 所说,将 constants.py 添加到您的 .gitignore 文件中。

    2. 如果您使用的是 conda 虚拟环境,请将其存储为环境变量。不存储虚拟环境;创建一个的要求在 requirements.txt 文件中。您可以从conda documetation 中找到更多关于步骤的信息

    3. 使用OS module

    4. 如果你有多个环境变量,你可以考虑使用decouple

    5. 如果您使用的是 AWS,您需要使用自己的 IAM 将(第三方)密钥存储在他们自己的区域中。 AWS 推荐了两种方式。

    【讨论】:

    • 我喜欢你在回答中包含 AWS,但我很好奇你为什么没有提到 AWS Secrets Manager?
    猜你喜欢
    • 2012-06-26
    • 2020-08-22
    • 2010-12-28
    • 2010-09-19
    • 2020-07-31
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多