跳至主要内容

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

项目描述

senic.cryptoyaml

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

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

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

此包仅是一个针对该用例的便利包装。解析和写入YAML以及加密和解密的实际繁重工作由出色的库 PyYAMLcryptography 分别完成。此外,虽然它们支持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 (11.5 kB 查看散列值)

上传时间

由以下支持