关于 automating-storage-limitation-controls
面向数据保护与工程团队的 GDPR 存储期限控制指南,涵盖保留策略、自动删除、法律保全和分层归档的设计与实施。
主要功能
- 01按数据类别制定保留期限
- 02使用 TTL 元数据触发删除
- 03管理法律保全与恢复删除
- 04规划分层存储和归档
- 05验证删除并监控任务
适用场景
- 01设计个人数据自动删除流程
- 02为诉讼或调查暂停删除
- 03规划备份轮换与加密销毁
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ privacy-data-protection-skills --skill automating-storage-limitation-controls安装后在 Claude Code 中输入/automating-storage-limitation-controls确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/template.mdreferences/standards.mdworkflows.mdscripts/process.py详细介绍
自动化存储期限限制控制
概述
GDPR 第 5(1)(e) 条要求,个人数据的保存形式应当能够识别数据主体,但保存时间不得超过实现个人数据处理目的所必需的期限。这就是存储期限限制原则。控制者必须根据处理目的,为每类个人数据规定保留期限(第 13(2)(a) 条要求披露保留期限或确定期限的标准)。
自动化至关重要,因为大规模依赖人工管理保留期限必然会造成合规漏洞。欧洲数据保护委员会关于第 25 条的《4/2019 号指南》明确将自动删除机制列为设计保护数据的示例。
保留政策框架
确定保留期限
每个保留期限都必须以处理目的、法律要求或正当业务需求为依据:
| 数据类别 | 目的 | 合法依据 | 保留期限 | 保留期限起算点 | 法律依据 |
|---|---|---|---|---|---|
| 客户账户数据 | 提供服务 | Art. 6(1)(b) | 合同期限 + 90 天 | 账户关闭 | Art. 5(1)(e), Art. 17(1)(a) |
| 交易记录 | 遵守税务规定 | Art. 6(1)(c) | 10 年 | 交易日期 | Swiss CO Art. 958f, EU VAT Directive 2006/112/EC Art. 242 |
| 支持工单 | 客户服务 | Art. 6(1)(b) | 3 年 | 工单关闭 | Art. 5(1)(e), limitation period |
| 服务器访问日志 | 安全监控 | Art. 6(1)(f) | 12 个月 | 日志创建日期 | Art. 5(1)(e), ENISA recommendation |
| 营销同意记录 | 问责 | Art. 6(1)(c) | 同意有效期 + 5 年 | 撤回同意 | Art. 7(1), Art. 5(2) |
| 雇佣记录 | 法定义务 | Art. 6(1)(c) | 雇佣期限 + 10 年 | 雇佣关系结束 | Swiss OR Art. 127-128 |
| Cookie 分析数据 | 改进产品 | Art. 6(1)(a) | 13 个月 | 数据收集 | ePrivacy Directive Art. 5(3), CNIL guidance |
| DPIA 记录 | 问责 | Art. 6(1)(c) | 处理期限 + 3 年 | 停止处理 | Art. 35, Art. 5(2) |
基于 TTL 的删除架构
┌─────────────────────────────────────────────────────────────┐
│ Retention Policy Engine │
│ ┌───────────────┐ ┌────────────────┐ ┌───────────────┐ │
│ │ Policy Store │ │ TTL Calculator │ │ Legal Hold │ │
│ │ (per category)│ │ (trigger+period)│ │ Registry │ │
│ └───────┬───────┘ └───────┬────────┘ └──────┬────────┘ │
│ └──────────────────┼───────────────────┘ │
└─────────────────────────────┼───────────────────────────────┘
│
┌─────────────────────────────▼───────────────────────────────┐
│ Lifecycle Scheduler │
│ ┌──────────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Expiry Scanner │ │ Archive Mover│ │ Deletion │ │
│ │ (daily cron) │ │ (pre-delete) │ │ Executor │ │
│ └──────────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────────▼───────────────────────────────┐
│ Audit and Verification │
│ ┌──────────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Deletion Log │ │ Verification │ │ Exception │ │
│ │ (immutable) │ │ Scanner │ │ Reporter │ │
│ └──────────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
分布式系统的删除模式
| 模式 | 描述 | 适用场景 | 复杂度 |
|---|---|---|---|
| TTL 列 | 在数据库列中存储过期时间戳;后台作业删除过期行 | 单数据库系统、Redis、DynamoDB | 低 |
| 事件驱动删除 | 生命周期事件(账户关闭)向消息队列发布删除命令 | 微服务架构 | 中 |
| 墓碑标记 + 压缩 | 将记录标记为已删除;后台压缩作业从物理层面移除数据 | 仅追加存储、事件溯源 | 中 |
| 级联删除 | 删除操作沿外键关系传播 | 具有引用完整性的关系数据库 | 中 |
| 分布式 Saga | 在多个服务间协调删除,并在失败时回滚 | 多语言持久化、跨服务数据 | 高 |
| 密钥粉碎 | 销毁加密密钥,使数据无法读取,而不进行物理删除 | 物理删除难以实施的系统(备份、不可变日志) | 中 |
法律保全管理
当数据涉及诉讼、监管调查或审计程序时,法律保全会暂停自动删除。
法律保全生命周期:
- 启动保全 — 法律顾问发出保全通知,明确范围(数据类别、日期范围、受影响主体)和事项参考编号
- 登记保全 — 保留策略引擎登记保全,并创建豁免规则,以覆盖对匹配记录执行的基于 TTL 的删除
- 监控保全 — 法律顾问每月审查,确认保全仍有必要
- 解除保全 — 法律顾问发出解除通知;保留策略引擎移除豁免规则并恢复正常的保留处理
- 补删 — 根据当前保留策略重新评估保全期间本应删除的记录,并删除已过期的记录
Prism Data Systems AG 的实施方式:
| 保全参数 | 值 |
|---|---|
| 保全范围格式 | JSON 文档,指定 data_categories、date_range_start、date_range_end、subject_identifiers、matter_reference |
| 保全登记簿 | 包含不可变审计跟踪的 PostgreSQL 表 |
| 审查频率 | 法律顾问每月审查,DPO 每季度审查 |
| 未续期的最长保全期限 | 12 个月 |
| 保全解除审批 | 双重审批:法律顾问 + DPO |
归档策略
三级存储生命周期
| 层级 | 存储类型 | 访问模式 | 加密 | 保留阶段 |
|---|---|---|---|---|
| 热 | 主数据库(PostgreSQL) | 实时读写 | 字段级 AES-256-GCM | 活跃处理 |
| 温 | 对象存储(兼容 S3,Glacier Instant Retrieval 类别) | 偶尔读取,不写入 | 对象级 AES-256-GCM | 目的达成后、删除前(法律/审计) |
| 冷 | 离线归档(磁带/保险库) | 按请求恢复(24-48h) | AES-256-GCM + 信封加密 | 仅法定保留 |
Prism Data Systems AG 的转换规则:
| 转换 | 触发条件 | 自动化 |
|---|---|---|
| 热 → 温 | 目的达成(例如,账户关闭)+ 90 天 | 每日生命周期作业 |
| 温 → 冷 | 温存储保留期限届满,且仍适用法定保留期限 | 每月生命周期作业 |
| 冷 → 删除 | 法定保留期限届满,且没有生效的法律保全 | 每季度生命周期作业,须经 DPO 审批 |
| 任意层级 → 法律保全 | 为匹配范围登记法律保全 | 立即暂停 |
实施工作流
-
盘点数据存储 — 编目每个存储个人数据的系统,包括主数据库、缓存、消息队列、日志、备份和第三方集成。
-
映射保留要求 — 针对每个数据类别和处理目的,根据目的必要性、法律义务和诉讼时效确定保留期限。
-
实现 TTL 元数据 — 为每个数据存储添加与保留相关的列或元数据:
created_at、retention_trigger_event、retention_trigger_date、ttl_expiry_date、legal_hold_id。 -
部署生命周期调度器 — 实现一项后台服务,每日扫描已过期记录、检查是否存在有效的法律保全,并执行删除或归档转换。
-
实现删除验证 — 每次删除周期后执行验证扫描,确认所有目标记录均已从主存储、副本和缓存中移除。
-
配置备份轮换 — 确保备份保留期限与适用的最长保留期限一致。在无法实际进行精细化删除的备份介质上实施加密销毁。
-
部署监控和告警 — 监控删除作业成功率,标记 TTL 超期超过 7 天的记录,并对法律保全到期发出告警。
主要法规参考
- GDPR 第 5(1)(e) 条 — 存储期限限制原则
- GDPR 第 13(2)(a) 条 — 披露数据保留期限的要求
- GDPR 第 17(1)(a) 条 — 数据不再必要时的删除权
- GDPR 第 25(1) 条 — 通过设计实现数据保护
- GDPR 第 39 条序言 — 存储期限限制指南
- EDPB《第 4/2019 号关于第 25 条“通过设计和默认设置实现数据保护”的指南》
- 《瑞士债务法》第 958f 条 — 商业记录需保留 10 年
- 欧盟《增值税指令》2006/112/EC 第 242 条 — 发票保留要求