启用 Amazon S3 默认存储桶加密 - Amazon Simple Storage Service

启用 Amazon S3 默认存储桶加密

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

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

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

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

启用默认加密之前需要注意的更改

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

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

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

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

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

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

对 Amazon S3 Bucket 启用默认加密

  1. 登录到 AWS Management Console,然后通过以下网址打开 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 key 启用服务器端加密,请执行以下步骤:

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

      重要

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

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

      • AWS 托管密钥 (aws/s3)

      • 从您的 KMS 根密钥中选择,然后选择 KMS 根密钥

      • 输入 KMS 根密钥 ARN,然后输入您的 AWS KMS 密钥 ARN。

      重要

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

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

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

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

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

  9. 选择保存更改

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

有关默认加密的更多信息,请参阅 为 Amazon S3 Bucket 设置默认服务器端加密行为。有关使用 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 Bucket 密钥通过 SSE-KMS 进行默认加密

此示例使用 S3 Bucket 密钥通过 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.