启用 Amazon S3 默认存储桶加密 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

启用 Amazon S3 默认存储桶加密

您可以在 Amazon S3 存储桶上设置默认加密行为,以便在存储桶中存储所有对象时对这些对象进行加密。这些对象使用具有 Amazon S3 托管密钥 (SSE-S3) 或 AWS Key Management Service (AWS KMS) 客户主密钥 (CMK) 的服务器端加密进行加密。

使用 AWS KMS 配置默认加密时,您还可以配置 S3 存储桶密钥。有关更多信息,请参阅 使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本

默认加密适用于所有现有的和新的 Amazon S3 存储桶。如果没有默认加密,要对存储在存储桶中的所有对象进行加密,您必须包括加密信息与每个对象存储请求。您还必须设置 Amazon S3 存储桶策略以拒绝不包含加密信息的存储请求。

对 S3 存储桶使用默认加密不会产生额外的费用。请求配置默认加密功能会产生标准 Amazon S3 请求费用。有关定价的信息,请参阅 Amazon S3 定价。对于 SSE-KMS CMK 存储,将会产生 AWS KMS 费用,这些费用在 AWS KMS 定价中列出。

您可以使用 Amazon S3 控制台、AWS 开发工具包、Amazon S3 REST API 和 AWS 命令行界面 (AWS CLI) 为 S3 存储桶启用 Amazon S3 默认加密。

对 Amazon S3 存储桶启用默认加密

  1. 登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. Buckets (存储桶) 列表中,选择您想要的存储桶的名称。

  3. 选择属性

  4. Default encryption (默认加密) 下,选择 Edit (编辑)

  5. 要启用或禁用服务器端加密,请选择 Enable (启用)Disable (禁用)

  6. 要使用 Amazon S3 托管密钥启用服务器端加密,请在 Encryption key type (加密密钥类型) 下,选择 Amazon S3 key (SSE-S3) (Amazon S3 密钥 (SSE-S3))

    有关使用 Amazon S3 服务器端加密对数据进行加密的更多信息,请参阅使用具有 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据

  7. 要使用 AWS KMS CMK 启用服务器端加密,请执行以下步骤:

    1. Encryption key type (加密密钥类型) 下,选择 AWS Key Management Service key (SSE-KMS) (AWS Key Management Service 密钥 (SSE-KMS))

      重要

      如果您将 AWS KMS 选项用于默认加密配置,则您将受到 AWS KMS 的 RPS(每秒请求数)限制。有关 AWS KMS 配额以及如何请求增加配额的更多信息,请参阅配额

    2. AWS KMS key (AWS KMS 密钥) 下,选择以下选项之一:

      • AWS managed key (aws/s3) (AWS 托管密钥 (aws/s3))

      • Choose from your KMS master keys (从您的 KMS 主密钥中选择),然后选择 KMS master key (KMS 主密钥)

      • Enter KMS master key ARN (输入 KMS 主密钥 ARN),然后输入您的 AWS KMS 密钥 ARN。

      重要

      您只能使用在存储桶所在的 AWS 区域中启用的 KMS CMK。当您选择 Choose from your KMS master keys (从您的 KMS 主密钥中选择) 时,S3 控制台每个区域仅列出 100 个 KMS CMK。如果您在同一区域中有超过 100 个 CMK,则只会在 S3 控制台中看到前 100 个 CMK。若要使用控制台中未列出的 KMS CMK,请选择自定义 KMS ARN,然后输入相应的 KMS CMK ARN。

      当您在 Amazon S3 中使用 AWS KMS CMK 进行服务器端加密时,您必须选择对称 CMK。Amazon S3 仅支持对称 CMK,不支持非对称 CMK。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的使用对称和非对称密钥

      有关创建 AWS KMS CMK 的更多信息,请参阅 AWS Key Management Service 开发人员指南中的创建密钥。有关将 AWS KMS 与 Amazon S3 结合使用的更多信息,请参阅使用在 AWS Key Management Service 中存储 CMK 的服务器端加密 (SSE-KMS) 保护数据

  8. 要使用 S3 存储桶密钥,请在 Bucket Key(存储桶密钥)下,选择 Enable(启用)。

    将存储桶配置为使用 SSE-KMS 进行默认加密时,您还可以启用 S3 存储桶密钥。S3 存储桶密钥可减少从 Amazon S3 到 AWS KMS 的请求流量,并降低加密成本。有关更多信息,请参阅 使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本

  9. 选择 Save changes

这些示例说明如何使用 Amazon S3 托管加密 (SSE-S3) 或带 S3 存储桶密钥的 AWS KMS 加密 (SSE-KMS) 来配置默认加密。

有关默认加密的更多信息,请参阅 为 Amazon S3 存储桶设置默认服务器端加密行为。有关使用 AWS CLI 配置默认加密的更多信息,请参阅 put-bucket-encryption

例 – 使用 SSE-S3 进行默认加密

此示例使用 Amazon S3 托管加密配置默认存储桶加密。

aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'

例 – 使用 S3 存储桶密钥通过 SSE-KMS 进行默认加密

此示例使用 S3 存储桶密钥通过 SSE-KMS 配置默认存储桶加密。

aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "KMS-Key-ARN" }, "BucketKeyEnabled": true } ] }'

使用 REST API PUT Bucket 加密操作可启用默认加密并设置要使用的服务器端加密类型(SSE-S3 或 SSE-KMS)。

有关更多信息,请参阅 Amazon Simple Storage Service API 参考中的 PutBucketEncryption

在为存储桶启用默认加密后,将会应用以下加密行为:

  • 在启用默认加密之前,存储桶中已存在的对象的加密没有变化。

  • 在启用默认加密后上传对象时:

    • 如果您的 PUT 请求标头不包含加密信息,则 Amazon S3 将使用存储桶的默认加密设置来加密对象。

    • 如果您的 PUT 请求标头包含加密信息,则 Amazon S3 将使用 PUT 请求中的加密信息加密对象,然后再将对象存储在 Amazon S3 中。

  • 如果您将 SSE-KMS 选项用于默认加密配置,则您将受到 AWS KMS 的 RPS(每秒请求数)限制。有关 AWS KMS 限制以及如何请求提高限制的更多信息,请参阅 AWS KMS 限制

有关使用 AWS 开发工具包启用默认加密的信息,请参阅使用 AWS 开发工具包和浏览器进行 Amazon S3 开发