设置和监控目录存储桶的默认加密
默认设置情况下,Amazon S3 存储桶启用了存储桶加密,并且通过具有 Amazon S3 托管密钥的服务器端加密(SSE-S3)来自动加密新对象。这种加密适用于您的 Amazon S3 存储桶中的所有新对象,并且不收取任何费用。
如果您需要对加密密钥进行更多控制,例如管理密钥轮换和访问策略授予,则可以选择使用具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)。
注意
我们建议存储桶的默认加密使用所需的加密配置,并且不要在
CreateSession
请求或PUT
对象请求中覆盖存储桶默认加密。然后,使用所需的加密设置自动对新对象进行加密。有关目录存储桶中加密覆盖行为的更多信息,请参阅 Specifying server-side encryption with AWS KMS for new object uploads。要使用 SSE-KMS 加密目录存储桶中的新对象,必须将具有 KMS 密钥(特别是客户自主管理型密钥)的 SSE-KMS 指定为目录存储桶的默认加密配置。然后,在为可用区端点 API 操作创建会话时,将在会话期间使用 SSE-KMS 和 S3 存储桶密钥自动加密和解密新对象。
当您将默认存储桶加密设置为 SSE-KMS 时,将始终为目录存储桶中的
GET
和PUT
操作启用 S3 存储桶密钥,并且不能禁用。当您通过 CopyObject、UploadPartCopy、批量操作中的 Copy 操作或 import 任务,将 SSE-KMS 加密的对象从通用存储桶复制到目录存储桶、从目录存储桶复制到通用存储桶,或在目录存储桶之间复制时,不支持 S3 存储桶密钥。在这种情况下,每次对 KMS 加密的对象发出复制请求时,Amazon S3 都会调用 AWS KMS。有关 S3 存储桶密钥如何降低 AWS KMS 请求成本的更多信息,请参阅使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本。当您在目录存储桶中指定用于加密的 AWS KMS customer managed key 时,请仅使用密钥 ID 或密钥 ARN。不支持 KMS 密钥的密钥别名格式。
对于目录存储桶中的默认加密,不支持具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)和具有客户提供的密钥的服务器端加密(SSE-C)。
有关配置默认加密的更多信息,请参阅配置默认加密。
有关默认加密所需的权限的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutBucketEncryption。
您可以使用 Amazon S3 控制台、AWS SDK、Amazon S3 REST API 和 AWS Command Line Interface(AWS CLI)为 S3 存储桶配置 Amazon S3 默认加密。
在 Amazon S3 存储桶上配置默认加密
登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在左侧导航窗格中,选择存储桶。
-
在 Buckets(存储桶)列表中,请选择您想要的存储桶的名称。
-
选择属性选项卡。
-
在服务器端加密设置下,目录存储桶使用具有 Amazon S3 托管式密钥(SSE-S3)的服务器端加密。
-
选择 Save changes(保存更改)。
这些示例说明如何使用 SSE-S3 或将 SSE-KMS 与 S3 存储桶密钥结合使用来配置默认加密。
有关默认加密的更多信息,请参阅为 Amazon S3 存储桶设置默认服务器端加密行为。有关使用 AWS CLI 配置默认加密的更多信息,请参阅 put-bucket-encryption
例 – 使用 SSE-S3 进行默认加密
此示例使用 Amazon S3 托管密钥来配置默认存储桶加密。要使用该命令,请将用户输入占位符
替换为您自己的信息。
aws s3api put-bucket-encryption --bucket
bucket-base-name
--azid
--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
例 – 使用 S3 存储桶密钥通过 SSE-KMS 进行默认加密
此示例使用 S3 存储桶密钥通过 SSE-KMS 配置默认存储桶加密。要使用该命令,请将用户输入占位符
替换为您自己的信息。
aws s3api put-bucket-encryption --bucket
bucket-base-name
--azid
--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "KMS-Key-ARN
" }, "BucketKeyEnabled": true } ] }'
使用 REST API PutBucketEncryption
操作可设置默认加密,要使用的服务器端加密类型为 SSE-S3 或 SSE-KMS。
有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutBucketEncryption。
使用 AWS SDK 时,您可以请求 Amazon S3 使用 AWS KMS keys 进行服务器端加密。以下适用于 Java 和 .NET 的 AWS SDK 示例使用 SSE-KMS 和 S3 存储桶密钥为目录存储桶配置默认加密配置。有关其它 SDK 的信息,请参阅 AWS 开发人员中心上的示例代码和库
重要
在 Amazon S3 中使用 AWS KMS key 进行服务器端加密时,您必须选择对称加密 KMS 密钥。Amazon S3 仅支持对称加密 KMS 密钥。有关这些密钥的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的对称加密 KMS 密钥。
使用 AWS CloudTrail 监控目录存储桶的默认加密
可以使用 AWS CloudTrail 事件跟踪 Amazon S3 目录存储桶的默认加密配置请求。CloudTrail 日志中使用以下 API 事件名称:
-
PutBucketEncryption
-
GetBucketEncryption
-
DeleteBucketEncryption
注意
目录存储桶不支持 EventBridge。
目录存储桶不支持具有 AWS Key Management Service(AWS KMS)密钥的双层服务器端加密(DSSE-KMS),也不支持具有客户提供的加密密钥的服务器端加密(SSE-C)。
有关使用 AWS CloudTrail 监控默认加密的更多信息,请参阅使用 AWS CloudTrail 和 Amazon EventBridge 监控默认加密。