test-spec.md 4.0 KB

定时任务出站安全增量测试计划

status: complete version: V8 created: 2026-07-20 completed: 2026-07-21 baseline: V7 Job 137/137、前端 463/463、Admin Reactor 42/42

1. 本轮差异

  • 新增共享出站安全 Starter、白名单表和平台管理员管理 API。
  • 新增 URL、IPv4/IPv6、DNS 全量结果和本机地址校验。
  • 新增真正参与连接的 OkHttp DNS 绑定、逐跳重定向、超时和响应大小治理。
  • Flow Webhook 从直连 RestTemplate 迁移到共享客户端并移除 X-Inner-Call 外发 Header。

2. P0 验证

编号 场景 预期
P0-01 URL 解析 只允许 HTTP/HTTPS,拒绝 userinfo、编码 authority、非法端口和非标准数字主机
P0-02 IP 分类 永久阻断环回、链路本地、元数据、保留、组播、本机和 mapped 绕过
P0-03 私网例外 JOB_WEBHOOK 永不允许私网;FLOW_API 仅显式管理员白名单允许 RFC1918/ULA
P0-04 DNS 全量校验 任一 A/AAAA 为 PRIVATE/BLOCKED 时按场景失败关闭,不只取首个地址
P0-05 DNS 重绑定 策略预检为公网、连接前解析变为私网时阻断且不发起连接
P0-06 重定向 默认阻断;启用后每一跳重新执行白名单、DNS 和 IP 校验并限制次数
P0-07 资源上限 请求、响应、连接、读取、写入和整体超限均失败关闭
P0-08 Flow 旁路 FlowWebhookNotifier 不再创建 RestTemplate/HttpClient,不发送 X-Inner-Call

3. P1 验证

编号 场景 预期
P1-01 白名单管理 只有平台管理员且具备细粒度权限可维护,所有写操作有审计
P1-02 数据规则 标准审计字段、tenant_id=1、逻辑删除唯一键、精确主机和端口范围
P1-03 Header 安全 拒绝 Host/Content-Length/Connection 等危险 Header,跨源跳转裁剪凭据
P1-04 日志安全 不记录 Authorization、Cookie、Secret、URL query、请求/响应正文
P1-05 聚合装配 Starter、Flow Server 和 Admin Reactor 编译打包通过

4. 执行命令

JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -Penable-tests -pl forge-framework/forge-starter-parent/forge-starter-outbound,forge-framework/forge-plugin-parent/forge-plugin-flow -am test
mvn -pl forge-flow/forge-flow-server -am package -DskipTests
mvn -pl forge-admin-server -am package -DskipTests
rg -n '\$\{[^}]+\}' forge-server/db/migration
xmllint --noout forge-server/forge-framework/forge-starter-parent/forge-starter-outbound/src/main/resources/mapper/SysOutboundWhitelistMapper.xml
rg -n 'new RestTemplate|HttpClient\.new|new OkHttpClient|openConnection' forge-server/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main
git diff --check

5. 跳过项

  • 不自动启动真实 MySQL、Admin、Flow 或外部 HTTP 服务;Flyway 实跑、真实公网/私网 DNS 和 Webhook E2E 由用户侧环境验收。
  • 不迁移 forge-plugin-external 等具有独立业务协议的全部出站能力;本轮记录调用点并只治理 Spec 明确要求的 Flow Webhook。
  • 不修改或清理工作区中 V1-V7 的未提交成果。

6. 执行结果

验证项 结果
Starter 单测 47/47 通过:迁移 3、白名单服务 6、策略 6、IP 分类 26、受控客户端 6
Flow 插件单测 12/12 通过:其中 Flow Webhook 2 个用例通过,503 首次失败日志为重试场景预期输出
聚合测试 Reactor 26/26 模块成功,BUILD SUCCESS
Flow Server 装配 32/32 Reactor 模块成功,BUILD SUCCESS
Admin Server 装配 43/43 Reactor 模块成功,BUILD SUCCESS
静态门禁 Flyway placeholder、Mapper XML、Flow 直连旁路、敏感日志关键字和 git diff --check 全部通过

自动化范围已完成;第 5 节所列真实环境项仍由用户侧验收,不计入自动化通过结论。