最佳实践 Python - 在哪里存储 API 密钥/令牌

Rod*_*ovi 7 python api-key bearer-token

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

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

API_KEY_SERVICE = "ABC123ABC"

主要.py:

import Constants
service_key = Constants.API_KEY_SENDGRID
Run Code Online (Sandbox Code Playgroud)

hro*_*okr 13

有以下几种选择:

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

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

  3. 使用操作系统模块

  4. 如果您有不止一组环境变量,您可以考虑使用解耦

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

  • 我喜欢您在答案中包含 AWS,但我很好奇您为什么没有提到 AWS Secrets Manager? (3认同)
  • @BilliD - 不,你是对的。那是一个疏忽。感谢您指出。 (2认同)

Seb*_*nty 5

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

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


小智 5

这里有一些很好的答案。为了添加它们,我认为我们还可以使用密钥环模块,该模块将从 Windows 凭据或 Mac OS 钥匙串中读取凭据。但我很想听听社区的想法。谢谢。

这是该链接 - https://pypi.org/project/keyring/