版本控制、MFA 删除与复制
启用版本控制以防止意外删除,配置跨区域复制,并添加 MFA 删除保护。
版本控制、MFA 删除与复制 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
S3 版本控制:为何重要
S3 版本控制支持保留、检索和恢复存储桶中每个对象的每个版本。启用版本控制后,每次 PUT 都会创建一个具有唯一版本 ID的新版本;旧版本会被保留,而不会被覆盖。如果删除对象,S3 会将删除标记添加为当前版本,但会保留所有以前的版本。这可以防止意外覆盖、意外删除以及应用层面无意造成的数据损坏——这些是生产环境中最常见的数据丢失情形。
# Enable versioning on a bucket
aws s3api put-bucket-versioning \
--bucket my-important-bucket \
--versioning-configuration Status=Enabled
# List all versions of an object
aws s3api list-object-versions \
--bucket my-important-bucket \
--prefix my-document.pdf版本控制状态和转换
S3 存储桶可以处于三种版本控制状态之一:未启用版本控制(默认状态,没有版本 ID)、已启用版本控制(所有新对象都会获得唯一版本 ID,所有覆盖操作都会创建新版本)或已暂停版本控制(新对象会获得 null 版本 ID,但现有版本会被保留)。启用版本控制后,您无法将其删除,只能暂停。启用版本控制之前创建的对象具有 null 版本 ID,在被覆盖或删除之前不会受到影响。
恢复以前的版本
要恢复启用版本控制的对象的旧版本,有两种方式。选项 1:将旧版本 ID 复制回同一个键,这会创建一个内容为旧版本副本的新版本,并将其提升为当前版本。选项 2:删除当前版本或删除标记,使前一个版本显示为当前版本。在启用版本控制的存储桶中,如果您通过控制台“删除”对象时未指定版本 ID,S3 会添加一个删除标记——对于不使用版本控制的请求,该对象看起来已被删除,但所有版本仍然存在。
# Restore a specific version by copying it back to the same key
aws s3api copy-object \
--bucket my-important-bucket \
--copy-source 'my-important-bucket/my-document.pdf?versionId=abc123'\
--key my-document.pdfMFA Delete:额外保护
MFA Delete 为启用版本控制的存储桶增加第二层保护。启用后,永久删除特定版本或更改存储桶的版本控制状态(启用 → 暂停)时,必须在 API 请求中提供有效的 MFA 凭证。这可以防范以下情况:攻击者获取您的 AWS 凭证后永久删除关键版本;意外或自动删除被固定保留的对象版本;以及内部人员试图销毁审计轨迹。MFA Delete 只能由根用户通过 CLI 启用和禁用。
# Enable MFA Delete (must be done as root user)
aws s3api put-bucket-versioning \
--bucket my-important-bucket \
--versioning-configuration Status=Enabled,MFADelete=Enabled \
--mfa 'arn:aws:iam::123456789012:mfa/root-account-mfa-device 123456'S3 对象锁定
S3 对象锁定为法规合规实施一次写入、多次读取(WORM)模型。使用对象锁定锁定的对象在指定的保留期内无法删除或覆盖——即使账户根用户也不能执行这些操作。对象锁定有两种模式:治理模式(拥有特殊权限的用户可以覆盖或移除锁定)和合规模式(在保留期内任何人都不能删除对象,即使是 AWS 也不行,这是最强的保护级别)。创建存储桶时必须启用对象锁定,并且需要启用版本控制。
# Apply a retention rule to an object
aws s3api put-object-retention \
--bucket my-compliance-bucket \
--key audit-log-2024.csv \
--version-id abc123 \
--retention '{"Mode":"COMPLIANCE","RetainUntilDate":"2027-01-01T00:00:00Z"}'S3 跨区域复制(CRR)
跨区域复制(CRR)会自动将源存储桶中的新对象和更新复制到不同区域的目标存储桶。使用场景包括:合规(在指定国家/地区保留一份数据副本)、灾难恢复(通过在第二个区域维护副本来降低关键数据的 RPO)以及降低延迟(从距离用户最近的区域提供对象)。CRR 要求源存储桶和目标存储桶都启用版本控制,并且需要一个具有必要复制权限的 IAM 角色。
# Apply a replication configuration
aws s3api put-bucket-replication \
--bucket source-bucket-us-east-1 \
--replication-configuration file://replication-config.json
# Config specifies Role ARN, destination bucket ARN, and filter rules同区域复制(SRR)
同区域复制(SRR)会在同一个区域内复制对象。使用场景包括:日志聚合(将多个源存储桶中的日志复制到一个中央存储桶)、测试环境同步(在同一区域内的开发存储桶中保留一份生产数据副本)以及数据主权合规(在包含多个 AWS AZ 的单个国家/地区内实现合规)。与 CRR 一样,SRR 要求两个存储桶都启用版本控制,并且需要一个 IAM 角色。只有启用复制后创建的新对象才会自动复制;如需复制现有对象,请使用 S3 Batch Replication。
复制:哪些内容会复制,哪些不会
S3 复制会复制:新对象、元数据、标签、ACLs 和加密状态。默认情况下,复制不会复制:启用复制之前已存在的对象(请对这些对象使用 S3 Batch Replication)、删除标记(除非启用 Delete Marker Replication)、Glacier 中的对象(无法直接复制,必须先恢复)以及已复制的对象(不会在三个存储桶之间进行级联复制)。了解这些边界对于设计完整的 DR 策略非常重要,因为历史数据和删除事件也可能需要复制。
S3 复制时间控制(RTC)
复制时间控制(RTC)是 CRR 的可选附加功能,提供服务级别协议:在15 分钟内完成 99.99% 的对象复制,并在 CloudWatch 中提供复制指标和通知。没有 RTC 时,复制没有时间保证——大多数对象会很快完成复制,但少数对象可能需要数小时。对于 DR 或合规要求规定了 S3 数据最大恢复点目标(RPO)的情况,RTC 至关重要。除标准复制数据传输费用外,它还会按 GB 收取复制费用。
版本控制与存储成本影响
启用版本控制会增加存储成本,因为 S3 会保留每个对象的每个版本,直到明确将其删除。一个 100 MB 的文件被覆盖 10 次后,会占用 1,000 MB 的存储空间。您可以通过生命周期规则来缓解这一问题:在设定的天数后自动使非当前版本过期(例如,删除超过 30 天的非当前版本),或将非当前版本转移到 Glacier 等更便宜的存储类别。生产环境中,请始终将版本控制与生命周期规则结合使用,以控制存储成本。
# Lifecycle rule to expire non-current versions after 30 days
aws s3api put-bucket-lifecycle-configuration \
--bucket my-important-bucket \
--lifecycle-configuration '{"Rules":[{"ID":"expire-old-versions","Status":"Enabled","NoncurrentVersionExpiration":{"NoncurrentDays":30}}]}'防范勒索软件
S3 版本控制结合对象锁定(合规模式)可以为您提供强大的勒索软件防护。如果攻击者加密或删除了您的对象,版本控制可以确保之前的版本得以保留(除非攻击者将其永久删除——这正是对象锁定在保留期间阻止永久删除的原因)。要获得最大程度的保护,请执行以下操作:启用版本控制,启用 MFA Delete,为关键数据应用合规模式下的对象锁定,并使用独立的 IAM 凭证将数据复制到另一个 Region,从而避免单个账户遭到入侵后摧毁所有副本。
快速检查
测试您对本课 AWS Solutions Architect(SAA-C03)相关概念的理解。
课程回顾
本课您学习了以下内容:版本控制会保留每个对象的所有版本,并防止意外删除;MFA Delete 和对象锁定可为合规性和勒索软件防护提供额外的不可变性;CRR 和 SRR 会将对象复制到其他存储桶,以满足 DR 和合规性要求。接下来,我们将学习 S3 存储类别和用于成本优化的生命周期策略。
常见问题解答
「版本控制、MFA 删除与复制」课时是免费的吗?
是的 — 「版本控制、MFA 删除与复制」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「版本控制、MFA 删除与复制」这节课中我会学到什么?
启用版本控制以防止意外删除,配置跨区域复制,并添加 MFA 删除保护。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「版本控制、MFA 删除与复制」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 桶、对象与区域
- S3 访问控制:桶策略与 ACL
- 版本控制、MFA 删除与复制
- 存储类别与生命周期策略