1 个不稳定版本
新功能 0.11.0 | 2024年8月16日 |
---|
#5 in #secret-store
75KB
1.5K SLoC
confidant
该 confidant
命令提供了一种方便操作基于文件的密钥存储的工具。它通常与 logged
一起使用,作为前置阶段加密有效载荷,或作为后置阶段解密。不对有效载荷的性质做出任何假设,除了它使用 streambed 密码函数进行加密之外。
使用示例进行加密后解密
首先获取可执行文件
cargo install streambed-confidant-cli
...或者从这个仓库构建它
cargo build --bin confidant --release
...然后在 PATH 上创建一个构建版本(仅对 cargo build
有效,并且每个会话只执行一次)
export PATH="$PWD/target/release":$PATH
在使用 confidant
之前,您必须提供根密钥和一个 "密钥 ID"(密码)以验证会话。以下是一个包含一些示例数据的示例
echo "1800af9b273e4b9ea71ec723426933a4" > /tmp/root-secret
echo "unused-id" > /tmp/ss-secret-id
我们还需要为 confidant
创建一个目录,以便它能够读取和写入其密钥。confidant
库的一个安全特性是,该目录必须对用户具有 600
的权限。然后应该使用 ACL 来控制对单个进程的访问。以下是创建目录的方法
mkdir /tmp/confidant
chmod 700 /tmp/confidant
您通常会从您的生产系统获取上述密钥,最好是在它们离开您的生产系统之前。
给定根密钥,加密一些数据
echo '{"value":"SGkgdGhlcmU="}' | \
confidant --root-path=/tmp/confidant encrypt --file - --path="default/my-secret-path"
...这将输出
{"value":"EZy4HLnFC4c/W63Qtp288WWFj8U="}
该值现在已使用盐加密。
我们也可以以类似的方式解密
echo '{"value":"EZy4HLnFC4c/W63Qtp288WWFj8U="}' | \
confidant --root-path=/tmp/confidant decrypt --file - --path="default/my-secret-path"
...这将产生我们加密的原始 BASE64 值。
使用 --help
来发现所有选项。
依赖项
~12–21MB
~274K SLoC