Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python环境中安全地存储REST API凭据以供访问_Python_Rest - Fatal编程技术网

在Python环境中安全地存储REST API凭据以供访问

在Python环境中安全地存储REST API凭据以供访问,python,rest,Python,Rest,我从一个软件程序(例如:Tradingview)中获得了大量的REST API 我希望安全地存储API凭据(例如密钥、机密) 我曾想过将它们放在数据库表中,但我并不完全喜欢将明文放在表中 我已经知道如何使用操作系统环境变量: [... snip ...] import os import sys import logging [... snip ...] LD_API_KEY = os.getenv("BINANCE_APIKEY") LD_API_SECRE

我从一个软件程序(例如:Tradingview)中获得了大量的REST API

我希望安全地存储API凭据(例如密钥、机密)

我曾想过将它们放在数据库表中,但我并不完全喜欢将明文放在表中

我已经知道如何使用操作系统环境变量:

[... snip ...]

import os
import sys
import logging

[... snip ...]

LD_API_KEY      = os.getenv("BINANCE_APIKEY")
LD_API_SECRET   = os.getenv("BINANCE_API_SECRET")
密钥存储在文件中,但正如前面提到的,我有许多API密钥

仅仅把它们放在服务器上(以明文形式)——即使文件是隐藏的——对我来说并不合适


有没有其他方法来存储API密钥?

关于这个主题有很多文章,快速搜索“存储API密钥”将为您带来一些有趣且信息丰富的阅读,因此我将在这里介绍我的经验

实际上,这取决于您的偏好、项目的要求和所需的安全级别。我个人已经找到了一些解决方案。下面是我的项目是如何随着时间的推移而发展的

每个键都存储在环境变量中 非常简单,只需对每个键使用
os.environ
。这很快就成为了管理上的一个难题,尤其是在部署到多个环境或为新的项目参与者设置环境时

存储在本地文件中的所有密钥 这只是源代码管理之外的一个文件,环境变量指向该文件。我从以下结构中的一个简单JSON文件开始

[
  {
    "name": "Service Name",
    "date": "1970-01-01",  // to track rotations
    "key": "1234abcd",
    "secret_key": "abcd1234"
  }
]
这个类为我访问了这个文件并返回了所需的密钥,因此我不必在访问API的每个脚本中重复
json.load()
或导入
os
。当我开始需要存储OAuth令牌时,这变得有点复杂

我最终将这个文件移动到一个私有的、加密的()本地git repo,这样团队成员也可以在他们的环境中使用这些密钥

使用秘密管理机构 推动远程工作迫使我创建一个远程API密钥访问和管理系统。我的团队讨论了许多解决方案,但最终我们达成了一致。前面提到的自定义类指向AWS而不是本地文件,与仅本地的解决方案相比,我们在安全性和灵活性方面得到了显著提高


有许多基于云的秘密管理解决方案,但我的项目已经高度集成了AWS,因此考虑到成本和限制,这是最有意义的。这也意味着每个团队成员现在只需要拥有AWS权限,并使用其帐户AWS API密钥进行访问。

谢谢您提供的信息。我使用AWS保存Gitlab服务器的夜间备份。我不知道亚马逊也提供了这个选项。我去看看。