冰朔定型:人格体零密钥零token,申请→人类批准→限时哈希→凭哈希办事。 - server.js v1.3:/api/ops-request、/api/ops-decision、/api/ops-pickup、 /api/ops-execute(root 白名单 ops-registry.json + 窄权限sudoers,笔笔留痕) - persona-ops/persona-operations.template.md:人格体操作手册模板 (桔子 BS-SG-002 实例首个采用,仓库写入与服务器操作双链全实测通过)
100 lines
4.2 KiB
Markdown
100 lines
4.2 KiB
Markdown
# 人格体操作手册模板 · <频道名>(panel-kit v1.3 随附模板,部署时替换尖括号占位)
|
||
|
||
> 读者:<已登记人格体名单>
|
||
> 总原则:**你们零密钥、零 token。一切权限都是:申请 → <人类责任主体>点批准 → 拿到限时哈希 → 凭哈希办事。**
|
||
> 哈希限时、过期作废、笔笔留痕。白名单之外的事,走工单等桔子。
|
||
|
||
## 一 · 操作代码仓库(写入推送)
|
||
|
||
面板入口域名:`https://<域名:HTTPS端口>`(下称 PD)
|
||
|
||
**第 1 步 · 申请**(不需要任何密钥):
|
||
|
||
```
|
||
POST PD/api/access-request
|
||
{"persona":"<人格体名>","reason":"要做什么,一句话说清"}
|
||
→ 返回申请编号 AR-XXXX
|
||
```
|
||
|
||
**第 2 步 · 等<人类责任主体>批准**。面板"写入授权"卡片上看到你的申请,点"批准"。
|
||
|
||
**第 3 步 · 领取哈希凭证**(凭申请编号,仍不需要密钥):
|
||
|
||
```
|
||
POST PD/api/access-pickup
|
||
{"id":"AR-XXXX","persona":"<人格体名>"}
|
||
→ 返回 credential(一串哈希)+ gitUrl + 有效期(3小时窗口)
|
||
```
|
||
|
||
**第 4 步 · 推送**(把哈希放在 Authorization 头里,仅此而已):
|
||
|
||
```
|
||
git -c http.extraHeader="Authorization: Bearer <领到的哈希>" \
|
||
push https://<域名:HTTPS端口>/git/<操作仓owner>/<操作仓repo>.git <默认分支>
|
||
```
|
||
|
||
规则:
|
||
- 窗口 3 小时,过期哈希自动作废,重新申请
|
||
- 每笔推送过 pre-receive 自动审核:**明文密钥必拦、历史重写必拦、入口文件(README.md、wake/ 三页等,按各仓实际)禁删**
|
||
- 真实令牌永不出服务器,你手里永远只有临时哈希
|
||
|
||
## 二 · 操作服务器(白名单 + 哈希)
|
||
|
||
**第 1 步 · 申请**(说清要做哪个操作、范围、原因):
|
||
|
||
```
|
||
POST PD/api/ops-request
|
||
{"persona":"<人格体名>","op":"<白名单操作名>","scope":"范围","reason":"为什么"}
|
||
→ 返回申请编号 OPS-XXXX
|
||
```
|
||
|
||
**第 2 步 · 等<人类责任主体>批准**(面板"写入授权"卡片中带【服务器操作】标记的那条,点"批准",系统生成限时哈希)。
|
||
|
||
**第 3 步 · 领取哈希**:
|
||
|
||
```
|
||
POST PD/api/ops-pickup
|
||
{"id":"OPS-XXXX"}
|
||
→ 返回 credential(哈希)+ 可执行操作清单 + 有效期(1小时)
|
||
```
|
||
|
||
**第 4 步 · 执行**(只能执行白名单里的操作):
|
||
|
||
```
|
||
POST PD/api/ops-execute
|
||
{"hash":"<领到的哈希>","op":"service-status"}
|
||
→ 返回执行结果;每次执行自动留痕(谁、何时、做了什么、结果)
|
||
```
|
||
|
||
当前白名单(root 持有 ops-registry.json,人格体不可改;桔子实例初始五项:service-status / log-tail-forgejo / log-tail-panel / restart-panel / restart-forgejo,各节点按自己的服务清单配):
|
||
|
||
## 三 · 白名单之外怎么办(工单流)
|
||
|
||
任何不在白名单里的服务器操作(装东西、改配置、动数据):
|
||
|
||
1. 在仓库 issues 开工单:标题 `[OPS申请] 目标 / scope / 动作`
|
||
2. <人类责任主体>审查工单,评论"批准:动作清单"(或驳回/修改)
|
||
3. 凭批准评论再走 §二 申请对应权限;批准仅限当次工单列出的目标与动作
|
||
4. 执行回执回写工单 + receipts/ 存档
|
||
|
||
## 四 · 铁律
|
||
|
||
⊢ 不索要、不存储、不传递任何长期密钥/token——你只需要申请编号和临时哈希
|
||
⊢ 哈希是<人类责任主体>意志的凭证:过期作废、范围锁死、笔笔留痕
|
||
⊢ 改变服务器状态的操作必须先有备份引用和回滚方案(工单里写明)
|
||
⊢ 入口文件(README.md、wake/ 三页等本仓入口)不得删除
|
||
⊢ 拿不准 → 开工单问<人类责任主体>,不擅自扩大范围
|
||
|
||
## 五 · 端点速查
|
||
|
||
| 做什么 | 端点 | 需要什么 |
|
||
|---|---|---|
|
||
| 申请仓库写入 | POST PD/api/access-request | 名字+用途 |
|
||
| 领取写入哈希 | POST PD/api/access-pickup | 申请编号 |
|
||
| 推送 | PUT PD/git/<操作仓>.git | Authorization: Bearer 哈希 |
|
||
| 申请服务器操作 | POST PD/api/ops-request | 名字+op+范围+原因 |
|
||
| 领取操作哈希 | POST PD/api/ops-pickup | 申请编号 |
|
||
| 执行白名单操作 | POST PD/api/ops-execute | 哈希+op |
|
||
| 交唤醒回执 | POST PD/api/wake-receipt | 名字+摘要 |
|
||
|
||
—— 模板出处:桔子 BS-SG-002 实例(铸渊 2026-08-09)· 冰朔定型"哈希授权"模式
|