SuperAPI AI 工具集

secrets

安全与审计

查看项目

更新于 10-16 10:06

技能介绍

用途

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,可在任意目录下运行。

将密钥拉取到项目:

  1. 确认项目需要哪些密钥(查看 .env.example 或代码导入)
  2. 运行 secrets init <namespace> 从保险库写入 .env
  3. 验证应用能否使用新密钥启动

将新密钥推送到保险库:

  1. 添加或更新:secrets set <namespace> 'KEY=value'
  2. 准备就绪后提交: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 查看可用的命名空间

限制

资料未提供关于平台支持、收费、价格或性能效果的信息。