#secret-store #file-path #decryption #encryption #data #directory #confidant

应用程序 streambed-confidant-cli

一个基于文件系统的密钥存储的 CLI 工具,应用 streambed-crypto 对数据进行处理

1 个不稳定版本

新功能 0.11.0 2024年8月16日

#5 in #secret-store

Apache-2.0

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