关于 cloud-retention-config
面向云存储与合规团队的保留策略配置指南,覆盖 AWS S3、Microsoft Azure Blob Storage 和 Google Cloud Storage。内容包括生命周期规则、不可变存储、法律保留、跨区域同步及审计监控。
主要功能
- 01三种云存储保留配置
- 02生命周期转换与到期删除
- 03对象锁定与法律保留
- 04跨区域策略对齐
- 05保留配置审计与告警
适用场景
- 01为云端个人数据设置保留期限
- 02配置诉讼或监管调查所需的法律保留
- 03检查跨区域副本的保留策略一致性
- 04审计存储规则及删除执行情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ privacy-data-protection-skills --skill cloud-retention-config安装后在 Claude Code 中输入/cloud-retention-config确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/template.mdreferences/standards.mdworkflows.mdscripts/process.py详细介绍
云存储保留配置
概述
云存储平台提供原生保留和生命周期管理功能,可在基础设施层面执行数据保留计划。正确配置可确保云环境中存储的个人数据根据保留政策自动转换存储类别、归档或删除,同时法律保留和对象锁定功能可防止过早删除受监管或诉讼要求约束的数据。本技能介绍三大云平台的配置:AWS S3、Microsoft Azure Blob Storage 和 Google Cloud Storage。
法律背景
GDPR 第 5(1)(e) 条——存储期限限制
云存储保留政策是存储期限限制原则的技术实现,可确保数据不会超出处理目的所需期限而继续保留。
GDPR 第 32 条——处理安全
保留配置必须包含适当的安全措施,包括静态加密、访问控制,以及对所有保留相关操作进行审计日志记录。
GDPR 第 25 条——通过设计和默认保护数据
云保留政策应配置为所有存储资源的默认设置,而非事后应用。
AWS S3 生命周期和保留配置
S3 生命周期规则
S3 生命周期规则可自动转换存储类别并设置对象过期:
Orion Data Vault Corp 的生命周期规则配置
| 规则名称 | 前缀/标签筛选条件 | 转换 | 过期时间 | 用途 |
|---|---|---|---|---|
| customer-data-lifecycle | 前缀:customer-data/ | 90 天 → S3 Glacier Instant Retrieval;365 天 → S3 Glacier Deep Archive | 2,190 天(6 年) | 客户交易记录——HMRC 保留要求 |
| marketing-data-lifecycle | 标签:data-category=marketing | 180 天 → S3 Intelligent-Tiering | 730 天(2 年) | 营销联系人数据——基于同意的保留 |
| analytics-data-lifecycle | 前缀:analytics/ | 90 天 → S3 Glacier Instant Retrieval | 790 天(26 个月) | 网站分析数据——ICO/CNIL 建议的期限 |
| cctv-footage-lifecycle | 前缀:cctv/ | 无 | 30 天 | CCTV 录像——ICO CCTV 实务准则 |
| applicant-data-lifecycle | 前缀:recruitment/ | 无 | 180 天(6 个月) | 未成功应聘者的数据 |
| financial-records-lifecycle | 前缀:finance/ | 365 天 → S3 Glacier Deep Archive | 2,190 天(6 年) | 财务和税务记录——《2006 年公司法》 |
| employee-records-lifecycle | 标签:data-category=employee | 730 天 → S3 Glacier Deep Archive | 由 HR 系统控制(在职期间 + 6 年) | 员工 HR 记录 |
S3 生命周期规则——JSON 配置示例
{
"Rules": [
{
"ID": "customer-data-lifecycle",
"Filter": {
"Prefix": "customer-data/"
},
"Status": "Enabled",
"Transitions": [
{
"Days": 90,
"StorageClass": "GLACIER_IR"
},
{
"Days": 365,
"StorageClass": "DEEP_ARCHIVE"
}
],
"Expiration": {
"Days": 2190
},
"NoncurrentVersionTransitions": [
{
"NoncurrentDays": 30,
"StorageClass": "GLACIER_IR"
}
],
"NoncurrentVersionExpiration": {
"NoncurrentDays": 2190
}
}
]
}
S3 对象锁定
S3 对象锁定可在固定保留期限内或永久防止对象被删除或覆盖。它有两种模式:
| 模式 | 行为 | 在 Orion Data Vault Corp 的用途 |
|---|---|---|
| 治理模式 | 防止大多数用户删除对象;拥有 s3:BypassGovernanceRetention 权限的用户可以绕过限制 | 标准保留执行机制——允许 DPO 批准对有效的第 17 条请求提前删除 |
| 合规模式 | 在整个保留期限内防止所有用户(包括根账户)删除对象 | 法律禁止在期限届满前删除的监管记录(例如,依据 MLR 2017 保留的 AML 记录) |
对象锁定配置
{
"ObjectLockConfiguration": {
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "GOVERNANCE",
"Days": 2190
}
}
}
}
GDPR 擦除的重要注意事项:如果使用合规模式,则必须等到保留期限届满后,才能处理依据第 17 条提出的数据主体擦除请求。对于可能出现擦除请求的数据类别,应使用治理模式;合规模式仅适用于依法必须保留、且依据第 17(3)(b) 条凌驾于擦除权之上的数据。
S3 法律保留
法律保留是一种独立的开关标记,无论保留设置如何,都会阻止对象删除:
aws s3api put-object-legal-hold \
--bucket orion-data-vault-regulated \
--key customer-data/2024/transaction-batch-0142.parquet \
--legal-hold Status=ON
法律保留必须:
- 收到诉讼保留通知后立即应用
- 记录在诉讼保留管理登记册中(交叉参考:litigation-hold-mgmt 技能)
- 仅在收到法律顾问的书面授权后移除
- 可审计——所有法律保留变更均通过 CloudTrail 记录
Microsoft Azure Blob Storage 保留
不可变性策略
Azure Blob Storage 支持在容器级别设置不可变性策略:
| 策略类型 | 行为 | 配置 |
|---|---|---|
| 基于时间的保留 | 在指定时间段内禁止修改和删除 | 设置以天为单位的保留期限;可以锁定(不可逆)或解锁 |
| 法律保留 | 在清除所有法律保留标记之前,禁止修改和删除 | 应用命名的法律保留标记;可以同时存在多个保留 |
基于时间的保留策略配置
{
"properties": {
"immutabilityPeriodSinceCreationInDays": 2190,
"allowProtectedAppendWrites": true,
"allowProtectedAppendWritesAll": false
}
}
Azure 生命周期管理规则
{
"rules": [
{
"enabled": true,
"name": "customer-data-retention",
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": ["blockBlob"],
"prefixMatch": ["customer-data/"]
},
"actions": {
"baseBlob": {
"tierToCool": {
"daysAfterModificationGreaterThan": 90
},
"tierToArchive": {
"daysAfterModificationGreaterThan": 365
},
"delete": {
"daysAfterModificationGreaterThan": 2190
}
},
"snapshot": {
"delete": {
"daysAfterCreationGreaterThan": 2190
}
}
}
}
},
{
"enabled": true,
"name": "analytics-data-retention",
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": ["blockBlob"],
"prefixMatch": ["analytics/"]
},
"actions": {
"baseBlob": {
"tierToCool": {
"daysAfterModificationGreaterThan": 90
},
"delete": {
"daysAfterModificationGreaterThan": 790
}
}
}
}
}
]
}
Azure 法律保留
az storage container legal-hold set \
--account-name oriondatavault \
--container-name regulated-data \
--tags "litigation-2026-001" "regulatory-investigation-2026-003"
Azure 版本控制与软删除的交互
配置保留时,请考虑 Azure 的软删除和版本控制功能:
| 功能 | 对保留的影响 | 建议设置 |
|---|---|---|
| Blob 软删除 | 已删除的 Blob 会在恢复期限内保留 | 设置为 14 天 — 确保在软删除期限过后才实际删除 |
| 容器软删除 | 已删除的容器会保留以供恢复 | 设置为 14 天 |
| Blob 版本控制 | 保留以前的版本 | 对版本应用生命周期规则;确保删除已过期的版本 |
Google Cloud Storage 保留
存储桶级保留策略
GCP 在存储桶级别应用保留策略。在保留期限届满之前,无法删除或覆盖对象:
{
"retentionPolicy": {
"retentionPeriod": "189216000",
"isLocked": false
}
}
retentionPeriod 以秒为单位指定。常见值:
| 保留期限 | 秒数 | 使用场景 |
|---|---|---|
| 30 天 | 2,592,000 | CCTV 录像 |
| 6 个月 | 15,552,000 | 未成功申请人的数据 |
| 26 个月 | 68,256,000 | 分析数据 |
| 2 年 | 63,072,000 | 营销数据 |
| 6 年 | 189,216,000 | 财务/税务记录 |
| 7 年 | 220,752,000 | 审计记录 |
锁定保留策略
gcloud storage buckets update gs://orion-regulated-finance \
--lock-retention-policy
警告:锁定保留策略不可逆。一旦锁定,就无法缩短或移除保留期限。在其中所有对象均达到保留期限之前,无法删除存储桶。仅对绝对法定保留要求优先于第 17 条权利的数据类别锁定策略。
GCP 对象保留
| 保留类型 | 行为 | 使用场景 |
|---|---|---|
| 临时保留 | 阻止删除;可随时移除 | 暂停第 17 条请求(评估期);临时保存 |
| 基于事件的保留 | 在解除保留之前阻止删除;保留期限从解除保留时开始计算 | 保留期限从未来事件开始计算的数据(例如,合同终止) |
gcloud storage objects update gs://orion-regulated-data/customer-data/batch-0142.parquet \
--temporary-hold
GCP 生命周期规则
{
"lifecycle": {
"rule": [
{
"action": {
"type": "SetStorageClass",
"storageClass": "NEARLINE"
},
"condition": {
"age": 90,
"matchesPrefix": ["customer-data/"]
}
},
{
"action": {
"type": "SetStorageClass",
"storageClass": "ARCHIVE"
},
"condition": {
"age": 365,
"matchesPrefix": ["customer-data/"]
}
},
{
"action": {
"type": "Delete"
},
"condition": {
"age": 2190,
"matchesPrefix": ["customer-data/"]
}
}
]
}
}
跨区域复制的保留策略对齐
当数据跨区域复制以确保可用性或用于灾难恢复时,必须对齐保留策略:
对齐要求
- 保留期限一致:目标区域中的复制数据必须与源数据具有相同的保留期限。
- 生命周期规则同步:必须在源存储桶/容器和目标存储桶/容器上配置完全相同的生命周期转换和过期规则。
- 法律保留传播:在源数据上应用的法律保留也必须应用到目标数据。请配置自动传播。
- 删除传播:源数据中的对象过期或被删除时,副本也必须删除。请将复制配置为处理删除标记。
- 司法管辖区考量:如果目标区域属于不同司法管辖区,请确认该管辖区的适用保留要求与源数据的保留期限不冲突。
跨区域配置检查清单
| 检查项 | AWS | Azure | GCP |
|---|---|---|---|
| 生命周期规则与源数据一致 | 对目标存储桶应用与源数据完全相同的 S3 生命周期规则 | 对目标容器应用与源数据完全相同的生命周期管理策略 | 对目标存储桶应用与源数据完全相同的生命周期规则 |
| 保留/锁定设置一致 | 对目标存储桶配置与源数据完全相同的 Object Lock 设置 | 对目标存储桶应用与源数据完全相同的不可变策略 | 对目标存储桶应用与源数据完全相同的保留策略 |
| 删除标记复制 | 在复制配置中启用 DeleteMarkerReplication | 启用 blob 更改源并处理删除操作 | 配置存储桶通知以接收删除事件 |
| 法律保留同步 | 使用由 CloudTrail 触发的 Lambda 传播法律保留 | 使用 Event Grid + Azure Function 传播法律保留 | 使用由审核日志触发的 Cloud Functions 传播法律保留 |
| 监控 | 使用 CloudWatch 监控复制延迟指标 | 使用 Azure Monitor 监控复制指标 | 使用 Cloud Monitoring 监控复制指标 |
合规性监控
每月云保留审计
- 策略漂移检测:将有效的生命周期规则和保留策略与已批准的保留计划进行比较。标记所有差异。
- 覆盖范围验证:确认所有存储个人数据的存储桶/容器都已应用适用的保留策略。
- 法律保留清单:列出所有云平台上的有效法律保留,并与诉讼保留登记册交叉核对,以找出应已解除的保留。
- 过期情况验证:抽查近期过期的对象,确认它们确实已删除(而不只是转换存储层或软删除)。
- 跨区域一致性:验证复制的存储桶/容器是否保持相同的保留配置。
警报配置
| 警报 | 条件 | 操作 |
|---|---|---|
| 策略已移除 | 从受监管的存储桶中删除保留策略或生命周期规则 | 立即向 Cloud Security + DPO 发出警报 |
| 绕过对象锁定 | 使用了 s3:BypassGovernanceRetention | 向 DPO 发出警报;核实删除是否经过授权 |
| 法律保留变更 | 应用了法律保留或移除了法律保留 | 记录到诉讼保留登记册;向 Legal 发出警报 |
| 尝试解锁保留策略 | 尝试修改已锁定的保留策略 | 向 Cloud Security 发出警报(操作应失败——请调查) |
| 复制延迟 > 24h | 跨区域复制延迟超过 24 小时 | 向 IT Operations 发出警报——灾难恢复区域可能存在保留缺口 |