本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon S3 的加密最佳实践
Amazon Simple Storage Service(Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
对于 Amazon S3 的服务器端加密,有三个选项:
Amazon S3 应用服务器端加密,将亚马逊 S3 托管密钥 (SSE-S3) 作为亚马逊 S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起,上传到 Amazon S3 的所有新对象都将自动加密,不会产生额外费用,也不会影响性能。S3 存储桶默认加密配置和新对象上传的自动加密状态可在 AWS CloudTrail 日志、S3 清单、S3 存储镜头、Amazon S3 控制台中找到,并在 AWS Command Line Interface (AWS CLI) 和 AWS SDKs中作为其他 Amazon S3 API 响应标头提供。有关更多信息,请参阅默认加密常见问题解答。
如果在上传时使用服务器端加密来加密对象,请将 x-amz-server-side-encryption
标头添加到请求中,以通知 Amazon S3 使用 SSE-S3、SSE-KMS 或 SSE-C 加密对象。以下是 x-amz-server-side-encryption
标头的可能值:
-
AES256
,通知 Amazon S3 使用 Amazon S3 托管的密钥。 -
aws:kms
,它告诉 Amazon S3 使用 AWS KMS 托管密钥。 -
对于 SSE-C,将值设置为
True
或False
有关更多信息,请参阅 “如何使用存储桶策略和申请 Defense-in-Depth帮助保护您的 Amazon S3 数据”(AWS 博客文章)中的Defense-in-depth 要求 1:静态数据和传输期间必须对数据
对于 Amazon S3 中的客户端加密,有两个选项:
-
密钥存储在 AWS KMS
-
存储在应用程序中的密钥
考虑下面针对该服务的加密最佳实践:
-
在中 AWS Config,实施bucket-server-side-encryption启用 s3 的 AWS 托管规则来验证和实施 S3 存储桶加密。
-
部署 Amazon S3 存储桶策略,验证所有上传的对象是否都已使用
s3:x-amz-server-side-encryption
条件进行加密。有关更多信息,请参阅 Protecting data using SSE-S3 中的示例存储桶策略以及 Adding a bucket policy 中的说明。 -
使用 S3 存储桶策略中的
aws:SecureTransport
条件仅允许通过 HTTPS(TLS)的加密连接。有关更多信息,请参阅我应该使用哪个 S3 存储桶策略来遵守 AWS Config 规则 s3-bucket-ssl-requests-only? -
在中 AWS Config,实现 s3 bucket-ssl-requests-only AWS 托管规则,要求请求使用 SSL。
-
如果您需要授予对 Amazon S3 对象的跨账户访问权限,请使用客户管理的密钥。配置密钥政策以允许来自另一个 AWS 账户的访问。