

# 对象锁定注意事项
<a name="object-lock-managing"></a>

Amazon S3 ​对象锁定可以协助在固定的时间长度内或无限期地阻止删除或覆盖对象。

您可以使用 Amazon S3 控制台、AWS Command Line Interface（AWS CLI）、AWS SDK 或 Amazon S3 REST API 来查看或设置对象锁定信息。有关 S3 对象锁定功能的一般信息，请参阅[使用对象锁定以锁定对象](object-lock.md)。

**重要**  
在某个存储桶上启用对象锁定后，您将无法为该存储桶禁用对象锁定或暂停版本控制。
具有对象锁定的 S3 存储桶不能用作服务器访问日志的目标存储桶。有关更多信息，请参阅 [使用服务器访问日志记录来记录请求](ServerLogs.md)。

**Topics**
+ [查看锁定信息的权限](#object-lock-managing-view)
+ [绕过监管模式](#object-lock-managing-bypass)
+ [将对象锁定与 S3 复制结合使用](#object-lock-managing-replication)
+ [将对象锁定与加密结合使用](#object-lock-managing-encryption)
+ [将对象锁定与 Amazon S3 清单结合使用](#object-lock-inv-report)
+ [使用对象锁定管理 S3 生命周期策略](#object-lock-managing-lifecycle)
+ [使用对象锁定管理删除标记](#object-lock-managing-delete-markers)
+ [将 S3 Storage Lens 存储分析功能与对象锁定结合](#object-lock-storage-lens)
+ [将对象上传到启用了对象锁定的桶](#object-lock-put-object)
+ [配置事件和通知](#object-lock-managing-events)
+ [使用存储桶策略为保留期限设置限制](#object-lock-managing-retention-limits)

## 查看锁定信息的权限
<a name="object-lock-managing-view"></a>

您可以使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) 或 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 操作，以编程方式查看 Amazon S3 对象版本的对象锁定状态。这两个操作都会返回指定对象版本的保留模式、保留到期日和依法保留状态。此外，您可以使用 S3 清单来查看 S3 存储桶中多个对象的对象锁定状态。

要查看对象版本的保留模式和保留期限，您必须拥有 `s3:GetObjectRetention` 权限。要查看对象版本的依法保留状态，您必须拥有 `s3:GetObjectLegalHold` 权限。要查看存储桶的默认保留配置，您必须具有 `s3:GetBucketObjectLockConfiguration` 权限。如果您对未启用 S3 对象锁定的存储桶请求对象锁定配置，则 Amazon S3 将返回错误。

## 绕过监管模式
<a name="object-lock-managing-bypass"></a>

如果您具有 `s3:BypassGovernanceRetention` 权限，则在对象未受保护时，您可对在监管模式下锁定的对象版本执行操作。这些操作包括删除对象版本、缩短保留期限，或者通过实施参数为空的新 `PutObjectRetention` 请求来删除对象锁定保留期限。

要绕过监管模式，您必须在请求中明确指明您要绕过此模式。为此，在 `PutObjectRetention` API 操作请求中包含 `x-amz-bypass-governance-retention:true` 标头，或将等效参数用于通过 AWS CLI 或 AWS SDK 发出的请求。如果您具有 `s3:BypassGovernanceRetention` 权限，则 S3 控制台会自动将此标头应用于通过 S3 控制台发出的请求。

**注意**  
绕过监管模式不会影响对象版本的依法保留状态。如果某个对象版本已启用依法保留，则依法保留将保持有效，并可阻止覆盖或删除该对象版本的请求。

## 将对象锁定与 S3 复制结合使用
<a name="object-lock-managing-replication"></a>

您可以将对象锁定与 S3 复制结合使用，以便跨 S3 存储桶，对锁定对象及其保留元数据启用自动异步复制。这意味着，对于复制的对象，Amazon S3 采用源存储桶的对象锁定配置。换句话说，如果源存储桶已启用对象锁定，则目标存储桶也必须启用对象锁定。如果将对象直接上传到目标存储桶（在 S3 复制之外），它将使用目标存储桶上设置的对象锁定。如果您使用复制功能，则*源存储桶*中的对象会被复制到*目标存储桶*。

要在启用了对象锁定的存储桶上设置复制功能，您可以使用 S3 控制台、AWS CLI、Amazon S3 REST API 或 AWS SDK。

**注意**  
要将对象锁定与复制功能结合使用，您必须在用于设置复制的 AWS Identity and Access Management（IAM）角色中，授予对源 S3 存储桶的两项额外的权限。这两项额外的权限是 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。如果角色已有 `s3:Get*` 权限声明，则该声明已满足要求。有关更多信息，请参阅 [为实时复制设置权限](setting-repl-config-perm-overview.md)。  
有关 S3 复制的一般信息，请参阅[在区域内和跨区域复制对象](replication.md)。  
有关设置 S3 复制的示例，请参阅[配置实时复制的示例](replication-example-walkthroughs.md)。

## 将对象锁定与加密结合使用
<a name="object-lock-managing-encryption"></a>

默认情况下，Amazon S3 会对所有新对象进行加密。您可以对加密的对象使用对象锁定。有关更多信息，请参阅 [利用加密来保护数据](UsingEncryption.md)。

虽然对象锁定有助于防止删除或覆盖 Amazon S3 对象，但并不能防止加密密钥的访问权限丢失，也不能防止加密密钥遭删除。例如，如果您使用 AWS KMS 服务器端加密为对象加密，而 AWS KMS 密钥被删除，则对象可能会变得无法读取。

## 将对象锁定与 Amazon S3 清单结合使用
<a name="object-lock-inv-report"></a>

您可以配置 Amazon S3 清单，以便按预定的计划创建 S3 存储桶中对象的列表。对于您的对象，您可以将 Amazon S3 清单配置为包含以下对象锁定元数据：
+ 保留截止日
+ 保留模式
+ 依法保留状态

有关更多信息，请参阅 [使用 S3 清单对数据进行编目和分析](storage-inventory.md)。

## 使用对象锁定管理 S3 生命周期策略
<a name="object-lock-managing-lifecycle"></a>

对象生命周期管理配置将继续正常应用于受保护的对象，包括实施删除标记。但是，S3 生命周期过期策略无法删除对象的锁定版本。无论对象位于哪个存储类，以及在存储类之间的整个 S3 生命周期转换过程中，都将保持对象锁定。

有关管理对象生命周期的更多信息，请参阅[管理对象的生命周期](object-lifecycle-mgmt.md)。

## 使用对象锁定管理删除标记
<a name="object-lock-managing-delete-markers"></a>

尽管您无法删除受保护的对象版本，但您仍可为该对象创建删除标记。对对象实施删除标记不会删除对象或它的对象版本。但会使 Amazon S3 的行为方式在最大程度上与对象被删除时相似。有关更多信息，请参阅 [使用删除标记](DeleteMarker.md)。

**注意**  
无论基础对象中实施任何保留期限或依法保留，删除标记均不受 WORM 保护。

## 将 S3 Storage Lens 存储分析功能与对象锁定结合
<a name="object-lock-storage-lens"></a>

要查看启用对象锁定的存储字节数和对象计数的指标，您可以使用 Amazon S3 Storage Lens 存储统计管理工具。S3 Storage Lens 存储统计管理工具是一项云存储分析功能，您可以使用它在整个组织范围内了解对象存储的使用情况和活动。

有关更多信息，请参阅 [使用 S3 Storage Lens 存储统计管理工具保护您的数据](storage-lens-data-protection.md)。

要获得指标的完整列表，请参阅 [Amazon S3 Storage Lens 存储统计管理工具指标词汇表](storage_lens_metrics_glossary.md)。

## 将对象上传到启用了对象锁定的桶
<a name="object-lock-put-object"></a>

如果使用对象锁定为某个对象配置了保留期，则任何上传该对象的请求都需要 `Content-MD5` 或 `x-amz-sdk-checksum-algorithm` 标头。这些标头是在上传过程中验证对象完整性的一种方式。

使用 Amazon S3 控制台上传对象时，S3 会自动添加 `Content-MD5` 标头。可以选择通过控制台指定额外的校验和函数和校验和值作为 `x-amz-sdk-checksum-algorithm` 标头。如果您使用 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) API，则必须指定 `Content-MD5` 标头、`x-amz-sdk-checksum-algorithm` 标头或两者来配置对象锁定保留期。

有关更多信息，请参阅 [在 Amazon S3 中检查对象完整性](checking-object-integrity.md)。

## 配置事件和通知
<a name="object-lock-managing-events"></a>

您可以使用 Amazon S3 事件通知，通过 AWS CloudTrail 跟踪在对象锁定配置及数据上进行的访问和更改。有关 CloudTrail 的信息，请参阅《AWS CloudTrail 用户指南》**中的[什么是 AWS CloudTrail？](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)

您还可以使用 Amazon CloudWatch 根据此数据生成警报。有关 CloudWatch 的信息，请参阅《Amazon CloudWatch 用户指南》**中的[什么是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)

## 使用存储桶策略为保留期限设置限制
<a name="object-lock-managing-retention-limits"></a>

您可以使用存储桶策略为存储桶设置允许的最小和最大保留期限。最长保留周期为 100 年。

以下示例显示一个存储桶策略，它使用 `s3:object-lock-remaining-retention-days` 条件键将最长保留期限设置为 10 天。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "SetRetentionLimits",
    "Statement": [
        {
            "Sid": "SetRetentionPeriod",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:PutObjectRetention"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "NumericGreaterThan": {
                    "s3:object-lock-remaining-retention-days": "10"
                }
            }
        }
    ]
}
```

------

**注意**  
如果您的存储桶是复制配置的目标存储桶，则对于通过使用复制功能创建的对象副本，您可以设置允许的最小和最大保留期限。为此，您必须在存储桶策略中允许 `s3:ReplicateObject` 操作。有关复制权限的更多信息，请参阅[为实时复制设置权限](setting-repl-config-perm-overview.md)。

有关存储桶的更多信息，请参阅以下主题：
+ 《Service Authorization Reference》**中的 [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

  有关按 S3 资源类型对 S3 API 操作的权限的更多信息，请参阅 [Amazon S3 API 操作所需的权限](using-with-s3-policy-actions.md)。
+ [对象操作](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects)
+ [使用条件键的存储桶策略示例](amazon-s3-policy-keys.md)