指定具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)
默认情况下,所有 Amazon S3 存储桶都配置了加密,所有上传到 S3 存储桶的新对象都会自动静态加密。具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)是 Amazon S3 中每个存储桶的默认加密配置。要使用其他类型的加密,您可以指定要在 S3 PUT
请求中使用的服务器端加密类型,也可以在目标存储桶中设置默认加密配置。
如果您想在 PUT
请求中指定不同的加密类型,则可以使用具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)、具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)或具有客户提供的密钥的服务器端加密(SSE-C)。如果您想在目标存储桶中设置不同的默认加密配置,则可以使用 SSE-KMS 或 DSSE-KMS。
您可以使用 S3 控制台、REST API、AWS SDK 和 AWS Command Line Interface(AWS CLI)指定 SSE-S3。有关更多信息,请参阅 为 Amazon S3 存储桶设置默认服务器端加密行为。
本主题介绍如何使用 AWS Management Console设置或更改对象的加密类型。使用控制台复制对象时,Amazon S3 将按原样复制对象。这意味着,如果对源对象加密,则也会对目标对象加密。可以使用控制台添加或更改对象的加密。
注意
-
如果对象小于 5 GB,则可以更改对象的加密。如果对象大于 5GB,必须使用 AWS CLI 或 AWS SDK 来更改对象的加密。
-
有关更改对象的加密所需的其它权限的列表,请参阅 Amazon S3 API 操作所需的权限。有关授予此权限的示例策略,请参阅Amazon S3 基于身份的策略示例。
如果更改对象的加密,则会创建一个新对象来替换旧对象。如果启用 S3 版本控制,则会创建对象的新版本,而现有对象将变为旧版本。更改属性的角色也会成为新对象(或对象版本)的拥有者。
更改对象的加密
登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在导航窗格中,选择存储桶,然后选择通用存储桶选项卡。导航到包含要更改的对象的 Amazon S3 存储桶或文件夹。
-
选中要更改的对象所对应的复选框。
-
在操作菜单上,从显示的选项列表中选择编辑服务器端加密。
滚动到服务器端加密部分。
在加密设置下,选择使用默认加密的存储桶设置或覆盖默认加密的存储桶设置。
-
如果您选择覆盖默认加密的存储桶设置,请配置以下加密设置。
-
在加密类型下,选择具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)。SSE-S3 使用最强的数据块密码之一 [即 256 位高级加密标准(AES-256)] 来加密每个对象。有关更多信息,请参阅 使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)。
-
-
在其它复制设置下,选择是要复制源设置、请勿指定设置还是指定设置。复制源设置是默认选项。如果您只想复制不带源设置属性的对象,请选择请勿指定设置。选择指定设置,来指定存储类、ACL、对象标签、元数据、服务器端加密和其它校验和的设置。
-
选择 Save Changes(保存更改)。
注意
此操作将加密应用于所有指定的对象。加密文件夹时,请等待保存操作完成,然后再将新对象添加到文件夹。
创建对象时(即,上传新对象或复制现有对象时),您可以通过向请求添加 x-amz-server-side-encryption
标头来指定您是否希望 Amazon S3 使用 Amazon S3 托管式密钥(SSE-S3)加密您的数据。将标头的值设置为 Amazon S3 支持的加密算法 AES256
。Amazon S3 通过返回响应标头 x-amz-server-side-encryption
来确认已使用 SSE-S3 存储对象。
以下 REST 上传 API 操作接受 x-amz-server-side-encryption
请求标头。
使用分段上传 API 操作上传大型对象时,您可以通过为启动分段上传请求添加 x-amz-server-side-encryption
标头来指定服务器端加密。复制现有对象时,不论源对象是否已经加密,都不会加密目标对象,除非您显式请求服务器端加密。
使用 SSE-S3 加密存储对象后,以下 REST API 操作的响应标头将返回 x-amz-server-side-encryption
标头。
注意
如果您的对象使用 SSE-S3,请不要发送 GET
请求和 HEAD
请求的加密请求标头,否则会收到 HTTP 状态代码 400(错误请求)错误。
使用 AWS SDK 时,您可以请求 Amazon S3 使用具有 Amazon S3 托管式加密密钥的服务器端加密(SSE-S3)。这部分提供了以多种语言使用 AWS SDK 的示例。有关其他 SDK 的信息,请转到示例代码和库
要在使用 AWS CLI 上传对象时指定 SSE-S3,请使用以下示例。
aws s3api put-object --bucket
--key
amzn-s3-demo-bucket1
object-key-name
--server-side-encryption AES256 --bodyfile path
有关更多信息,请参阅 AWS CLI 参考中的 put-object
有关使用 AWS CloudFormation 设置加密的示例,请参阅《AWS CloudFormation 用户指南》的 AWS::S3::Bucket ServerSideEncryptionRule
主题中的使用默认加密创建存储桶和通过 AWS KMS 服务器端加密使用 S3 存储桶密钥创建存储桶示例。