

# 数据保护和加密
<a name="s3-express-data-protection"></a>

 有关如何为目录存储桶配置加密的更多信息，请参阅以下主题。

**Topics**
+ [服务器端加密](#s3-express-ecnryption)
+ [设置和监控目录存储桶的默认加密](s3-express-bucket-encryption.md)
+ [在目录存储桶中使用具有 AWS KMS 密钥的服务器端加密（SSE-KMS）](s3-express-UsingKMSEncryption.md)
+ [传输中加密](#s3-express-ecnryption-transit)
+ [数据删除](#s3-express-data-deletion)

## 服务器端加密
<a name="s3-express-ecnryption"></a>

默认情况下，所有目录存储桶都配置了加密，所有上传到目录存储桶的新对象都会自动静态加密。具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）是每个目录存储桶的默认加密配置。如果要指定不同的加密类型，则可以通过设置存储桶的默认加密配置，来使用具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）。有关目录存储桶中的 SSE-KMS 的更多信息，请参阅[在目录存储桶中使用具有 AWS KMS 密钥的服务器端加密（SSE-KMS）](s3-express-UsingKMSEncryption.md)。

我们建议存储桶的默认加密使用所需的加密配置，并且不要在 `CreateSession` 请求或 `PUT` 对象请求中覆盖存储桶默认加密。然后，使用所需的加密设置自动对新对象进行加密。有关目录存储桶中加密覆盖行为的更多信息，请参阅 [Specifying server-side encryption with AWS KMS for new object uploads](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

目录存储桶中的 SSE-KMS 与通用存储桶中的 SSE-KMS 在以下几个方面有所不同。
+ 在存储桶的生命周期内，SSE-KMS 配置只能支持每个目录存储桶 1 个 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。[https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`) 不受支持。此外，在为 SSE-KMS 指定客户自主管理型密钥后，无法覆盖存储桶的 SSE-KMS 配置的客户自主管理型密钥。

  可以通过以下方式，确定您为存储桶的 SSE-KMS 配置指定的客户自主管理型密钥：
  + 您发出 `HeadObject` API 操作请求以查找响应中 `x-amz-server-side-encryption-aws-kms-key-id` 的值。

  要对数据使用新的客户自主管理型密钥，我们建议使用新的客户自主管理型密钥将现有对象复制到新的目录存储桶中。
+ 对于除 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 之外的[可用区端点（对象级）API 操作](s3-express-differences.md#s3-express-differences-api-operations)，可以通过 [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 对请求进行身份验证和为请求授权，以实现低延迟。我们建议存储桶的默认加密使用所需的加密配置，并且不要在 `CreateSession` 请求或 `PUT` 对象请求中覆盖存储桶默认加密。然后，使用所需的加密设置自动对新对象进行加密。要使用 SSE-KMS 加密目录存储桶中的新对象，必须将具有 KMS 密钥（特别是 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)）的 SSE-KMS 指定为目录存储桶的默认加密配置。然后，在为可用区端点 API 操作创建会话时，将在会话期间使用 SSE-KMS 和 S3 存储桶密钥自动加密和解密新对象。有关目录存储桶中加密覆盖行为的更多信息，请参阅 [Specifying server-side encryption with AWS KMS for new object uploads](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

  在可用区端点 API 调用中（[CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外），无法覆盖 `CreateSession` 请求中加密设置（`x-amz-server-side-encryption`、`x-amz-server-side-encryption-aws-kms-key-id`、`x-amz-server-side-encryption-context` 和 `x-amz-server-side-encryption-bucket-key-enabled`）的值。无需在可用区端点 API 调用中显式指定这些加密设置值，Amazon S3 将使用 `CreateSession` 请求中的加密设置值来保护目录存储桶中的新对象。
**注意**  
当您使用 AWS CLI 或 AWS SDK 时，对于 `CreateSession`，会话令牌会自动刷新，以避免在会话到期时服务中断。AWS CLI 或 AWS SDK 将存储桶的默认加密配置用于 `CreateSession` 请求。不支持覆盖 `CreateSession` 请求中的加密设置值。此外，在可用区端点 API 调用（[CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外）中，不支持覆盖 `CreateSession` 请求中加密设置的值。
+ 对于 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)，要使用 SSE-KMS 加密目录存储桶中新的对象副本，必须将具有 KMS 密钥（特别是 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)）的 SSE-KMS 指定为目录存储桶的默认加密配置。然后，当您使用 SSE-KMS 为新的对象副本指定服务器端加密设置时，必须确保加密密钥与您为目录存储桶的默认加密配置指定的客户自主管理型密钥相同。对于 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)，要使用 SSE-KMS 加密目录存储桶中新的对象分段副本，必须将具有 KMS 密钥（特别是 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)）的 SSE-KMS 指定为目录存储桶的默认加密配置。无法在 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 请求标头中使用 SSE-KMS 为新的对象分段副本指定服务器端加密设置。此外，您在 [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 请求中提供的加密设置必须与目标存储桶的默认加密配置相匹配。
+ 始终为目录存储桶中的 `GET` 和 `PUT` 操作启用 S3 存储桶密钥，并且不能禁用。当您通过 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[批量操作中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 任务](create-import-job.md)，将 SSE-KMS 加密的对象从通用存储桶复制到目录存储桶、从目录存储桶复制到通用存储桶，或在目录存储桶之间复制时，不支持 S3 存储桶密钥。在这种情况下，每次对 KMS 加密的对象发出复制请求时，Amazon S3 都会调用 AWS KMS。
+ 当您在目录存储桶中指定用于加密的 [AWS KMS customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) 时，请仅使用密钥 ID 或密钥 ARN。不支持 KMS 密钥的密钥别名格式。

目录存储桶不支持具有 AWS Key Management Service（AWS KMS）密钥的双层服务器端加密（DSSE-KMS），也不支持具有客户提供的加密密钥的服务器端加密（SSE-C）。

## 传输中加密
<a name="s3-express-ecnryption-transit"></a>

目录存储桶使用区域和可用区 API 端点。根据您使用的 Amazon S3 API 操作，需要区域端点或可用区端点。您可以通过网关虚拟私有云（VPC）端点访问区域端点和可用区端点。使用网关端点不会发生任何额外费用。要了解有关区域和可用区 API 端点的更多信息，请参阅[目录存储桶的联网](s3-express-networking.md)。

## 数据删除
<a name="s3-express-data-deletion"></a>

您可以使用 Amazon S3 控制台、AWS SDK、AWS Command Line Interface（AWS CLI）或 Amazon S3 REST API，直接从目录存储桶删除一个或多个对象。由于目录存储桶中的所有对象都会产生存储费用，因此建议您删除不再需要的对象。

删除存储在目录存储桶中的对象也会递归地删除所有父目录，前提是在要删除的对象之外，这些父目录不包含其他任何对象。

**注意**  
S3 Express One Zone 不支持多重身份验证（MFA）删除和 S3 版本控制。