从环境变量或文件中读取机密

devsecrets的Python项目详细描述


devsecrets:从环境变量或文件中读取机密

Linux buildWindows buildCode coverage report

为什么?

如果开发人员可以签出一个项目并立即运行 并通过他们的ide调试它。

对于需要敏感环境变量的代码,不能有 因为这需要在运行配置中签入机密。

什么?

DevSecrets让环境更接近理想 变量指向包含敏感信息的文件。

它无助于创建、保护或分发这些文件。

怎么做?

与其直接读取os.environ,不如在代码中使用devsecrets.read_secret()。 例如,如果访问DATABASE_URL变量:

from devsecrets import read_secret

DATABASE_URL = read_secret('DATABASE_URL')

在开发过程中,将DATABASE_URL环境变量设置为@.secrets

在项目目录中创建一个.secrets文件,其中包含一行

DATABASE_URL="driver://user:pass@host/dbname"

让你的版本控制系统忽略你的.secrets文件。

非开发环境呢?

不以@符号开头的环境值按原样返回 read_secret(),如果你已经在环境变量中有了秘密 在生产中,没有必要做任何不同的事情。

如果你真的想在制作中使用机密文件,这可能是有意义的 以绝对路径指向他们。

详细信息

read_secret()到底在哪里查找文件?

如果文件名是绝对的,则按原样使用。

否则,read_secret()将发现调用它的代码所在的位置,并 从那里开始。然后它沿着小路一直走到树根。

机密文件的格式是什么?

例如:

# comment
KEY1 = "value" #comment
key-2="#not-a-comment"

key_3 = "multiline\r\nvalue"

目前,必须引用值。

这只是因为出于权宜之计, 使用TOML解析器解析这些文件。

安装代码

请注意,安装代码的方式和位置很重要,因为read_secrets() 考虑调用代码所在的位置。如果是在网站包中 例如,/usr/lib~/.local/share/virtualenvs下的目录, 然后在~/projects/myproject中找不到.secrets文件。

这通常不是问题,因为安装代码时 python setup.py install --developpip install --editable所以您运行 您的代码来自您签出它的同一个地方。

安装

pip install devsecrets

运行测试

tox

版本控制

我们使用SemVer进行版本控制releases

许可证

这个项目是根据麻省理工学院的许可证授权的-请参见LICENSE.txt文件以了解详细信息

相关项目

python-dotenv

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我的int值在SharedReferences中不被记住   java如何编辑Spring可分页对象?   java如何在gradle中单独调用任务   jvm以编程方式设置最大java堆大小   java如果满足多个条件,如何使用If语句计算数字?   如何在java中从json文件中获取特定值   如何在Sphinx4中为Java语音识别添加自定义语法?   java int[]copy=data;//当数据是数组时会发生什么?   java豪猪管理器。停下来。destroy()不起作用   安卓在API级别28中找不到画布变量   基于SOLID的java冗余   用于talend作业的java Liferay和portlet   从java到安卓的视频流   java获取在控件的类定义中添加自定义控件的场景大小   awt Java IndexOutOfBoundsException   java如何使用Spring JmsTemplate更改MQ头   java遍历数组并打印每个对象   java Google Map api v2标记在我旋转手机和地图“刷新”之前不会移动