用于管理加密YAML文件的Python库。
项目描述
senic.cryptoyaml
cryptoyaml 是一个用于管理加密YAML文件的Python库,其动机是为应用程序提供API来以加密形式读取(和写入)可能敏感的配置设置(例如密码、个人信息)。
另一个动机是,即使在需要持久化私钥以访问这些设置的场合,这种优势在于它变得非常简单:你现在只需正确销毁密钥,而不用担心在存储设备上留下敏感的位和字节。
这个包简单来说是一个针对该用例定制的便利包装器。解析和写入YAML以及加密和解密的实际工作由出色的库 PyYAML 和 cryptography 分别完成。此外,虽然它们支持Python 2.x和3.x,但此包仅针对Python >= 3.5(因为现在是2016年)。
API使用
这里有一个简单的示例
>>> from cryptoyaml import generate_key, CryptoYAML >>> new_key = generate_key('secret') >>> config = CryptoYAML('/path/to/settings.yml.aes', keyfile=new_key)
最初,你必须生成一个密钥(它使用Fernet对称加密,来自cryptography库),并使用它来构建一个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.2.0 (2017-02-27)
重新发布为 cryptoyaml(而不是 senic.cryptoyaml),以简化打包并降低品牌影响。
0.1.1 (2017-01-03)
外观上的棕色袋子发布...
修复 README 标记。
修复命名空间声明(以允许它与其他 senic.* 包共存)。
0.1.0 (2016-12-20)
初始发布。
项目详情
cryptoyaml-0.2.0.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7266aed9c454bc939a259f702c6e39cc251e013e6c8934e1f2665e1deb474782 |
|
MD5 | 4af0d2a6d31af3c03d8a0270a702838a |
|
BLAKE2b-256 | 071460f0a7a135b5eabc957f3de0c817a26a7ce07ea48553c5b9e7a6c33a1c66 |