#vault #security #encryption-key #hashi-corp #encryption-decryption #api-bindings #crypto

secret-keeper-hashivault

Hashivault SecretKeeper,是 Hashicorp Vault 对 https://crates.io/crates/secret-keeper 的集成

4 个版本

0.3.5 2020 年 7 月 11 日
0.3.4 2020 年 7 月 8 日
0.3.2 2020 年 7 月 1 日
0.3.0 2020 年 6 月 30 日

#20 in #hashi-corp


用于 encrypt-rs

Apache-2.0 OR MIT

145KB
2.5K SLoC

HashivaultKeeper - Hashicorp Vault 的 SecretKeeper 实现

此管理器封装了 hashicorp vault 'transit' 引擎的 API,用于加密和解密。此 API 完全异步,

设置

如果您还没有可用的 hashicorp vault,请查看示例目录(examples/README.md),其中包含在 docker 容器中设置 hashicorp vault 的详细说明。

示例/脚本文件夹还包括一些脚本,可以使用 'vault' 命令行程序(Linux 发行版的 'vault' 或 'vault-bin' 包的一部分)创建加密密钥。HashivaultKeeper 还实现了在 vault 服务器上创建新加密密钥的 API 方法。

使用此管理器

SecretKeeper URI 的形式为

  • hashivault://MYKEY(使用默认主机:端口 == localhost:8200)
  • hashivault://主机:端口/MYKEY
    • 此形式使用 http 进行本地主机,https 用于所有其他主机
  • hashivault:https://主机:端口/MYKEY
    • 此形式仅在推断出的 http/https 方案不正确时才需要

如果 URI 中未设置主机和端口,则检查 VAULT_ADDR。VAULT_ADDR 可以定义如下形式 'https://127.0.0.1:8200/'。如果 VAULT_ADDR 未设置,则使用 'http://127.0.0.1:8200'。

用于访问 vault 服务器的 REST API URL 的形式为

http(s)://host:port/v1/transit/(encrypt|decrypt|keys)/<KEY_NAME>

您可以使用 examples/encrypt-rs 命令行程序进行测试。确保设置了环境变量 VAULT_TOKEN

  source secret.env

然后,要将 FILE 加密到 FILE.ENC,请使用

  encrypt enc -o FILE.ENC -k hashivault://MYKEY FILE

解密时,请使用

  encrypt dec -o FILE.DUP -k hashivault://MYKEY FILE.ENC

默认参数下,此操作将使用新生成的 256 位密钥,使用 LZ4XChaCha20-Poly1305 压缩密码加密文件,将密钥加密到 vault 上的 MYKEY,并将加密密钥存储在 FILE.ENC 的头部。

依赖项

~10–14MB
~281K SLoC