为 Amazon S3 存储桶设置默认服务器端加密行为 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

欢迎使用新的 Amazon S3 用户指南! Amazon S3 用户指南结合了以下三个已停用的指南中的信息和说明:Amazon S3 开发人员指南Amazon S3 控制台用户指南Amazon S3 入门指南

为 Amazon S3 存储桶设置默认服务器端加密行为

使用 Amazon S3 默认加密,您可以对 S3 存储桶设置默认加密行为,以便在存储桶中存储所有对象时对新对象进行加密。这些对象使用具有 Amazon S3 托管密钥 (SSE-S3) 或 AWS Key Management Service (AWS KMS) (SSE-KMS) 中存储的客户主密钥 (CMK) 的服务器端加密进行加密。

当您将存储桶配置为使用 SSE-KMS 的默认加密时,您还可以启用 S3 存储桶密钥以减少从 Amazon S3 到 AWS Key Management Service (AWS KMS) 的请求流量并降低加密成本。有关更多信息,请参阅 使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本

在使用服务器端加密时,Amazon S3 在将对象保存到其磁盘上之前对其进行加密,并在下载对象时对其进行解密。有关使用服务器端加密和加密密钥管理来保护数据的更多信息,请参阅使用服务器端加密保护数据

有关默认加密所需的权限的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutBucketEncryption

要在存储桶上设置默认加密,您可以使用 Amazon S3 控制台、AWS CLI、AWS 开发工具包或 REST API。有关更多信息,请参阅 启用 Amazon S3 默认存储桶加密

加密现有对象

要通过单个请求加密现有 Amazon S3 对象,可以使用 Amazon S3 批处理操作。您为 S3 批处理操作提供了要操作的对象列表,而批处理操作调用相应的 API 来执行指定的操作。您可以使用复制操作复制现有的未加密对象,并将新的加密对象写入同一存储桶。单个批量作业可对包含 EB 级数据的数十亿个对象执行指定操作。有关更多信息,请参阅 执行 S3 批处理操作

还可以使用复制对象 API 对现有对象进行加密。有关更多信息,请参阅 AWS 存储博客的博客文章使用 AWS CLI 加密现有 Amazon S3 对象

注意

使用 SSE-KMS 进行默认存储桶加密的 Amazon S3 存储桶不能用作 使用服务器访问日志记录来记录请求 的目标存储桶。对于服务器访问日志目标存储桶,仅支持 SSE-S3 默认加密。

使用加密进行跨账户操作

在对跨账户操作使用加密时,请注意以下事项:

  • 当未在请求时提供 CMK Amazon 资源名称 (ARN) 或别名,也未通过存储桶的默认加密配置提供它们时,使用 AWS 托管 CMK (aws/s3)。

  • 如果您上传或访问 S3 对象时将使用的 AWS Identity and Access Management (IAM) 委托人与该 CMK 来自同一 AWS 账户,则可以使用 AWS 托管 CMK (aws/S3)。

  • 如果您希望授予对 S3 对象的跨账户访问权限,请使用客户托管 CMK。您可以配置客户托管 CMK 的策略,以便允许从其他账户进行访问。

  • 如果指定您自己的 CMK,则应使用完全限定的 CMK 密钥 ARN。使用 CMK 别名时,请注意 AWS KMS 将解析请求者账户中的密钥。这可能导致使用属于请求者而不是存储桶管理员的 CMK 来加密数据。

  • 您必须指定您(请求者)已被授予 Encrypt 权限的密钥。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的允许密钥用户使用 CMK 进行加密操作

有关何时使用客户托管 CMK 和 AWS 托管 CMK 的更多信息,请参阅我是否应该使用 AWS KMS 托管密钥还是自定义 AWS KMS 密钥来加密 Amazon S3 上的对象?

将默认加密用于复制

在为复制目标存储桶启用默认加密后,将应用以下加密行为:

  • 如果未对源存储桶中的对象进行加密,则将使用目标存储桶的默认加密设置对目标存储桶中的副本对象进行加密。这将导致源对象的 ETag 与副本对象的 ETag 不同。您必须更新使用 ETag 的应用程序以应对这种差异。

  • 如果使用 SSE-S3 或 SSE-KMS 对源存储桶中的对象进行加密,则目标存储桶中的副本对象将使用与源对象加密相同的加密。不会使用目标存储桶的默认加密设置。

有关使用 SSE-KMS 进行默认加密的更多信息,请参阅复制加密对象

将 Amazon S3 存储桶密钥用于默认加密

将存储桶配置为对新对象使用 SSE-KMS 的默认加密时,您还可以配置 S3 存储桶密钥。S3 存储桶密钥通过减少从 Amazon S3 到 AWS KMS 的事务数量,从而降低了使用 AWS Key Management Service (SSE-KMS) 进行服务器端加密的成本。

当您将存储桶配置为使用 S3 存储桶密钥对新对象进行 SSE-KMS 加密时,AWS KMS 会生成存储桶级别密钥,该密钥用于为存储桶中的对象创建唯一的数据密钥。此存储桶密钥在 Amazon S3 内限时使用,从而减少了 Amazon S3 向 AWS KMS 发出请求,以完成加密操作的需求。

有关使用 S3 存储桶密钥的更多信息,请参阅使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本