Skip to content

[Priority: Med] [Security] 设计单租户实例内认证与授权模型 #166

@liujuanjuan1984

Description

@liujuanjuan1984

背景

在确认“一个 OpenCode + opencode-a2a-serve 实例对 = 一个 single-tenant trust boundary”之后,认证讨论需要先聚焦单个实例内部的安全模型,而不是把目标设定成“单实例安全多租户”。

当前主干仍使用单个静态 A2A_BEARER_TOKEN 做运行时鉴权,但实例内部还存在更细的能力边界问题:普通 chat、session control、shell、interrupt callback 等高风险接口是否应共享同一权限模型,目前尚未收敛。

复现步骤

  1. 查看当前主干认证实现:运行时仍以 A2A_BEARER_TOKEN 为唯一鉴权入口。
  2. 查看当前会话控制实现:identity 参与 (identity, contextId) -> session_id 缓存和 session ownership / control 判断。
  3. 查看高风险方法: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

Metadata

Metadata

Assignees

No one assigned

    Labels

    focus当前重点推进status:todoPlanned but not started

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions