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

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如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求