在等保三级测评中,如何证明“剩余信息”已清理?
解读
等保三级(GB/T 22239-2019)把“剩余信息保护”列为安全计算环境中的强制控制点,要求“当资源释放或重新分配时,应确保前一个用户的数据在磁盘、内存、索引、缓存、日志中不可恢复”。
CouchDB 采用追加写 B+ 树与MVCC机制,旧版本文档、视图索引、压缩临时文件、日志片段极易成为“剩余信息”藏身之处。
面试官真正想听的是:你能否用国产密码、国测工具、国产流程把“清理”做成可验证、可复现、可审计的证据链,而不是简单一句“我开了压缩”。
知识点
- 等保三级对剩余信息的判定基准:使用国家密码管理局认可的恢复工具(如国测版 Ontrack、北信源数据销毁工具)连续读取一个物理扇区仅允许出现随机化特征,不得检出16 个及以上连续原始字节。
- CouchDB 的数据残留面:
.couch文件内部被标记为“已删除”但尚未重写压缩的文档主体与附件;view_index_dir里由 JavaScript 视图产生的旧索引分片;crash.dmp、couch.log、audit.log中可能打印的完整 JSON 文档;- 启用了
delayed_commits=true时,未刷盘的 Erlang 消息队列; - 容器场景下,overlay2 快照层中的旧文件句柄。
- 国产合规清理技术:
- 国密 SM4 随机密钥对文件系统级整块磁盘做离线覆盖写(三遍模式:0x55、0xAA、随机);
- 在线场景使用国测版 shred(支持 SM4)对单文件4 KiB 对齐覆写≥6 次;
- 内存清理调用 Erlang
erlang:garbage_collect/1+erlang:hibernate/3,并触发 Linuxmadvise(MADV_DONTNEED),确保物理页帧被内核回收前置零; - 日志采用国密 SM3+HMAC 计算每条记录摘要,定期归档后立即对原始文件国密级粉碎,保留摘要链供审计。
- 证据链四件套(测评员必查):
- 清理脚本(含 SM4 密钥版本号、时间戳、操作员国密 USBKey 证书 SN);
- 国测机构出具的“不可恢复”检测报告;
- CouchDB 审计日志(级别=info,包含
compaction_start|done、view_cleanup、db_deleted事件); - 运维工单+三级审批电子流,与堡垒机录像一一对应。
答案
要当场向测评机构证明“剩余信息已清理”,必须交付**“技术措施+管理证据”**两条线:
- 技术措施
① 离线盘:维护窗口内停服,使用国密版 DBAN对数据盘做SM4 三遍覆写,生成国测报告编号;
② 在线库:- 设置
compaction_daemon触发阈值fragmentation=30%,每次压缩后自动调用国测 shred对旧的.compact.old文件6 次覆写; - 视图目录每日凌晨执行
couchdb-compact-view脚本,清理完成后对*.view旧文件SM4 覆写并写syslog 审计; - 日志采用SM3 摘要链,归档后立即粉碎,保留摘要供完整性校验;
③ 内存:在application:stop(couch)前注入 Erlang 0x00 填充模块,强制 GC 并调用madvise置零,/proc/meminfo 观察ZeroPages增量。
- 设置
- 管理证据
- 提供**《CouchDB 剩余信息清理作业指导书》**(含国密算法版本、工具 SHA256、操作截图);
- 出具第三方国测机构《不可恢复性检测报告》(结论页盖 CNAS 章);
- 堡垒机导出操作员、审核员、监审员三级 USBKey 签名录像,时间戳与脚本日志一一对应;
- 在等保测评现场,测评员随机抽选退役磁盘一块,使用国测版恢复工具全盘扫描,未检出 16 个以上连续原始字节,即判定为“符合”。
拓展思考
- 若 CouchDB 部署在国产化 ARM+麒麟 OS环境,需确认shred是否已适配麒麟安全内核的写时复制特性,避免ext4 delalloc延迟写导致覆写失效;
- 当启用CouchDB 3.x 的“加密存储”(
enable_database_encryption = true)时,剩余信息清理范围还要包括密钥文件(*.key)与Erlang ETS 表中的明文密钥片段,需要国密 USBKey 封闭存储+内存清零双重措施; - 在云环境中,若底层为国产分布式块存储(如华为 Kunpeng-OceanStor),需向云服务商索要**《物理盘擦除证明》,并与租户侧CouchDB 逻辑清理报告做“双轨”交叉验证**,才能通过等保三级云计算扩展要求的审查。