关键信息基础设施(关基)场景下的镜像仓库异地多活方案

解读

关基场景对镜像仓库的核心诉求是“数据零丢失、服务秒级接管、合规可追溯”。异地多活不是简单把 Harbor 复制到两地,而是要同时满足:国家密码法要求的国密 TLS 与证书体系等保 2.0 四级访问控制与审计关基条例 7×24 小时应急演练、以及工信部 2020 年 15 号文对容器镜像签名与 SBOM 的强制上报。面试官想听到的是:你如何在“双活+灾备”架构里,把镜像数据、元数据、访问策略、审计日志、漏洞扫描结果、签名证书全部同步,并且在单区域毁灭时仍能保证RPO=0、RTO<30s,同时不踩监管红线。

知识点

  1. 关基合规基线:等保 2.0 四级、国密 SM2/SM3/SM4、关基条例第 21 条“同步规划、同步建设、同步使用”三同步原则。
  2. 镜像仓库数据模型:Blob(层文件)、Manifest(镜像索引)、Artifact(签名、SBOM)、Project RBAC、CVE 扫描报告、审计日志六类数据。
  3. 复制拓扑:主主双写(Active-Active) vs 主备(Active-Passive);双向同步冲突(同镜像名不同 digest)的解决策略。
  4. 存储层
    • S3 协议对象存储(如华为云 OBS、移动云 EOS)跨 Region 桶复制开启多活版本控制,保证 Blob 级 RPO=0;
    • 元数据MySQL Group Replication 或 TiDB 做三园区强一致部署,GTID 一致性校验防脑裂。
  5. 网络与安全
    • 国密双证体系(SM2 签名证书 + SM4 流量加密),Harbor 前端挂 Tengine-GmSSL 卸载;
    • 双向 mTLS 基于国密,客户端使用 SM2 芯片 USBKey(如飞天诚信 ePass3003GM)。
  6. 准入与签名
    • Cosign+国密插件 实现镜像 SM2 签名,签名数据作为 Artifact 存入仓库;
    • OPA Gatekeeper 在 K8s 准入时验签、验 SBOM、验 CVE 白名单,拒绝未签名或 Critical 漏洞镜像
  7. 监控与演练
    • Prometheus + 国密版 Grafana 监控 blob_store_latency、registry_http_requests_total、mysql_group_replication_lag;
    • ** Chaos Mesh 模拟 Zone 级断电**,验证 30 秒内 VIP 漂移到异地并保持登录会话不中断

答案

“关基场景下,我采用‘国密双活 Harbor + 强一致元数据 + 对象存储跨域多活’的三层方案。

  1. 数据层:Blob 走 华为云 OBS 多活桶复制,开启 SM4 服务端加密版本控制,任何一层文件在 A 城市删除,B 城市仍保留版本;Manifest、RBAC、审计日志写入 TiDB 三园区集群Raft 协议保证强一致跨城延迟 <30ms 时提交成功
  2. 服务层:两地各部署 Harbor v2.9 国密版,配置 主主复制,使用 SM2 证书做双向 mTLS;冲突解决策略采用 digest 优先 + 时间戳覆盖保护,同镜像名不同 digest 时,人工复核工单自动落库等保审计系统。
  3. 流量层F5+DNS Pod 级负载Anycast IP + BGP 宣告健康探测失败 3 次即触发 VIP 漂移;客户端通过 国密 USBKey 完成 SM2 签名登录会话 Token 在 Redis 跨区双写漂移后无需重新登录
  4. 合规层:镜像构建阶段即调用 国密 Cosign 插件生成 SM2 签名与 SBOMHarbor 复制策略把签名作为 Artifact 同步审计日志通过 rsyslog-tls 国密加密实时传至关基统一审计平台保存 180 天不可篡改
  5. 演练指标:去年 10 月工信部关基演练中,拔掉 A 城市光纤RPO=0、RTO=28 秒镜像拉取成功率 100%等保审计无告警获得管局通报表扬

拓展思考

  1. 如果监管要求“数据不出省”,而对象存储跨 Region 复制会出省,如何改造?——可引入省内部署的 MinIO 集群 + 省网专线级联采用 MinIO Site Replication关闭跨 Region 流量通过省级密码机提供国密卸载
  2. 当镜像数量达到 50 TB、1 亿层文件时OBS 清单+生命周期会产生大量 LIST 费用,如何降本?——启用 Harbor 的 OCI Index 预合并把高频小层合并为单 Blob减少对象数量 70%同时设置 OBS 深度归档策略90 天未拉取层自动沉降
  3. **未来需要接入 eBPF 透明加密Confidential Container如何在双活架构里保证内存级国密密钥同步?——可探索使用 SGX+国密 Enclave把密钥密封在 Enclave 中通过 RA-TLS 国密通道完成异地 Quote 验证实现“密钥可用不可见”的双活加密运行时。”