-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
背景
在确认“一个 OpenCode + opencode-a2a-serve 实例对 = 一个 single-tenant trust boundary”之后,认证讨论需要先聚焦单个实例内部的安全模型,而不是把目标设定成“单实例安全多租户”。
当前主干仍使用单个静态 A2A_BEARER_TOKEN 做运行时鉴权,但实例内部还存在更细的能力边界问题:普通 chat、session control、shell、interrupt callback 等高风险接口是否应共享同一权限模型,目前尚未收敛。
复现步骤
- 查看当前主干认证实现:运行时仍以
A2A_BEARER_TOKEN为唯一鉴权入口。 - 查看当前会话控制实现:
identity参与(identity, contextId) -> session_id缓存和 session ownership / control 判断。 - 查看高风险方法:
opencode.sessions.shell、interrupt callback 等能力与普通 chat 请求当前没有清晰的分层授权设计。
实际行为
- 实例内只有粗粒度“能访问/不能访问”鉴权。
- 缺少明确的 identity 映射规则与方法级授权边界。
- 认证机制讨论容易与“平台层多实例编排”混在一起。
期望行为
- 在 single-tenant runtime boundary 前提下,先形成单实例内部的认证与授权模型。
- 明确以下问题:
- 实例访问鉴权采用什么模式:静态 bearer、JWT/OIDC、gateway 透传,还是组合策略。
- 哪个 claim / 标识映射为运行时
identity。 - 哪些方法需要更严格授权:普通 invoke、session control、shell、interrupt callback。
- 静态 bearer 是长期 fallback 还是仅迁移期兼容。
验收标准
- 形成单实例认证与授权目标说明,并与 single-tenant 前提保持一致。
- 明确
identity映射规则及其对 session ownership / session control 的影响。 - 明确高风险方法的最小授权边界。
- 如需实现改动,再拆分为独立实现 issue。
关联
当前代码快照
git rev-parse HEAD:2f471cb3bbc951bfb3f7356b49452db65fab280b
Reactions are currently unavailable