Skip to content

fix(协议管理): 提升协议转换操作权限 - #779

Merged
zhou-hao merged 1 commit into
2.12from
codex/fix-ssrf-769
Aug 7, 2026
Merged

fix(协议管理): 提升协议转换操作权限#779
zhou-hao merged 1 commit into
2.12from
codex/fix-ssrf-769

Conversation

@zhou-hao

@zhou-hao zhou-hao commented Aug 6, 2026

Copy link
Copy Markdown
Member

目的

  • 降低协议远程 JAR 转换能力被低权限查询用户滥用的风险
  • 保留管理员通过远程协议仓库加载协议包的既有能力,不在应用层硬禁必要的内部网络访问

核心变动

  • device-manager:将协议 /convert 接口权限由 QueryAction 提升为 SaveAction
  • device-manager:新增反射测试,锁定转换接口必须具备保存权限且不再暴露为查询权限
  • device-manager:不改变协议加载、转换及远程仓库实现

设计与测试目标

  • 设计稿:不适用;本次为单一接口权限边界修复
  • 用户确认:已确认,按独立 Issue 提交评审
  • 测试目标:覆盖接口 SaveAction 正常权限声明,以及 QueryAction 不应存在的回归断言
  • 注释 / 公共契约:适用;Controller 权限注解即接口授权契约,未新增 SPI
  • 数据权限:不适用;本次调整功能权限,不涉及 AssetsHolder 资产数据权限
  • 数据库兼容与性能:不适用;未涉及 SQL
  • 链路追踪:不适用;未改变协议转换执行链路
  • MBean 运维可观测性:不适用;未新增常驻任务、缓存、队列或后台执行器

测试结果

  • 命令:mvn -pl jetlinks-manager/device-manager -am -Dtest=ProtocolSupportControllerTest -Dsurefire.failIfNoSpecifiedTests=false test
  • 新增/更新测试:ProtocolSupportControllerTest 通过反射验证 /convert 使用 SaveAction 且不再使用 QueryAction
  • 单元测试:1 passed, 0 failed, 0 skipped
  • 集成测试:不适用;仅变更静态权限注解,不涉及数据库、消息、协议实现、外部依赖或启动装配
  • 压力测试:不适用;未改变执行路径或性能
  • 覆盖率:changed class line 0%,branch 0%;测试通过反射验证注解契约,未执行 Controller 方法体,因此 JaCoCo 不记录目标类执行覆盖
  • 补充说明:JaCoCo 0.8.7 在 JDK 21 对部分 JDK/Mockito 动态类报告 Unsupported class file major version 65,不影响目标测试结果

文档同步情况

  • 已同步:无需同步长期文档;权限动作由 Controller 注解和权限系统维护
  • 未同步:无
  • 说明:README 长期总览未发生变化;测试证据仅记录在 PR / CI

风险与说明

  • 影响范围:协议转换接口授权
  • 注释 / 公共契约:权限注解已更新并由测试锁定
  • 链路追踪 / 可观测性:不涉及执行链路变更
  • MBean / 运维可观测性:不涉及
  • 未覆盖场景:未启动完整权限网关;框架注解契约已通过反射测试验证
  • 已知限制:原仅具备 protocol:query 的调用方需增加 protocol:save;管理员远程协议仓库能力保持不变

Closes #769

@zhou-hao
zhou-hao merged commit 3c7db25 into 2.12 Aug 7, 2026
1 of 2 checks passed
@zhou-hao
zhou-hao deleted the codex/fix-ssrf-769 branch August 7, 2026 01:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant