双平面设计哲学
Portico 的 Web 呈现分为面向人与面向机器两个截然不同的信任平面:内部笔记台(Internal Workbench) 与 公开发布目录(Public Releases)。
为什么需要物理隔离的双平面?
在传统软件设计中,很多门户采用“同一张列表,按权限隐藏部分按钮”的逻辑。实践证明,这种设计极易因为前端渲染漏判或 API 序列化漏洞而泄露敏感元数据。
Portico 在视图路由层实现了绝对的物理双平面隔离:
HTTP Request
│
┌────────────────┴────────────────┐
▼ ▼
/internal/* /public/*
[ 内部笔记台平面 (Internal) ] [ 公开发布平面 (Public) ]
│ │
校验有效会话 (Session)? 无需任何会话 (完全匿名)
├── 否 ──► 直接返回 HTML 404 │
│ (绝不返回登录跳转) │
└── 是 ──► 渲染内部视图 │
- draft 状态草稿 │
- internal 内部服务 │
- pending_public 候选 │
- 真实维护者主体 ID ▼
- 内部端点地址 仅读取 approved_public 服务
- 剔除内部端点
- 剔除维护者敏感信息
- 渲染公开展现卡片
平面特性对比
| 维度 | 内部笔记台 (/internal) | 公开发布目录 (/public) |
|---|---|---|
| 受众主体 | 组织内部员工、内部维护 Agent | 外部合作伙伴、全网匿名公众 |
| 未鉴权表现 | 直接返回 404 Not Found(防止外界探针嗅探内部服务的存在) | 正常渲染公开页面 |
| 呈现状态 | draft、internal、pending_public、rejected、approved_public | 严格仅限 approved_public |
| 信息粒度 | 详细展示版本历程、维护者标识、准入审计时间线、直连调试入口 | 仅展示已脱敏的服务介绍、公开包坐标或公开 URL |
| 默认主题 | 偏向工程研讨风格的纸面/控制台质感(internal-light / internal-dark) | 偏向高对比度、清晰雅致的社论杂志质感(editorial-light / editorial-dark) |
Important
公开页的双重过滤保证:即使请求者持有人类审计者的顶级特权会话,当其访问
/public页面时,服务端视图层依然对其强行执行公开过滤——未经审批的记录绝对不会混杂进公开目录,杜绝了“以管理员视角误把内部服务截屏外流”的安全隐患。