使用服务器端加密保护数据
服务器端加密是指由接收数据的应用程序或服务在目标位置对数据进行加密。Amazon S3 在将您的数据写入数据中心内的磁盘时会在对象级别加密这些数据,并在您访问这些数据时解密这些数据。只要您验证了您的请求并且拥有访问权限,您访问加密和未加密对象的方式就没有区别。例如,如果您使用预签名的
URL 来共享您的对象,那么对于加密和解密对象,该 URL 的工作方式是相同的。此外,在您列出存储桶中的对象时,列表 API 会返回所有对象的列表(无论对象是否加密)。
注意
您不能对同一个对象应用不同类型的服务器端加密。
您有三个互斥选项,具体取决于您选择如何管理加密密钥:
具有 Amazon S3 托管密钥的服务器端加密 (SSE-S3)
当您使用具有 Amazon S3 托管密钥的服务器端加密 (SSE-S3) 时,每个对象均使用唯一密钥加密。作为额外的保护,它将使用定期轮换的主密钥加密密钥本身。Amazon
S3 服务器端加密使用可用的最强数据块密码之一、256 位高级加密标准 (AES-256) 来加密您的数据。有关更多信息,请参阅 使用具有 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据。
在 AWS Key Management Service 中存储客户主密钥 (CMK) 的服务器端加密 (SSE-KMS)
在 AWS Key Management Service 中存储客户主密钥 (CMK) 的服务器端加密 (SSE-KMS) 与 SSE-S3 类似,使用该服务具有一些额外的好处,但也要额外收取费用。使用
CMK 需要单独的权限,该密钥可进一步防止未经授权地访问 Amazon S3 中的对象。SSE-KMS 还向您提供审核跟踪,显示您的 CMK 的使用时间和使用者。此外,您还可以创建和管理客户托管
CMK,或者使用您、服务和区域独有的 AWS 托管 CMK。有关更多信息,请参阅 使用具有 AWS Key Management Service 中存储的 CMK 的服务器端加密 (SSE-KMS) 保护数据。
具有客户提供密钥的服务器端加密 (SSE-C)
使用具有客户提供密钥的服务器端加密 (SSE-C) 时,您管理加密密钥,而 Amazon S3 管理加密(在它对磁盘进行写入时)和解密(在您访问您的对象时)。有关更多信息,请参阅
通过使用客户提供的加密密钥的服务器端加密 (SSE-C) 保护数据。