如何 WORM 存储备份以满足《证券法》要求?
解读
面试官把“CouchDB 备份”与“证券行业合规”两个维度强行拉到一起,目的是考察候选人能否把分布式 NoSQL 技术落地到强监管业务场景。
《证券法》及证监会《证券基金经营机构信息技术管理办法》对交易数据、客户委托、行情留痕等关键数据提出“不可篡改、不可删除、可审计、可回溯”的刚性要求,本质就是WORM(一次写入多次读取)。
CouchDB 本身没有“WORM”开关,因此必须围绕“写前控制 + 写后验证 + 存储层固化 + 司法级取证链”四步设计,才能在国内券商生产环境通过证监局现场检查与交易所专项审计。
知识点
- WORM 法律定义:中国《电子数据取证规范》GA/T 756-2021 明确“一次写入”指“物理扇区级别禁止覆盖、逻辑层面禁止修改、删除操作被审计”。
- CouchDB 数据模型:JSON 文档 + 增量 MVCC,_rev 版本链天然可追踪,但compaction与_deleted标记会物理消除历史,直接违背 WORM。
- 国内可接受的三种 WORM 实现路径:
a) 物理层:国产光存储(华录、紫晶)或 AWS S3 Object Lock 合规区(北京/宁夏区域通过等保四级)。
b) 逻辑层:Linux immutable bit + chattr + i 白名单脚本,配合国密 SM3 摘要。
c) 区块链锚定:把每日根哈希写入长安链或蚂蚁链司法存证平台,获得《互联网法院》认可的电子数据保全证书。 - 证监会检查点:备份数据保存期限≥20 年、RPO≤5 分钟、RTO≤30 分钟、异地容灾≥200 km、国密算法加密、双人双岗密钥管理。
答案
分五步落地,全部在国产软硬件栈完成,可直接写进券商技术方案。
-
关闭 CouchDB 破坏性功能
在 local.ini 追加:
[daemons]
compaction_daemon = {couch_compaction_daemon, start_link, []}
随后把 compaction_daemon 设置为 undefined 并重启节点,永久禁用自动 compaction;同时通过 validate_doc_update 函数拒绝任何带 _deleted: true 的写请求,从入口堵住“逻辑删除”。 -
生成“只读副本”并计算国密摘要
每日 02:05 通过 couchbackup 的“–incremental”模式把前一日增量写成 .couch 文件流,即时计算 SM3 摘要并写入文件名(如 backup_20240618_001.sm3)。备份脚本以只读用户运行,防止误写。 -
WORM 存储层固化
把 .couch 文件流通过 rclone 直写到华为云 OBS 深度归档桶,桶策略开启合规保留(Compliance Lock),保留期设为 7 300 天(20 年),LegalHold 由合规部负责人 AWS CLI 二次确认,任何人在保留期内无法删除。 -
区块链锚定留痕
将当日所有备份文件的 SM3 拼接成 Merkle Tree 根哈希,调用北京互联网法院“天平链”链接口,上链后返回证据编号(格式:TPL_YYYYMMDD_xxx)。该编号写入 CouchDB 的“audit”库,与交易业务数据同库同生命周期,方便监管一键核验。 -
审计与恢复演练
每季度末由合规部+信息技术部+外部会计师三方在场,随机抽取一个历史月分片,用天平链证据编号+SM3 重新校验文件完整性;同时做全量恢复演练,确保 30 分钟内可挂载到只读节点,演练报告签字盖章后扫描上传证监会“证券基金机构监管综合系统”。
通过以上五步,CouchDB 备份链即满足《证券法》不可篡改、不可删除、可回溯、可司法取证的 WORM 要求,可直接应对证监局现场检查与交易所数据专项审计。
拓展思考
- 如果监管未来要求实时流式 WORM(RPO=0),可在 CouchDB 的 before_update 钩子内把文档哈希同步写入国密版 Kafka + 蚂蚁链司法存证 SDK,实现毫秒级哈希上链;但需评估链上 TPS 成本与节点写入延迟。
- 对于分级存储(热温冷),可让热数据保留在本地 NVMe SSD,温数据用CouchDB 2.x 集群 + erlang:hibernate 降频,冷数据直接转蓝光库;注意蓝光库需通过工信部电子一所的20 年寿命认证,否则监管不认。
- 若公司已在信创目录,需把 rclone 换成国产开源替代“gosync”,加密算法由 AES-256 改为SM4/SM2,密钥托管在人大金仓的密码机,以满足证监会2025年信创验收的100% 国产密码要求。