将存储桶配置为将 S3 存储桶密钥与 SSE-KMS 结合使用于新对象
使用 SSE-KMS 配置服务器端加密时,您可以将存储桶配置为使用 S3 存储桶密钥对新对象进行 SSE-KMS 加密。S3 存储桶密钥可减少从 Amazon S3 到 Amazon Key Management Service (Amazon KMS) 的请求流量,从而降低了 SSE-KMS 的成本。有关更多信息,请参阅使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本。
您可以使用 Amazon S3 控制台、REST API、Amazon 软件开发工具包、Amazon CLI 或 Amazon CloudFormation 将存储桶配置为使用 S3 存储桶密钥对新对象进行 SSE-KMS 加密。如果要为现有对象启用或禁用 S3 存储桶密钥,则可以使用 COPY 操作。有关更多信息,请参阅 使用分批操作、REST API、Amazon 软件开发工具包或 Amazon CLI 在对象级别配置 S3 存储桶密钥 和 使用 S3 分批操作加密具有 S3 Bucket 密钥的对象。
当为源存储桶或目标存储桶启用 S3 存储桶密钥时,加密上下文将是存储桶 Amazon Resource Name (ARN),而不是对象 ARN,例如 arn:aws:s3:::
。您需要更新 IAM policy 才能将存储桶 ARN 用于加密上下文。有关更多信息,请参阅。bucket_ARN
以下示例说明了 S3 存储桶密钥如何与复制结合使用。有关更多信息,请参阅复制使用服务器端加密(SSE-C、SSE-S3、SSE-KMS)创建的对象。
先决条件:
在将存储桶配置为使用 S3 存储桶密钥之前,请查看 启用 S3 存储桶密钥之前需要注意的更改。
主题
在 S3 控制台中,您可以为新存储桶或现有存储桶启用或禁用 S3 存储桶密钥。S3 控制台中的对象从存储桶配置中继承其 S3 存储桶密钥设置。当您为存储桶启用 S3 存储桶密钥时,您上传到存储桶的新对象将利用 S3 存储桶密钥使用 Amazon KMS 进行服务器端加密。
在启用了 S3 存储桶密钥的存储桶中上传,复制或修改对象
如果您在启用了 S3 存储桶密钥的存储桶中上传、修改或复制对象,则该对象的 S3 存储桶密钥设置可能会更新以与存储桶配置保持一致。
如果对象已启用 S3 存储桶密钥,则在复制或修改对象时,该对象的 S3 存储桶密钥设置不会更改。但是,如果您修改或复制未启用 S3 存储桶密钥的对象,并且目标存储桶具有 S3 存储桶密钥配置,则该对象将继承目标存储桶的 S3 存储桶密钥设置。例如,如果源对象尚未启用 S3 存储桶密钥,但目标存储桶已启用 S3 存储桶密钥,则将为该对象启用 S3 存储桶密钥。
在创建新存储桶时启用 S3 存储桶密钥
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
请选择 Create bucket (创建存储桶)。
-
输入存储桶名称,然后选择您的 Amazon Web Services 区域。
-
在 Default encryption (默认加密) 下,请选择 Enable (启用)。
-
在 Encryption type (加密类型) 下,请选择 Amazon Key Management Service key (SSE-KMS) (Amazon Key Management Service 密钥(SSE-KMS))。
-
请选择一个 Amazon KMS 密钥:
-
请选择 Amazon managed key (aws/s3) (Amazon 托管密钥 [aws/s3])。
-
请选择 Customer managed key(客户托管式密钥),然后选择与存储桶位于同一区域的对称客户托管式密钥。
-
-
在 Bucket Key (存储桶密钥) 下,请选择 Enable (启用)。
-
请选择 Create bucket (创建存储桶)。
Amazon S3 创建启用了 S3 存储桶密钥的存储桶。您上传到存储桶的新对象将使用 S3 存储桶密钥。要禁用 S3 存储桶密钥,请按照前面的步骤操作,然后选择 disable (禁用)。
为现有存储桶启用 S3 存储桶密钥
通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 在 Buckets (存储桶) 列表中,请选择要为其启用 S3 存储桶密钥的存储桶。
-
选择 Properties (属性)。
-
在 Default encryption (默认加密) 下,请选择 Edit (编辑)。
-
在 Default encryption (默认加密) 下,请选择 Enable (启用)。
-
在 Encryption type (加密类型) 下,请选择 Amazon Key Management Service key (SSE-KMS) (Amazon Key Management Service 密钥(SSE-KMS))。
-
请选择一个 Amazon KMS 密钥:
-
请选择 Amazon managed key (aws/s3) (Amazon 托管密钥 [aws/s3])。
-
请选择 Customer managed key(客户托管式密钥),然后选择与存储桶位于同一区域的对称客户托管式密钥。
-
-
在 Bucket Key (存储桶密钥) 下,请选择 Enable (启用)。
-
选择保存更改。
Amazon S3 为添加到存储桶中的新对象启用 S3 存储桶密钥。现有对象未使用 S3 存储桶密钥。要禁用 S3 存储桶密钥,请按照前面的步骤操作,然后选择 Disable (禁用)。
您可以使用 PutBucketEncryption 为存储桶启用或禁用 S3 存储桶密钥。要使用 PutBucketEncryption
配置 S3 存储桶密钥,请指定 ServerSideEncryptionRule,其中包括使用 Amazon KMS key 进行服务器端加密的默认加密。您还可以通过客户托管密钥的 KMS 密钥 ID 来选择使用客户托管密钥。
有关更多信息和示例语法,请参阅 putbucKetenCryption 。
以下示例使用 Amazon SDK for Java,通过 SSE-KMS 和 S3 存储桶密钥实现默认存储桶加密。
以下示例使用 Amazon CLI,通过 SSE-KMS 和 S3 存储桶密钥实现默认存储桶加密。
aws s3api put-bucket-encryption --bucket <bucket-name> --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "<KMS-Key-ARN>" }, "BucketKeyEnabled": true } ] }'
有关使用 Amazon CloudFormation 配置 S3 存储桶密钥的更多信息,请参阅 Amazon CloudFormation 用户指南中的 AWS::S3::Bucket ServerSideEncryptionRule。