本节摘要:对象锁定(Object Lock)实现 WORM 语义——一次写入,任何人在保留期内都无法修改或删除,root 账号也不例外。本节讲清治理与合规两种保留模式的权限差别、法定持有的用法,以及金融与医疗行业落地时的配置纪律。
常规的权限模型里,"删不掉"是个伪命题:只要有人在某个环节拥有删除权限,删除就可能发生——无论是恶意的管理员、被盗的凭证,还是一条写错的自动化脚本。金融交易记录、医疗病历、审计日志这类数据的主管机关不接受这种"可能":保留期内必须物理上删不掉。对象锁定提供的 WORM(Write Once Read Many)语义就是这个承诺的技术化:版本一旦进入保留状态,所有删除与覆盖请求直接被拒绝,返回错误——不是权限不足可以绕过,是对象本身不可触碰。
对象锁定的核心配置是保留模式,二选一:
治理模式(governance):保留期内对象不可删,但持有特殊权限(s3:BypassGovernanceRetention)且带绕过头的请求可以提前解除。它防的是"误操作与常规越权",给高级管理员留了纠错通道。适合内部风控、防脚本误删这类"软合规"场景。
合规模式(compliance):保留期内任何人都无法解除——包括 root 账号。设置保留期时的那次 API 调用是不可逆的承诺:定十年就是十年,到期之前这个版本在数学上不可删除。它防的是"所有内部人"。适合监管明确要求留存年限的场景。
两种模式的差别浓缩成一句话:治理模式有钥匙,合规模式没有钥匙。选哪种取决于你的威胁模型里有没有"内部高级权限作恶"这一项——有,就选合规模式,并且慎重设置年限,因为定错了也改不了。
# 建桶时必须启用锁定(事后再开不支持) mc mb --with-lock fleet/audit-archive # 给对象设置 2555 天(七年)合规保留 mc retention set --default compliance 2555d fleet/audit-archive # 或对单个对象设置 mc retention set compliance 2555d fleet/audit-archive/trade-2026/txn-0001.log # 法定持有:无期限的开关型锁定,用于诉讼或调查期间 mc legalhold set fleet/audit-archive/trade-2026/txn-0001.log # 查看保留状态 mc retention info fleet/audit-archive/trade-2026/txn-0001.log
法定持有(legal hold)是另一条独立的轴:不设年限、打上即生效、明确解除才关闭,常与保留期叠加使用——保留期管"至少存多久",法定持有管"争议解决前一个都不许动"。

军规一:建桶即规划。 锁定特性在建桶时决定,对象锁桶不能由普通桶改造而来——上线前的建桶清单里要有一栏"是否需要 WORM"。
军规二:合规年限双人复核。 合规模式定错了改不了,年限计算(监管要求"保存七年"从哪个时点起算)要由合规岗与运维岗双人确认后执行。真实事故里有人把"天"参数手滑设成了 2555 年——那个桶将陪伴公司直到注销。
军规三:保留期与生命周期协同。 5.2 说过,锁定优先于生命周期:保留期内版本不会被清理。设计时算好"锁定年限结束后,生命周期规则接手清理"的接力关系,别让两个特性各自为政。
背景:某支付公司的监管检查意见要求:交易相关日志保存七年、期间防篡改、防提前删除。
操作:新建带锁定的 audit-archive 桶,默认合规模式 2555 天;日志采集系统以"当日批量打包"为粒度写入;每年打包对象额外打法定持有开关直至年度审计结束;桶同步到异地站点(5.4)作为容灾副本,副本的锁定语义随站点复制同步生效。
结果:次年的监管复查里,检查方现场验证"以最高权限账号尝试删除"被拒,此项检查一次通过。
解读:合规验收的实际动作就是"拿最高权限试删",对象锁定把这个动作变成了演示项目而非风险项。工具的意义正在于此:把"我们承诺不删"变成"系统不允许删"。
变式:若监管同时要求"留存数据出异地容灾",锁定与站点复制的组合就是标准答案,但要注意两端保留配置的一致性——同步的是锁定语义,不是两套各自为政的配置。
单点仓库的时间管理到此齐备。下一节把视野拉到异地:站点复制如何让两座仓库共用一条时间线。
占,而且必须占——锁定版本的存储是合规承诺的物理载体。保留期内生命周期规则的清理动作会被锁定压制(5.2 讲过的优先级),到期之后版本回归普通状态,生命周期规则随即可以接管清理。设计归档桶时,把锁定年限与生命周期天数对齐成接力关系,容量曲线才可预期。
不能。锁定特性在建桶时一次定型,普通桶无法改造为锁定桶——这是"建桶清单"制度存在的直接原因。存量数据需要 WORM 保护时的正解是新建锁定桶,用镜像工具把数据迁入,迁移过程中对象会重新落一版保留期。
不会自动删。到期只是解除锁定,对象回归普通版本,删不删、何时删,交回给生命周期规则或人工决定。这个设计留了一手:合规期结束后,往往还有一轮内部复核才允许清理,自动删除反而危险。
三问三答的共性值得点破:锁定的行为模型极其简单——"期内不可删",复杂的是它与其他机制(生命周期、迁移、复制)的接力。设计锁定方案时,画一张时间轴把各机制的生效区间摆在一起,接力关系自然清楚,5.3 的那张时间轴图就是为此准备的。