指定 Amazon S3 加密
创建对象时,您可以指定使用具有 Amazon S3 托管加密密钥的服务器端加密来加密您的数据。当您要上传新对象或复制现有对象时,也是这种情况。这种加密称为 SSE-S3。
您可以使用 S3 控制台、REST API、Amazon 软件开发工具包和 Amazon CLI 指定 SSE-S3。有关更多信息,请参阅以下主题。
有关如何复制未加密对象的示例,请参阅 复制对象。
本主题介绍如何使用 Amazon Web Services Management Console设置或更改对象的加密类型。使用控制台复制对象时,控制台将按原样复制对象。如果源被加密,则目标对象也会被加密。控制台还允许您添加或更改对象的加密。
如果更改对象的加密,则会创建一个新对象来替换旧对象。如果启用 S3 版本控制,则会创建对象的新版本,而现有对象将变为旧版本。更改属性的角色也会成为新对象或(对象版本)的拥有者。
添加或更改对象的加密
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在 Bucket(存储桶) 列表中,请选择包含对象的存储桶的名称。
-
在 Objects(对象) 列表中,请选择要为其添加或更改加密的对象的名称。
Object overview(对象概述)随即打开,其中显示对象的属性。
-
在 Server-side encryption settings (服务器端加密设置) 下,请选择 Edit (编辑)。
Edit server-side encryption (编辑服务器端加密) 页面随即打开。
-
要为对象启用服务器端加密,请在 Server-side encryption (服务器端加密) 下选择 Enable (启用)。
-
要使用 Amazon S3 托管密钥启用服务器端加密,请在 Encryption key type (加密密钥类型) 下,请选择 Amazon S3 key (SSE-S3) (Amazon S3 密钥 (SSE-S3))。
有关使用 Amazon S3 服务器端加密对数据进行加密的更多信息,请参阅 使用具有 Amazon S3 托管式加密密钥的服务器端加密(SSE-S3)。
-
选择保存更改。
此操作将加密应用于所有指定的对象。加密文件夹时,请等待保存操作完成,然后再将新对象添加到文件夹。
创建对象时(即,上传新对象或复制现有对象时),您可以通过为请求添加 x-amz-server-side-encryption
标头来指定您是否希望 Amazon S3 加密您的数据。将标头的值设置为 Amazon S3 支持的加密算法 AES256
。通过返回响应标头 x-amz-server-side-encryption
,Amazon S3 确认已使用服务器端加密存储了您的数据元。
以下 REST 上传 API 接受 x-amz-server-side-encryption
请求标题。
使用分段上传 API 上传大型对象时,您可以通过为启动分段上传请求添加 x-amz-server-side-encryption
标头来指定服务器端加密。复制现有对象时,不论源对象是否已经加密,都不会加密目标对象,除非您显式请求服务器端加密。
使用服务器端加密存储对象后,以下 REST API 的响应标头将返回 x-amz-server-side-encryption
标头。
如果对象使用 SSE-S3,则不应对 GET
请求和 HEAD
请求发送加密请求标头,否则将出现 HTTP 400 BadRequest 错误。
使用 Amazon 软件开发工具包时,您可以请求 Amazon S3 使用 Amazon S3 托管式加密密钥。这部分提供了以多种语言使用 Amazon 软件开发工具包的示例。有关其他 SDK 的信息,请转到示例代码和库
要在使用 Amazon CLI 上载对象时指定 SSE-S3,请使用以下示例。
aws s3api put-object --bucket
--key
DOC-EXAMPLE-BUCKET1
object-key-name
--server-side-encryption AES256 --bodyfile path
有关更多信息,请参阅 Amazon CLI 参考中的 put-object
有关使用 Amazon CloudFormation 设置加密的示例,请参阅 Amazon CloudFormation 用户指南中的使用默认加密创建存储桶和通过 Amazon KMS 服务器端加密使用 S3 存储桶密钥创建存储桶。