如何 WORM 存储备份以满足《证券法》要求?

解读

面试官把“CouchDB 备份”与“证券行业合规”两个维度强行拉到一起,目的是考察候选人能否把分布式 NoSQL 技术落地到强监管业务场景
《证券法》及证监会《证券基金经营机构信息技术管理办法》对交易数据、客户委托、行情留痕等关键数据提出“不可篡改、不可删除、可审计、可回溯”的刚性要求,本质就是WORM(一次写入多次读取)
CouchDB 本身没有“WORM”开关,因此必须围绕“写前控制 + 写后验证 + 存储层固化 + 司法级取证链”四步设计,才能在国内券商生产环境通过证监局现场检查交易所专项审计

知识点

  1. WORM 法律定义:中国《电子数据取证规范》GA/T 756-2021 明确“一次写入”指“物理扇区级别禁止覆盖、逻辑层面禁止修改、删除操作被审计”。
  2. CouchDB 数据模型:JSON 文档 + 增量 MVCC,_rev 版本链天然可追踪,但compaction_deleted标记会物理消除历史,直接违背 WORM。
  3. 国内可接受的三种 WORM 实现路径
    a) 物理层:国产光存储(华录、紫晶)或 AWS S3 Object Lock 合规区(北京/宁夏区域通过等保四级)。
    b) 逻辑层:Linux immutable bit + chattr + i 白名单脚本,配合国密 SM3 摘要。
    c) 区块链锚定:把每日根哈希写入长安链蚂蚁链司法存证平台,获得《互联网法院》认可的电子数据保全证书
  4. 证监会检查点:备份数据保存期限≥20 年RPO≤5 分钟RTO≤30 分钟异地容灾≥200 km国密算法加密双人双岗密钥管理

答案

分五步落地,全部在国产软硬件栈完成,可直接写进券商技术方案。

  1. 关闭 CouchDB 破坏性功能
    在 local.ini 追加:
    [daemons]
    compaction_daemon = {couch_compaction_daemon, start_link, []}
    随后把 compaction_daemon 设置为 undefined 并重启节点,永久禁用自动 compaction;同时通过 validate_doc_update 函数拒绝任何带 _deleted: true 的写请求,从入口堵住“逻辑删除”

  2. 生成“只读副本”并计算国密摘要
    每日 02:05 通过 couchbackup 的“–incremental”模式把前一日增量写成 .couch 文件流,即时计算 SM3 摘要并写入文件名(如 backup_20240618_001.sm3)。备份脚本以只读用户运行,防止误写。

  3. WORM 存储层固化
    把 .couch 文件流通过 rclone 直写到华为云 OBS 深度归档桶,桶策略开启合规保留(Compliance Lock),保留期设为 7 300 天(20 年),LegalHold 由合规部负责人 AWS CLI 二次确认,任何人在保留期内无法删除。

  4. 区块链锚定留痕
    将当日所有备份文件的 SM3 拼接成 Merkle Tree 根哈希,调用北京互联网法院“天平链”链接口,上链后返回证据编号(格式:TPL_YYYYMMDD_xxx)。该编号写入 CouchDB 的“audit”库,与交易业务数据同库同生命周期,方便监管一键核验。

  5. 审计与恢复演练
    每季度末由合规部+信息技术部+外部会计师三方在场,随机抽取一个历史月分片,用天平链证据编号+SM3 重新校验文件完整性;同时做全量恢复演练,确保 30 分钟内可挂载到只读节点,演练报告签字盖章后扫描上传证监会“证券基金机构监管综合系统”

通过以上五步,CouchDB 备份链即满足《证券法》不可篡改、不可删除、可回溯、可司法取证的 WORM 要求,可直接应对证监局现场检查交易所数据专项审计

拓展思考

  1. 如果监管未来要求实时流式 WORM(RPO=0),可在 CouchDB 的 before_update 钩子内把文档哈希同步写入国密版 Kafka + 蚂蚁链司法存证 SDK,实现毫秒级哈希上链;但需评估链上 TPS 成本节点写入延迟
  2. 对于分级存储(热温冷),可让热数据保留在本地 NVMe SSD,温数据用CouchDB 2.x 集群 + erlang:hibernate 降频,冷数据直接转蓝光库;注意蓝光库需通过工信部电子一所20 年寿命认证,否则监管不认。
  3. 若公司已在信创目录,需把 rclone 换成国产开源替代“gosync”,加密算法由 AES-256 改为SM4/SM2,密钥托管在人大金仓的密码机,以满足证监会2025年信创验收100% 国产密码要求。