fix(authz): require email approval for native layout signing

This commit is contained in:
冰朔 2026-08-03 00:00:04 +08:00
commit a385249819
5 changed files with 92 additions and 1 deletions

View file

@ -43,6 +43,23 @@ HoloLake 手机端使用独立的邮箱验证码会话,不复用工单批准
`/etc/guanghu/secrets/hololake-ai-providers.json`,不得提交到仓库。知识仓库路径、模型
登记文件、session pepper 和会话状态路径由 `authorization.env` 固定;手机不能切换这些路径。
## 企业 GHDR 邮件授权与服务器代签
企业原生布局使用独立的 `native-recovery / sign-native-layout-plan`
工单。该动作必须由京东主控的预登记邮箱完成本次批准;在线 HoloLake
广播面板、旧会话和未记录批准通道的会话都不能替代邮件批准。
批准后,京东只签发最长两分钟、单次使用、精确绑定控制器、目标节点、工单、
布局摘要、资源和代次的 Ed25519 能力票据。广州和新加坡控制器通过出站 HTTPS
轮询取得各自票据,在本机固定用途签名器中完成代签,再把签名结果回送京东。
- 布局私钥与轮询传输私钥分离,均只存在于控制器服务器;
- 客户端、浏览器、Mac、企业目标机和代码仓库都不接收私钥
- `/api/ghdr/authorizer-public-key` 只返回京东授权公钥和指纹;
- `/api/ghdr/controllers/poll``/result` 只接受控制器传输私钥签过的规范请求;
- `/api/ghdr/sign-layout` 必须收齐两个不同节点、不同故障域的签名才成功;
- 任何端点都不提供私钥导出、任意 URL、任意命令或单签降级。
`request-workorder.js` 从临时环境变量读取 QQ 数字,在内存中补全邮箱并只发送
SHA-256 指纹;数字本身不会写入请求正文、状态文件或代码仓库。未提供私密
request credential 时,脚本自动切换到跨设备公开建单模式。