配置默认加密 - Amazon Simple Storage Service

配置默认加密

重要

Amazon S3 现在将具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)作为 Amazon S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起,上传到 Amazon S3 的所有新对象都将自动加密,不会产生额外费用,也不会影响性能。S3 存储桶默认加密配置和上传的新对象的自动加密状态可在 AWS CloudTrail 日志、S3 清单、S3 Storage Lens 存储统计管理工具、Amazon S3 控制台中获得,并可用作 AWS Command Line Interface 和 AWS SDK 中的附加 Amazon S3 API 响应标头。有关更多信息,请参阅默认加密常见问题解答

默认设置情况下,Amazon S3 存储桶启用了存储桶加密,并且通过具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)来自动加密新对象。这种加密适用于您的 Amazon S3 存储桶中的所有新对象,并且不收取任何费用。

如果您需要对加密密钥进行更多控制,例如管理密钥轮换和访问策略授予,则可以选择使用具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS),或具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)。有关 SSE-KMS 的更多信息,请参阅 使用 AWS KMS (SSE-KMS) 指定服务器端加密。有关 DSSE-KMS 的更多信息,请参阅使用具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)

如果您希望使用其他账户拥有的 KMS 密钥,则您必须有权使用该密钥。有关 KMS 密钥的跨账户权限的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的创建其他账户可以使用的 KMS 密钥

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

注意

如果使用 PutBucketEncryption 将默认存储桶加密设置为 SSE-KMS,则应验证您的 KMS 密钥 ID 是否正确。Amazon S3 不验证 PutBucketEncryption 请求中提供的 KMS 密钥 ID。

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

默认加密不支持具有客户提供的密钥的服务器端加密(SSE-C)。

您可以使用 Amazon S3 控制台、AWS SDK、Amazon S3 REST API 和 AWS Command Line Interface(AWS CLI)为 S3 存储桶配置 Amazon S3 默认加密。

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

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

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

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

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

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

  • 如果您将 SSE-KMS 或 DSSE-KMS 选项用于默认加密配置,则您将受到 AWS KMS 的每秒请求数(RPS)限额限制。有关 AWS KMS 限额以及如何请求增加限额的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的限额

注意

在启用默认加密之前上传的对象将不会加密。有关加密现有对象的信息,请参阅为 Amazon S3 存储桶设置默认服务器端加密行为

在 Amazon S3 存储桶上配置默认加密
  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

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

  4. 选择属性选项卡。

  5. 默认加密下,选择编辑

  6. 要配置加密,请在加密类型下,选择以下选项之一:

    • 具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)

    • 具有 AWS Key Management Service 密钥的服务器端加密(SSE-KMS)

    • 具有 AWS Key Management Service 密钥的双层服务器端加密(DSSE-KMS)

      重要

      如果您将 SSE-KMS 或 DSSE-KMS 选项用于默认加密配置,则您将受到 AWS KMS 的每秒请求数(RPS)限额限制。有关 AWS KMS 限额以及如何请求增加限额的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的限额

    默认情况下,存储桶和新对象使用 SSE-S3 加密,除非您为存储桶指定其他类型的默认加密。有关默认加密的更多信息,请参阅为 Amazon S3 存储桶设置默认服务器端加密行为

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

  7. 如果您选择具有 AWS Key Management Service 密钥的服务器端加密(SSE-KMS)具有 AWS Key Management Service 密钥的双层服务器端加密(DSSE-KMS),请执行以下操作:

    1. AWS KMS 密钥下,通过以下方式之一指定您的 KMS 密钥:

      • 要从可用的 KMS 密钥列表中进行选择,请选择从您的 AWS KMS keys 密钥中进行选择,并从可用密钥的列表中选择您的 KMS 密钥

        AWS 托管式密钥 (aws/s3) 和您的客户自主管理型密钥都显示在此列表中。有关客户自主管理型密钥的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的客户密钥和 AWS 密钥

      • 要输入 KMS 密钥 ARN,请选择输入 AWS KMS key ARN,然后在显示的字段中输入您的 KMS 密钥 ARN。

      • 要在 AWS KMS 控制台中创建新的客户自主管理型密钥,请选择创建 KMS 密钥

        有关创建 AWS KMS key 的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的创建密钥

      重要

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

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

      有关将 SSE-KMS 与 Amazon S3 结合使用的更多信息,请参阅使用具有 AWS KMS 密钥的服务器端加密(SSE-KMS)。有关使用 DSSE-KMS 的更多信息,请参阅使用具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)

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

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

      注意

      DSSE-KMS 不支持 S3 存储桶密钥。

  8. 选择 Save changes(保存更改)

这些示例说明如何使用 SSE-S3 或将 SSE-KMS 与 S3 存储桶密钥结合使用来配置默认加密。

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

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

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

aws s3api put-bucket-encryption --bucket DOC-EXAMPLE-BUCKET --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
例 – 使用 S3 存储桶密钥通过 SSE-KMS 进行默认加密

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

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

使用 REST API PutBucketEncryption 操作可启用默认加密,并设置要使用的服务器端加密类型:SSE-S3、SSE-KMS 或 DSSE-KMS。

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