从环境变量或文件中读取机密
devsecrets的Python项目详细描述
devsecrets:从环境变量或文件中读取机密
为什么?
如果开发人员可以签出一个项目并立即运行 并通过他们的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 --develop
或pip install --editable
所以您运行
您的代码来自您签出它的同一个地方。
安装
pip install devsecrets
运行测试
tox
版本控制
许可证
这个项目是根据麻省理工学院的许可证授权的-请参见LICENSE.txt文件以了解详细信息