配置默认加密
重要
Amazon S3 现在将具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)作为 Amazon S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起,上传到 Amazon S3 的所有新对象都将自动加密,不会产生额外费用,也不会影响性能。S3 存储桶默认加密配置和上传的新对象的自动加密状态可在 Amazon CloudTrail 日志、S3 清单、S3 Storage Lens 存储统计管理工具、Amazon S3 控制台中获得,并可用作 Amazon Command Line Interface 和 Amazon SDK 中的附加 Amazon S3 API 响应标头。有关更多信息,请参阅默认加密常见问题解答。
默认设置情况下,Amazon S3 存储桶启用了存储桶加密,并且通过具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)来自动加密新对象。这种加密适用于您的 Amazon S3 存储桶中的所有新对象,并且不收取任何费用。
如果您需要对加密密钥进行更多控制,例如管理密钥轮换和访问策略授予,则可以选择使用具有 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS),或具有 Amazon KMS 密钥的双层服务器端加密(DSSE-KMS)。有关 SSE-KMS 的更多信息,请参阅 使用 Amazon KMS (SSE-KMS) 指定服务器端加密。有关 DSSE-KMS 的更多信息,请参阅使用具有 Amazon KMS 密钥的双层服务器端加密(DSSE-KMS)。
如果您希望使用其他账户拥有的 KMS 密钥,则您必须有权使用该密钥。有关 KMS 密钥的跨账户权限的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建其他账户可以使用的 KMS 密钥。
当您将默认存储桶加密设置为 SSE-KMS 时,还可以配置 S3 存储桶密钥以降低 Amazon KMS 请求成本。有关更多信息,请参阅 使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本。
注意
如果使用 PutBucketEncryption 将默认存储桶加密设置为 SSE-KMS,则应验证您的 KMS 密钥 ID 是否正确。Amazon S3 不验证 PutBucketEncryption 请求中提供的 KMS 密钥 ID。
对 S3 存储桶使用默认加密不会产生额外的费用。请求配置默认加密行为会产生标准 Amazon S3 请求费用。有关定价的信息,请参阅 Amazon S3 定价
默认加密不支持具有客户提供的密钥的服务器端加密(SSE-C)。
您可以使用 Amazon S3 控制台、Amazon SDK、Amazon S3 REST API 和 Amazon Command Line Interface(Amazon CLI)为 S3 存储桶配置 Amazon S3 默认加密。
启用默认加密之前需要注意的更改
在为存储桶启用默认加密后,将会应用以下加密行为:
-
在启用默认加密之前,存储桶中已存在的对象的加密没有变化。
-
在启用默认加密后上传对象时:
-
如果您的
PUT
请求标头不包含加密信息,则 Amazon S3 将使用存储桶的默认加密设置来加密对象。 -
如果您的
PUT
请求标头包含加密信息,则 Amazon S3 将使用PUT
请求中的加密信息加密对象,然后再将对象存储在 Amazon S3 中。
-
-
如果您将 SSE-KMS 或 DSSE-KMS 选项用于默认加密配置,则您将受到 Amazon KMS 的每秒请求数(RPS)限额限制。有关 Amazon KMS 限额以及如何请求增加限额的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的限额。
注意
在启用默认加密之前上传的对象将不会加密。有关加密现有对象的信息,请参阅为 Amazon S3 存储桶设置默认服务器端加密行为。
在 Amazon S3 存储桶上配置默认加密
登录到Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在左侧导航窗格中,选择存储桶。
-
在 Buckets(存储桶)列表中,请选择您想要的存储桶的名称。
-
选择属性选项卡。
-
在默认加密下,选择编辑。
-
要配置加密,请在加密类型下,选择以下选项之一:
-
具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)
-
具有 Amazon Key Management Service 密钥的服务器端加密(SSE-KMS)
-
具有 Amazon Key Management Service 密钥的双层服务器端加密(DSSE-KMS)
重要
如果您将 SSE-KMS 或 DSSE-KMS 选项用于默认加密配置,则您将受到 Amazon KMS 的每秒请求数(RPS)限额限制。有关 Amazon KMS 限额以及如何请求增加限额的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的限额。
默认情况下,存储桶和新对象使用 SSE-S3 加密,除非您为存储桶指定其他类型的默认加密。有关默认加密的更多信息,请参阅为 Amazon S3 存储桶设置默认服务器端加密行为。
有关使用 Amazon S3 服务器端加密对数据进行加密的更多信息,请参阅使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)。
-
-
如果您选择具有 Amazon Key Management Service 密钥的服务器端加密(SSE-KMS)或具有 Amazon Key Management Service 密钥的双层服务器端加密(DSSE-KMS),请执行以下操作:
-
在 Amazon KMS 密钥下,通过以下方式之一指定您的 KMS 密钥:
-
要从可用的 KMS 密钥列表中进行选择,请选择从您的 Amazon KMS keys 密钥中进行选择,并从可用密钥的列表中选择您的 KMS 密钥。
Amazon 托管式密钥 (
aws/s3
) 和您的客户自主管理型密钥都显示在此列表中。有关客户自主管理型密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的客户密钥和 Amazon 密钥。 -
要输入 KMS 密钥 ARN,请选择输入 Amazon KMS key ARN,然后在显示的字段中输入您的 KMS 密钥 ARN。
-
要在 Amazon KMS 控制台中创建新的客户自主管理型密钥,请选择创建 KMS 密钥。
有关创建 Amazon KMS key 的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥。
重要
您只能使用与存储桶所在相同 Amazon Web Services 区域 中启用的 KMS 密钥。选择从您的 KMS 密钥中选择时,S3 控制台每个区域仅列出 100 个 KMS 密钥。如果在同一区域中有超过 100 个 KMS,您只会在 S3 控制台中看到前 100 个 KMS 密钥。要使用控制台中未列出的 KMS 密钥,请选择输入 Amazon KMS key ARN,然后输入 KMS 密钥 ARN。
在 Amazon S3 中使用 Amazon KMS key 进行服务器端加密时,您必须选择对称加密 KMS 密钥。Amazon S3 仅支持对称加密 KMS 密钥。有关这些密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的对称加密 KMS 密钥。
有关将 SSE-KMS 与 Amazon S3 结合使用的更多信息,请参阅使用具有 Amazon KMS 密钥的服务器端加密(SSE-KMS)。有关使用 DSSE-KMS 的更多信息,请参阅使用具有 Amazon KMS 密钥的双层服务器端加密(DSSE-KMS)。
-
-
将存储桶配置为使用 SSE-KMS 进行默认加密时,您还可以启用 S3 存储桶密钥。S3 存储桶密钥可通过减少从 Amazon S3 到 Amazon KMS 的请求流量,降低加密成本。有关更多信息,请参阅 使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本。
要使用 S3 存储桶密钥,请在 Bucket Key(存储桶密钥)下,选择 Enable(启用)。
注意
DSSE-KMS 不支持 S3 存储桶密钥。
-
-
选择 Save changes(保存更改)。
这些示例说明如何使用 SSE-S3 或将 SSE-KMS 与 S3 存储桶密钥结合使用来配置默认加密。
有关默认加密的更多信息,请参阅为 Amazon S3 存储桶设置默认服务器端加密行为。有关使用 Amazon CLI 配置默认加密的更多信息,请参阅 put-bucket-encryption
例 – 使用 SSE-S3 进行默认加密
此示例使用 Amazon S3 托管密钥来配置默认存储桶加密。
aws s3api put-bucket-encryption --bucket
amzn-s3-demo-bucket
--server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
例 – 使用 S3 存储桶密钥通过 SSE-KMS 进行默认加密
此示例使用 S3 存储桶密钥通过 SSE-KMS 配置默认存储桶加密。
aws s3api put-bucket-encryption --bucket
amzn-s3-demo-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。