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

问题描述 投票:0回答:4

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

目前,我已将它们放入名为

Constants.py
的空白文件中,并在主 python 文件中导入
Constants.py

API_KEY_SERVICE = "ABC123ABC"

主要.py:

import Constants
service_key = Constants.API_KEY_SENDGRID
python api-key bearer-token
4个回答
19
投票

您正在尝试的是从代码中分离敏感信息的正确方法。您应该在

constants.py
文件中包含
.gitignore
,这将阻止 git 跟踪该文件,从而不会将其推送到 github。

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


13
投票

有几个选项:

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

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

    找到更多有关步骤的信息
  3. 使用操作系统模块

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

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


5
投票

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

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


0
投票

还有另一种流行的方法。人们可以使用

.env
文件,并将其放置在项目的根目录中。同时,您应该在
.env
文件中包含
.gitignore

这种方法有什么不同,特别是对于那些没有订阅密钥管理服务的人?

© www.soinside.com 2019 - 2024. All rights reserved.