用途
secrets 用于在主保险库(master vault)与各个项目之间管理加密密钥,底层使用 SOPS 与 Age 进行加密。它适合需要将密钥集中存放、按项目分发到本地 .env 的开发工作流。
主要能力
- 读取单个密钥:
secrets get EXA_API_KEY - 列出所有保险库文件及其密钥:
secrets list - 将整个文件解密到标准输出:
secrets decrypt research_keys - 添加或更新密钥(非交互、不提交):
secrets set research_keys 'NEW_KEY=value' - 添加或更新并提交推送:
secrets set research_keys 'NEW_KEY=value' --commit - 从保险库为项目初始化 .env:
cd ~/github/myproject && secrets init services
使用方式
secrets CLI 位于 ~/.local/bin/secrets,可在任意目录下运行。
将密钥拉取到项目:
- 确认项目需要哪些密钥(查看
.env.example或代码导入) - 运行
secrets init <namespace>从保险库写入 .env - 验证应用能否使用新密钥启动
将新密钥推送到保险库:
- 添加或更新:
secrets set <namespace> 'KEY=value' - 准备就绪后提交:
secrets set <namespace> 'KEY=value' --commit
常见用法示例:
# 查找某个密钥位于哪个保险库文件
secrets list | grep -i brave
# 提取密钥供脚本使用
BRAVE_KEY=$(secrets get BRAVE_API_KEY)
# 查看某个命名空间下的所有密钥
secrets decrypt research_keys
工作原理
- 保险库文件是 SOPS 加密的 dotenv,位于
~/github/oneshot/secrets/*.encrypted secrets get会在所有保险库文件中搜索该密钥secrets set会解密文件、合并新密钥、重新加密secrets init会将保险库文件解密为当前目录下的 .env- Age 密钥位于
~/.age/key.txt - SOPS 配置位于
~/github/oneshot/.sops.yaml
安全规则
- 绝不在输出中显示密钥值
- 写入前始终确认 .env 已加入 .gitignore
- 在保险库中按项目划分密钥命名空间
- 绝不提交明文密钥
- 绝不建议使用未加密的 .env 文件
故障排查
- 出现 “no matching creation rules found”:输入文件必须以 .encrypted 结尾(CLI 会自动处理)
- 出现 “key not found in any vault file”:该密钥不存在于任何保险库中,可用
secrets set添加 - 出现 “file not found”:用
secrets list查看可用的命名空间
限制
资料未提供关于平台支持、收费、价格或性能效果的信息。