Skip to content

[BUG] 后台任务提交与结果读取应绑定完整可信租户归属 #226

Open

Description

@Aias00

已复现问题

TaskTool 通过不带租户参数的 TaskRepository.putTask 提交;默认仓库将 owner 设为 null。读取只在调用者与任务都有租户且不同时拒绝。接口默认读取实现还直接委托无隔离读取。TaskOutputTool 提取租户时仅使用 id,丢弃 authority。

实际源码验证:经 TaskRepository.putTask 创建的任务,在已知同一 task ID 时,两个不同调用租户均能取得结果。本单描述默认接口路径的归属缺口,不声称已发生外部攻击或全部自定义仓库都如此。

证据:

交付与验收

  • 提交契约可携带可信 owner,正常 TaskTool 路径实际绑定该 owner,不能依赖应用恰好调用实现类重载。
  • 使用完整 TenantReference 或等价的 authority + id 语义;业务输入不能覆盖 owner。
  • 明确租户缺失、历史无 owner 任务和管理员读取的策略;缺失可信上下文不能隐式等同管理员。兼容单租户模式需显式说明。
  • 默认、有界和自定义仓库契约一致,隔离缺失须明确诊断;不依赖难猜 task ID 作为访问控制。
  • 覆盖同租户、跨租户、相同 id 不同 authority、缺失身份及历史任务测试。

基线、关系与变更约束

已验证 Core 76d44429fdaa6a69320e21a1cb77119d0889d792 / Extensions 495414b76a37aca4d7c1022d973a8e5b9a7e92e6。关联: #188、#200、#203。

局部修复不等待全局 Agent/Workflow/Loop 重构。优先复用现有中立契约;若改公共 API、配置或持久数据,说明替代方案、消费者影响、目标版本与迁移/回滚步骤。不得以跳过检查、删除测试或向 Core 重新引入供应商 SDK 解决问题。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions