跳转到主要内容

用于管理加密YAML文件的Python库。

项目描述

senic.cryptoyaml

https://travis-ci.org/getsenic/senic.cryptoyaml.svg?branch=master

cryptoyaml 是一个用于管理加密YAML文件的Python库,其动机是为应用程序提供API来以加密形式读取(和写入)可能敏感的配置设置(例如密码、个人信息)。

另一个动机是,即使在需要持久化私钥以访问这些设置的场合,这种优势在于它变得非常简单:你现在只需正确销毁密钥,而不用担心在存储设备上留下敏感的位和字节。

这个包简单来说是一个针对该用例定制的便利包装器。解析和写入YAML以及加密和解密的实际工作由出色的库 PyYAMLcryptography 分别完成。此外,虽然它们支持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 (17.1 kB 查看哈希值)

上传时间 源代码

由支持