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

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

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

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

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

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

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

加密现有对象

要加密现有 Amazon S3 对象,可以使用 Amazon S3 分批操作。您为 S3 批处理操作提供了要操作的对象列表,而批处理操作调用相应的 API 来执行指定的操作。您可以使用分批操作复制操作复制现有的未加密对象,并将其作为加密对象写回同一存储桶。单个分批操作作业可对数十亿个对象执行指定操作。有关更多信息,请参阅 对 Amazon S3 对象执行大规模分批操作Amazon 存储博客的博客文章:使用 Amazon S3 分批操作加密对象

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

注意

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

使用加密进行跨账户操作

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

  • 当未在请求时间提供 Amazon KMS key Amazon Resource Name (ARN) 或别名,也未通过存储桶的原定设置加密配置提供它们时,使用 Amazon 托管式密钥(aws/s3)。

  • 如果您使用您的 KMS密钥所在的相同 Amazon Web Services 账户 账户中的 Amazon Identity and Access Management (IAM) 委托人上传或访问 S3 对象,则可以使用 Amazon 托管密钥(aws/s3)。

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

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

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

有关何时使用客户托管的密钥和 Amazon 托管的 KMS 密钥的更多信息,请参阅我是否应使用 Amazon 托管密钥或客户托管密钥加密 Amazon S3 上的对象?

将默认加密用于复制

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

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

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

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

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

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

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

有关使用 S3 存储桶密钥的更多信息,请参阅使用 Amazon S3 存储桶密钥