一个用于管理加密YAML文件的Python库。
项目描述
senic.cryptoyaml
senic.cryptoyaml 是一个Python库,用于管理加密YAML文件,其动机是为应用程序提供一个API,以加密形式读取(和写入)可能敏感的配置设置(例如密码、个人用户信息)。
另一个动机是,即使在需要访问这些设置的私钥与设置本身一起持久化的场景中,其优势在于它使得删除这些设置变得非常简单:现在你只需正确地销毁密钥,而不用担心在存储设备上留下敏感的位和字节。
此包仅是一个针对该用例的便利包装。解析和写入YAML以及加密和解密的实际繁重工作由出色的库 PyYAML 和 cryptography 分别完成。此外,虽然它们支持Python 2.x和3.x,但此包仅针对Python >= 3.5(因为现在是2016年)。
API使用方法
这里有一个简单的示例
>>> from senic.cryptoyaml import generate_key, CryptoYAML >>> new_key = generate_key('secret') >>> config = CryptoYAML('/path/to/settings.yml.aes', keyfile=new_key)
最初,你必须生成一个密钥(它使用来自 cryptography 库的 Fernet对称加密),并使用它来构造一个CryptoYAML实例。
该实例提供了一个 data 属性,最初是一个空字典,你可以填充任意数据,前提是 PyYAML 库可以对其进行编码
>>> config.data['foo'] = 123
然而,请注意,只有当你像这样明确地将数据提交到磁盘时,数据才会持久化在文件系统上
>>> config.write()
一旦写入,只要原始的秘密仍然提供,就可以重新读取该文件
>>> reread = CryptoYAML('/path/to/settings.yml.aes', keyfile=new_key) >>> reread.data['foo'] >>> 123
命令行使用
拥有加密设置文件很方便,但有时你可能想从命令行查看它或操作它,而不是通过编程方式。
对于这个 cryptoyaml,有三个命令用于生成密钥、创建新文件、读取文件和设置单个设置
# cryptoyaml generate_key mysecret Created new private key at /Users/senic/Development/senic.cryptoyaml/mysecret # cryptoyaml create mysettings.yml.aes --keyfile mysecret created new file at /Users/senic/Development/senic.cryptoyaml/mysettings.yml.aes # cryptoyaml set mysettings.yml.aes foo bar --keyfile mysecret foo -> bar # cryptoyaml cat mysettings.yml.aes --keyfile mysecret {'foo': 'bar'}
环境变量
通常的做法是通过环境变量提供密钥。只需设置 CRYPTOYAML_SECRET,就可以在API使用和命令行中省略密钥。
发布信息
变更日志
版本遵循 CalVer,并遵循严格的向后兼容性策略。第三位数字仅用于回归。
0.1.1 (2017-01-03)
外观棕色袋发布…
变更
修复 README 标记。
修复命名空间声明(使其可以与其他 senic.* 包共存)。
0.1.0 (2016-12-20)
变更
初始发布。
项目详情
senic.cryptoyaml-0.1.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 130251efb1060881519f590510170c886bd359072f42d4056a2b75601df45407 |
|
MD5 | 12e4c3ff2a5fb4b778fa8f17115200f9 |
|
BLAKE2b-256 | 351ea8d6726386d04e04518b33c866a6890175a2ae0ee8f0a77e60c9395bf7e0 |