kyvault-ops · diff

git:20260923.dcaf435 to v2.4.0

37 added, 41 removed. Audit A to A.

---
name: kyvault-ops
- description: 使用 kyvault (或 cs kyvault) 在本地 and 团队 GitLab 环境中端对端管理加密 API Key、服务器资产台账与多 Profile 凭证。支持 Claude、Codex、Gemini 与 Hermes 全自动读写。
+ version: 2.4.0
+ description: 使用 kyvault (或 cs kyvault、ky) 在本地与 GitLab 团队环境中端对端管理加密 API Key、服务器资产台账与多 Profile 凭证。支持 Claude、Codex、Gemini 与 Hermes 全自动读写与子进程安全注入。
+ license: MIT
+ author: webkubor
+ category: security
+ platforms: [linux, macos]
---
# 🛡️ Kyvault 密钥与资产台账端对端运维指南 (kyvault-ops)
- `kyvault` 是专为开发者与 AI Agent 设计的本地军工级加密密钥与资产台账管理器。采用 AES-256-GCM 纯本地加密与 GitLab 远程密文同步,解密计算完全脱机,零网络依赖。
+ `kyvault` 是专为开发者与 AI Agent 设计的本地军工级加密密钥与资产台账管理器。采用 AES-256-GCM 纯本地加密与 GitLab 远程密文同步,解密计算完全脱机,零网络依赖。同时支持 **Auth Guard 多因素授权守卫**(SSH Key 绑定与 TOTP 二次确认)。
## 1. 核心操作命令
- Agent (Claude / Codex / Gemini / Hermes) 在需要读取或管理密钥时,应直接执行原生命令(或兼容别名 `cs kyvault`):
+ Agent (Claude / Codex / Gemini / Hermes) 在需要读取或管理密钥时,应直接执行原生命令(或快捷短命令 `ky`、兼容别名 `cs kyvault`):
```bash
# 1. 查看密钥目录元信息(只出元信息与脱敏 last4,绝不暴露明文)
- kyvault list
+ kyvault list # 或 ky list
# 2. 注入子进程环境变量执行命令(首选,零明文回显,不落盘)
kyvault run --env TOKEN=secret://platform/key_name -- <command>
# 3. 读取特定密钥的明文(仅在必须写配置文件等无法注入的环境使用)
kyvault get secret://platform/key_name
# 4. 写入/更新一个密钥(支持从 stdin 读避免暴露在 ps 进程列表)
kyvault set secret://platform/key_name "<value>" --kind "API Key"
echo "<value>" | kyvault set secret://platform/key_name -
# 5. 校验密钥有效性与余额(验证通过自动同步审计元信息至 meta.json)
kyvault check <platform> <key_name>
# 6. 本地主密钥状态与指纹查看(严禁外传,换机迁移导出备份)
kyvault master-key # 显示路径、0600权限、SHA-256指纹与遮挡值
- kyvault master-key --reveal # 显示完整明文(仅供本人导出至 1Password / 离线保险箱)
+ kyvault master-key --reveal # 显示完整明文(需验证 TOTP / SSH Key)
- # 7. 团队 GitLab 密钥库同步与状态
+ # 7. Auth Guard 多因素授权守卫
+ kyvault auth status # 查看当前守卫启用状态与绑定方法清单
+ kyvault auth setup # 交互式引导绑定本地 SSH 公钥并加密 master.key
+ kyvault auth add totp # 绑定 Google Authenticator 动态验证码
+
+ # 8. 团队 GitLab 密钥库同步与状态
kyvault gitlab status # 查看本地与远端密文同步状态及 master.key 安全检查
kyvault gitlab sync # 自动 pull rebase 后 push 推送最新密文
+
+ # 9. 本地极客 Web GUI 与引导向导
+ kyvault ui # 启动本地暗黑风极客 Web GUI(自动唤起浏览器)
+ kyvault wizard # 终端交互式分类引导向导(规整化命名)
```
---
## 2. 统一资产与台账命名规范 (SSOT Schema)
### A. 平台与 API Key 凭证 (Platform API Keys)
路径格式:`secret://<platform>/<key_name>`
* `secret://deepseek/main` ➡️ DeepSeek API Key
* `secret://openai/coding` ➡️ OpenAI 编程专用 Key
* `secret://github/personal-pat` ➡️ GitHub 个人访问令牌 (PAT)
* `secret://gitlab/deploy-token` ➡️ GitLab 部署令牌
+ * `secret://cloudflare/api-token` ➡️ Cloudflare API Token
- ### B. CLI 客户端多 Profile 维护 (CLI Multi-Tokens)
- 路径格式:`secret://cli/<cli_name>/<profile_name>`
- * `secret://cli/feishu/work` ➡️ 飞书 CLI 工作/企业账号 Token
- * `secret://cli/feishu/personal` ➡️ 飞书 CLI 个人账号 Token
- * `secret://cli/cloudflare/prod` ➡️ Cloudflare 生产环境 API Token
- * `secret://cli/studio-cli/webkubor` ➡️ studio-cli 主账号凭证
+ ### B. 账号与密码凭据 (Accounts)
+ 路径格式:`secret://account/<platform>/<username>`
+ * `secret://account/github/webkubor@gmail.com` ➡️ GitHub 密码
+ * `secret://account/apple/webkubor@163.com` ➡️ Apple ID 密码
### C. 服务器与资产台账 (Server Ledger)
- 路径格式:`secret://server/<hostname_or_project>/<field>`
- * `secret://server/<hostname>/ip` ➡️ 服务器公网 IP
- * `secret://server/<hostname>/root-password` ➡️ root 密码
- * `secret://server/<hostname>/ssh-key` ➡️ SSH 私钥 (如有)
- * `secret://server/<hostname>/cost` ➡️ 服务器月度租金成本 (如 `99元/月`)
- * `secret://server/<hostname>/provider` ➡️ 服务商 (如 腾讯云/Cloudflare/阿里云)
-
- ---
-
- ## 3. 安全架构与 master.key 核心规范
-
- ```
- ~/.config/kyvault/store/ (或 ~/.keyring/)
- ├── master.key # 根主密钥 (32字节随机Base64, chmod 600, .gitignore 忽略,绝对不上 Git)
- ├── secrets.json # AES-256-GCM 密文 (入仓 Git 同步)
- ├── meta.json # 审计元信息 (脱敏, 记录更新时间、last4、scopes、组织)
- └── .lock # 跨进程文件排他锁 (防止 Agent 并发写入冲突)
- ```
+ 路径格式:`secret://server/<host>/[root-password|ip|port]`
+ * `secret://server/prod-hk/root-password` ➡️ 香港生产机 SSH 密码
+ * `secret://server/gpu-box/ip` ➡️ 局域网 GPU 服务器 IP
- 1. **什么是 master.key**:
- `master.key` 是生成于本机的 32 字节高强度随机根密钥(44 字符 Base64 编码)。所有的 `secrets.json` 密文均使用它经过 SHA-256 派生出的 AES-256-GCM 密钥加解密。
- 2. **master.key 铁律**:
- - **绝对不入 Git**:它被 `.gitignore` 严格排除,`kyvault gitlab push` 前会进行强制安全检查。
- - **单机持有**:在新电脑上配置时,需通过带外信道(如 1Password、加密即时通讯)将这把密钥复制到目标机的对应目录中。
- - **本地查看**:随时运行 `kyvault master-key` 审计文件路径、权限与指纹。
+ ### D. CLI 客户端多 Profile 凭证 (CLI Multi-Tokens)
+ 路径格式:`secret://cli/<cli_name>/<profile>`
+ * `secret://cli/gh/main` ➡️ GitHub CLI 主账号 Token
+ * `secret://cli/studio-cli/test-user` ➡️ 创作中台测试租户凭证
---
- ## 4. Agent 行为守则 (Rule of Thumb)
+ ## 3. Agent 行为刚性准则 (Golden Rules)
- 1. **绝对禁止硬编码**:Agent 严禁将任何 API 密钥、密码、服务器 IP 写入代码文件、日志或 Git 提交。
- 2. **先 list 后询问**:缺失环境变量时,先调用 `kyvault list` 寻找,有则直接 `kyvault run` 注入;确认没有才向用户询问。
- 3. **失效就覆写,杜绝保守残留**:一旦检测到密钥库中的某个 Key 失效(如调用接口报 401、Token 过期或校验失败),Agent **必须立刻主动覆写(Overwrite)修改**,严禁留着旧值盲目重试。
- 4. **多账号动态寻址**:面临飞书、GitHub 等多 Profile 场景,通过 `kyvault run --env TOKEN=secret://cli/<name>/<profile>` 运行时单向注入,绝不污染全局 CLI 配置。
+ 1. **先查库,不问用户**:遇到任何需要 Token、API Key、密码的场景,先执行 `kyvault list`。库里有就直接用;确认没有才开口问用户。
+ 2. **优先注入,不取明文**:优先使用 `kyvault run --env TOKEN=secret://... -- <cmd>` 单向注入子进程环境变量,绝不回显明文。
+ 3. **失效必改,刚性覆写**:遇到 401 或 Token 过期,立即主动使用 `kyvault set` 覆写新值,严禁保留失效旧凭据或盲目重试。
+ 4. **master.key 绝不上云**:`master.key` 与 `master.key.enc` 是解密根凭据,绝对禁止暂存或提交到 Git 仓库。