Amazon Simple Storage Service (Amazon S3) 如何使用 Amazon S3)Amazon KMS - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Simple Storage Service (Amazon S3) 如何使用 Amazon S3)Amazon KMS

本主题将讨论如何使用保护 Amazon S3 数据中心内的静态数据Amazon KMS。您可以将客户端加密在其中,您可以在Amazon KMS将其发送到 Amazon S3 之前,客户主密钥 (CMK)。或者,您也可以将服务器端加密其中 Amazon S3 会通过Amazon KMSCMK

服务器端加密:使用 SSE-KMS

您可以使用三种不同的服务器端加密模式 (服务器端加密) 来保护 Amazon S3 中的静态数据:SSE-S3、SSE-C 或 SSE-KMS。

本主题的其余部分将讨论如何使用具有 Amazon KMS 托管密钥的服务器端加密 (SSE-KMS) 来保护数据。

您可以使用 Amazon S3 控制台或 API 来请求加密和选择 CMK。在控制台中,选中相应的框以执行加密,并从列表中选择 CMK。对于 Amazon S3 API,通过在 GET 或 PUT 请求中设置相应标头,指定加密并选择您的 CMK。有关更多信息,请参阅 。使用服务器端加密和保护数据Amazon KMS-托管密钥 (SSE-KMS)。

重要

Amazon S3 仅支持对称 CMK。您无法将非对称 CMK对 Amazon S3 中的数据进行加密。要获取确定 CMK 是对称还是非对称的帮助,请参阅识别对称 CMK 和非对称 CMK

您可以选择一个客户托管 CMKAmazon托管 CMK为您的账户中的 Amazon S3。如果您选择使用标准功能加密您的数据,Amazon KMS和 Amazon S3 将执行以下操作:

  • Amazon S3 请求明文数据密钥以及使用指定 CMK 加密的密钥的副本。

  • Amazon KMS生成数据密钥,使用 CMK 为其进行加密,然后将明文数据密钥和加密的数据密钥发送到 Amazon S3。

  • Amazon S3 使用数据密钥加密数据,并在使用后尽快从内存中删除该明文密钥。

  • Amazon S3 将加密的数据密钥作为元数据与加密数据一起存储。

Amazon S3 和Amazon KMS当请求解密数据时,将执行以下操作。

  • Amazon S3 向发送加密的数据密钥Amazon KMS。

  • Amazon KMS使用同一 CMK 解密密密钥,然后将明文数据密钥返回到 Amazon S3。

  • Amazon S3 解密密密文,并会尽快从内存中删除该明文数据密钥。

如果您使用可选的S3 存储桶密钥功能时,将使用以下步骤。S3 存储桶密钥功能旨在减少对Amazon KMS当访问加密存储桶中的对象时。

  • Amazon S3 请求一个数据密钥Amazon KMS使用存储桶的 CMK。Amazon KMS生成数据密钥,并返回数据密钥的明文和加密副本。

  • Amazon S3 将此数据密钥用作存储桶密钥。Amazon S3 创建唯一的数据密钥Amazon KMS,并在存储桶密钥下对这些数据密钥进行加密。Amazon S3 在有时间限制的时间段内使用每个存储桶密钥。

有关使用 S3 存储桶密钥的更多信息,请参阅使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本《Amazon Simple Storage Service 开发人员指南》中的。

使用 Amazon S3 加密客户端

您可以将Amazon S3 加密客户端中的Amazon您自己应用程序中的开发工具包来加密对象,并将它们上传到 Amazon S3。此方法允许您在本地加密数据,在将其传递给 Amazon S3 服务时确保安全。Amazon S3 服务接收您的加密数据,并且不会影响对其进行加密或解密。

Amazon S3 加密客户端使用信封加密来加密对象。当您将数据传递给客户端时,客户端将调用 Amazon KMS 作为您执行的加密调用的一部分。Amazon KMS 会验证您是否有权使用指定的客户主密钥 (CMK),如果有权使用,将返回一个新的明文数据密钥以及在 CMK 下加密的数据密钥。Amazon S3 加密客户端使用明文密钥加密数据,然后将密钥从内存中删除。加密的数据密钥会发送到 Amazon S3,与加密数据一起存储。

加密上下文

与 Amazon KMS 集成的每项服务在请求数据密钥、加密和解密时会指定一个加密上下文。加密上下文是其他已经过身份验证的数据(AAD) 指出Amazon KMS用于检查数据完整性。

当为加密操作指定加密上下文时,Amazon S3 会为解密操作指定同一加密上下文。否则,解密将失败。

对于 Amazon S3,加密上下文密钥始终为aws:s3:arn

使用 SSE-KMS 或 Amazon S3 加密客户端进行加密时,加密上下文值是存储桶路径。在requestParameters字段 CloudTrail,加密上下文与以下示例类似。

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name" }

当您将 SSE-KMS 与可选的 S3 存储桶密钥功能一起使用时,加密上下文值是存储桶的 ARN。

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name" }