Files
pikasTech-unidesk/.agents/skills/unidesk-secret/SKILL.md
T
2026-07-16 15:40:35 +02:00

77 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: unidesk-secret
description: UniDesk 统一管理员密码的 YAML-first 分发与清理技能。用户提到统一管理员密码、unified-admin-password、OA/PikaOA、SelfMedia、HWLAB/lab、Sub2Rank 或 ApiState 的管理员密码轮换、Secret 同步、开发版与生产版密码对齐、清理服务级 admin password 时使用。
---
# UniDesk 统一管理员密码
遵循 `Skill(cli-spec)`,只通过 owning YAML、领域受控 CLI 和 `web-probe` 分发与验收,不读取、打印或从运行面反解密码。
## 唯一事实源
- 统一管理员密码只保存在 `/root/.unidesk/.env/unified-admin-password.txt`
- 文件必须是 owner-only `0600` raw file,只包含一行密码。
- `config/secrets-distribution.yaml` 声明 raw-file source 和 Kubernetes `targetKey` 映射。
- `config/pikaoa.yaml` 声明 PikaOA development/release 管理员密码来源。
- `config/hwlab-node-lanes.yaml` 声明 HWLAB development/production bootstrap admin hash 来源。
- `config/hwlab-web-probe-sentinel/*.yaml` 的 bootstrap-admin 和 admin account 来源必须指向同一文件。
- 各应用可以保留不同 `targetKey`、Secret 名和 hash transform,但不得保留不同密码来源。
## 明确边界
- 统一以下管理员登录:
- PikaOA `pikaoa``pikaoa-dev`
- SelfMedia `selfmedia``selfmedia-production`
- HWLAB `v03``production`
- Sub2Rank/ApiState 的 `APISTATE_WEB_PASSWORD`
- 不统一以下非管理员凭据:
- PikaOA employee 密码;
- API key、session secret、admin token
- 数据库密码和 FRP token
- Sub2Rank 访问 Sub2API 的 `SUB2API_ADMIN_PASSWORD`
- HWLAB 第二测试账号和 OpenCode 账号密码。
## 分发流程
1. 先确认 source 文件 presence、字节数、SHA-256 fingerprint 和 `0600`,不得输出内容。
2. 检查 owning YAML 中所有管理员 sourceRef 均指向统一文件。
3. 对每个 Secret scope 先执行 `secrets plan`,再执行 `secrets sync --confirm`,最后按 job ID 查询终态并执行 `secrets status`
4. HWLAB 先执行 `hwlab nodes secret ensure --node NC01 --lane <lane> --name <bootstrap-secret> --dry-run`,确认后改为 `--confirm` 同步 hash Secret 和 rollout。
5. 用领域 status/validate 确认 Secret key presence、fingerprint、Deployment rollout 和 health;输出必须保持 `valuesPrinted=false`
6.`web-probe` 从 owning YAML 选择 public origin,分别验证 development 与 production 管理员登录。
7. 只有所有目标分发和登录验收通过后,才清理旧服务级密码文件或 env 键。
Secret 分发高频入口:
```bash
bun scripts/cli.ts secrets plan --config config/secrets-distribution.yaml --scope <scope> --target <target>
bun scripts/cli.ts secrets sync --config config/secrets-distribution.yaml --scope <scope> --target <target> --confirm
bun scripts/cli.ts secrets status --config config/secrets-distribution.yaml --scope <scope> --target <target>
```
目标矩阵:
- `pikaoa` / `pikaoa-nc01`
- `pikaoa-dev` / `pikaoa-dev-nc01`
- `selfmedia` / `selfmedia-nc01`
- `selfmedia-production` / `selfmedia-production-nc01`
- `sub2rank` / `sub2rank-nc01`
## 清理规则
- 删除 `pikaoa-admin-password.txt` 和含不可见字符的旧 unified 文件名。
-`selfmedia-access.env` 删除 `SELFMEDIA_ADMIN_PASSWORD`,保留 username、API key 和 session secret。
-`platform-infra/apistate.env` 删除 `APISTATE_WEB_PASSWORD`,保留 API key 和 session secret。
- 删除只包含 `HWLAB_BOOTSTRAP_ADMIN_PASSWORD` 的旧 bootstrap-admin env 文件。
- `hwlab.auth``HWLAB_admin.txt` 若同时保存用户名,只删除密码行并保留用户名;owning YAML 不得再引用其密码行。
- 清理后重新执行 plan,确认旧 source 不再是 required source,统一 source 仍为 present。
- 禁止用 Secret decode、Pod env、数据库或日志回填旧来源。
## 验收判定
- 所有声明只引用一个管理员密码 sourceRef。
- Secret sync 成功,consumer rollout 成功,status key presence 完整。
- PikaOA、SelfMedia、HWLAB、Sub2Rank/ApiState 的 development/production 目标按实际存在矩阵通过管理员登录。
- 旧服务级管理员密码来源已删除或移除对应键。
- 全程只披露路径、键、presence、fingerprint、字节数、job/trace/artifact ID 和状态。