|
| 1 | +# TDX rolling-upgrade 与旧版兼容性报告 |
| 2 | + |
| 3 | +## 执行入口与环境 |
| 4 | + |
| 5 | +```bash |
| 6 | +DSTACK_E2E_QCNL_CONF=/etc/sgx_default_qcnl.conf \ |
| 7 | +DSTACK_E2E_SKIP_CURRENT_BUILD=true \ |
| 8 | +./test-suites/full-stack-compose/run-upgrade-e2e.sh |
| 9 | +``` |
| 10 | + |
| 11 | +测试运行在具备真实 SGX 与 TDX 的主机上。AESMD 使用已为本机完成 |
| 12 | +provisioning 的本地 PCCS;Local-Key-Provider 运行 production SGX enclave,未使用 |
| 13 | +mock、debug enclave 或 `insecure_skip_attestation`。公共 PCCS 未包含本机 PCK |
| 14 | +certificate,原 error 44 是 PCCS provisioning 问题,修复见 PR #819。 |
| 15 | + |
| 16 | +## 参与版本 |
| 17 | + |
| 18 | +- VMM、第二阶段 KMS/Gateway:冻结提交 |
| 19 | + `dc3b95117f518a752c0726ecd44ba7888a25cc49`; |
| 20 | +- 初始 KMS:digest-pinned `dstack-kms 0.5.8`; |
| 21 | +- 初始 Gateway:digest-pinned `dstack-gateway 0.5.8`; |
| 22 | +- 旧 guest:meta-dstack v0.5.11 release artifact,image digest |
| 23 | + `c2aa0186182fe8a404f16d5f3facb334d89be32703b3571c401b114a8b6e700d`; |
| 24 | +- 新 guest:本次 v0.6.0 candidate,image digest |
| 25 | + `91bc72e3ca6f283cc0549d761ee436d381d1e8c4ddc4c23354e05c9bbccfdec1`。 |
| 26 | + |
| 27 | +meta-dstack v0.5.11 release 只提供 guest artifact,并不提供标记为 v0.5.11 的 |
| 28 | +KMS/Gateway release containers。因此本报告把 **guest image compatibility** 与 |
| 29 | +**0.5.8→current service rolling upgrade** 分开表述,不将后者伪称为 v0.5.11 |
| 30 | +KMS/Gateway 兼容测试。 |
| 31 | + |
| 32 | +## 已验证的真实硬件路径 |
| 33 | + |
| 34 | +第一次完整执行已到达最终 audit,并证明全部 runtime 阶段成功;其唯一失败是 harness |
| 35 | +错误地假设 onboarding 后的两个 KMS 必须各自产生一次 archive HTTP GET。保存状态的 |
| 36 | +复核结果为 current GET=1、v0.5.11 GET=2;onboarding 会复制 durable state/cache, |
| 37 | +所以“每 KMS 一次 GET”不是产品不变量。PR #820 修正该审计;随后从 clean state |
| 38 | +完整复跑并明确输出 `production-compatible ... success` 与 `upgrade E2E success`。 |
| 39 | + |
| 40 | +已取得的运行态证据如下: |
| 41 | + |
| 42 | +1. production SGX Local-Key-Provider enclave healthy;真实 TDX KMS CVM 报告 |
| 43 | + `KeyProviderInfo { name: "local-sgx", id: "<SGX MRENCLAVE>" }`; |
| 44 | +2. old KMS quote-enabled bootstrap,按真实 quote 的 `mrAggregated` 与物理 TDX |
| 45 | + device ID 精确授权;latest KMS 以 mutual RA-TLS onboarding; |
| 46 | +3. onboarding 前后 KMS CA SPKI、root k256 public key、per-app environment public |
| 47 | + key逐字节一致; |
| 48 | +4. v0.5.11 guest 使用 legacy manifest 启动、取得 key,并在切换 latest KMS 后重启; |
| 49 | + 加密数据盘重新挂载; |
| 50 | +5. current guest 以 TDX lite policy 启动并取得 key;allowlist 精确包含 old/current |
| 51 | + 两个 OS hash,不存在关闭 image verification/self-authorization 的日志; |
| 52 | +6. old/current guest 同时通过两个 Gateway 可达;两个 Gateway 逐节点从 0.5.8 |
| 53 | + 升到 current; |
| 54 | +7. Gateway certificate、DNS credential 与 durable state 保持;升级后的两个节点均 |
| 55 | + 能用原 credential 强制重新签发证书; |
| 56 | +8. clean rerun 的 rolling upgrade HA probe:4350 次请求、0 failures、1921 次成功 |
| 57 | + failover,持续 253195 ms。 |
| 58 | + |
| 59 | +原始日志: |
| 60 | + |
| 61 | +```text |
| 62 | +/home/kvin/src/dstack-v060-artifacts/logs/full-stack-tdx-upgrade-e2e-v0511-mixed-final.log |
| 63 | +/home/kvin/src/dstack-v060-artifacts/logs/full-stack-tdx-upgrade-e2e-v0511-mixed-exit0.log |
| 64 | +``` |
| 65 | + |
| 66 | +## COMP 用例审计 |
| 67 | + |
| 68 | +| 用例 | 结论 | 本次覆盖与缺口 | |
| 69 | +|---|---|---| |
| 70 | +| COMP-01 | PARTIAL | 建立了 old service + v0.5.11 guest 的真实 key/TLS/storage 基线,但 VMM 不是 old,且 KMS/Gateway 基线是 0.5.8 | |
| 71 | +| COMP-02 | NOT RUN | 未执行 old→new VMM 原地升级 | |
| 72 | +| COMP-03 | PASS | v0.5.11 guest 切换 latest KMS 后重新启动、取 key;KMS identity 与 app key 保持 | |
| 73 | +| COMP-04 | PASS | v0.5.11 guest 在两个 Gateway 完成 rolling upgrade 后仍可达,DNS/TLS/WireGuard 路径恢复 | |
| 74 | +| COMP-05 | PASS | latest VMM 创建全新 v0.5.11 image CVM,legacy numeric manifest 被接受,之后可由 latest service 继续服务 | |
| 75 | +| COMP-06 | PASS | latest VMM 创建 current image,TDX lite policy、exact image allowlist、key 与 Gateway 路径通过 | |
| 76 | +| COMP-07 | PARTIAL | old/current guest 并行可达且使用独立 app ID;未执行计划要求的同 app image 双版本 identity crossover 专项断言 | |
| 77 | +| COMP-08 | NOT RUN | 未执行同一 canary 的 O→N image 原地升级及身份/存储策略检查 | |
| 78 | +| COMP-09 | NOT RUN | 未执行 N→O rollback 与 policy-deny 对照 | |
| 79 | +| COMP-10 | PARTIAL | guest/KMS/Gateway 级 stop/start 与服务恢复有覆盖;未重启物理 host | |
| 80 | + |
| 81 | +## 结论与边界 |
| 82 | + |
| 83 | +Local-Key-Provider 阻塞已经解除;真实 TDX 证据支持 v0.5.11/current 混合 guest、 |
| 84 | +Local-Key-Provider KMS onboarding、Gateway rolling upgrade 及密钥/状态连续性。它不支持 |
| 85 | +把 COMP-01..10 全部写成 PASS:VMM 原地升级、app image upgrade/rollback、同 app |
| 86 | +交叉身份和物理 host reboot 仍缺专项执行。模拟报告不能替代这些项目。 |
0 commit comments