我正在构建一个使用 API 令牌和密钥访问服务的系统,但存储它们的最佳位置在哪里?我想在不推送令牌的情况下将代码推送到 GitHub。
目前,我将它们放在一个名为 Constants.py
的空白文件中,并在主 python 文件中导入Constants.py
.
API_KEY_SERVICE = "ABC123ABC"
Main.py:
import Constants
service_key = Constants.API_KEY_SENDGRID
您正在尝试的是将敏感信息与代码隔离的正确方法。您应该在.gitignore
文件中包含constants.py
,这将阻止 git 跟踪该文件,从而不会将其推送到 github。
对于 .gitignore,请参考:https://git-scm.com/docs/gitignore
有几个选项:
-
像以前一样将其存储在本地,正如Sebastin Santy所指出的那样,将 constants.py 添加到您的.gitignore 文件中。
-
如果您使用的是 conda 虚拟环境,请将其存储为环境变量。不存储虚拟环境;创建要求的要求在 requirements.txt 文件中。您可以从 conda 文档中找到有关步骤的更多信息
-
使用操作系统模块
-
如果您有多组环境变量,则可以考虑使用解耦
-
如果您使用的是 AWS,则需要使用自己的 IAM 将(可能是第三方(密钥存储在自己的区域中。AWS 推荐了两种方法。
- a. IAM 角色
- b. 使用参数存储存储机密
- c. 使用密钥管理器存储密钥 - AWS 推荐的当前方法
这里有一些很好的答案。为了添加它们,我认为我们还可以使用钥匙环模块,它将从 Windows 凭据或 Mac OS 钥匙串读取凭据。但我很想听听社区的想法。谢谢。
这是该链接 - https://pypi.org/project/keyring/