利用加密来保护传输中数据 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

利用加密来保护传输中数据

Amazon S3 的数据传输支持 HTTP 和 HTTPS 两种协议。HTTP 以纯文本格式传输数据,而 HTTPS 则通过使用传输层安全性协议(TLS)加密数据增加了一层安全保护。TLS 可防止侦听、数据篡改和中间人攻击。虽然可以接受 HTTP 流量,但大多数实施都使用 HTTPS 和 TLS 进行传输中加密,来保护在客户端和 Amazon S3 之间传输的数据。

TLS 1.2 和 TLS 1.3 支持

对于所有 Amazon Web Services 区域的所有 API 端点,Amazon S3 支持 HTTPS 连接的 TLS 1.2 和 TLS 1.3。S3 会自动协商您的客户端软件和所访问 S3 端点支持的最强 TLS 保护。当前 Amazon 工具(2014 年及以后)包括 Amazon SDK,Amazon CLI 自动默认使用 TLS 1.3,无需您采取任何操作。如果需要向后兼容 TLS 1.2,您可以通过客户端配置设置指定特定的 TLS 版本,来覆盖此自动协商。使用 TLS 1.3 时,您可以选择配置混合后量子密钥交换(ML-KEM),向 Amazon S3 发出抗量子请求。有关更多信息,请参阅 为客户端配置混合后量子 TLS

注意

除了适用于 Amazon S3 的 Amazon PrivateLink 和多区域接入点之外,所有 S3 端点均支持 TLS 1.3。

监控 TLS 使用情况

您可以使用 Amazon S3 服务器访问日志或 Amazon CloudTrail 来监控对 Amazon S3 存储桶的请求。两个日志记录选项都记录每个请求中使用的 TLS 版本和密码套件。

  • Amazon S3 服务器访问日志:服务器访问日志记录提供对存储桶发出的请求的详细报告。例如,访问日志信息可能在安全和访问权限审核方面很有用。有关更多信息,请参阅 Amazon S3 服务器访问日志格式

  • Amazon CloudTrailAmazon CloudTrail 是提供用户、角色或 Amazon 服务所执行操作的记录的服务。CloudTrail 将 Amazon S3 的所有 API 调用作为事件捕获。有关更多信息,请参阅 Amazon S3 CloudTrail 事件

在传输过程中强制加密

在向 Amazon S3 传输数据时,执行传输中数据加密是一种最佳安全实践。您可以通过各种策略机制来实施仅限 HTTPS 的通信或使用特定的 TLS 版本。这些机制包括适用于 S3 存储桶的基于 IAM 资源的策略(存储桶策略)、服务控制策略(SCP)、资源控制策略(RCP)和 VPC 端点策略

用于强制实施传输中加密的存储桶策略示例

您可以使用 S3 条件键 s3:TlsVersion,根据客户端使用的 TLS 版本限制对 Amazon S3 存储桶的访问权限。有关更多信息,请参阅 示例 6:要求最低 TLS 版本

例 使用 S3:TlsVersion 条件键强制实施 TLS 1.3 的存储桶策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": "1.3" } } } ] }

您可以在 S3 存储桶策略中使用 aws:SecureTransport 全局条件键来检查请求是否通过 HTTPS(TLS)发送。与前一示例不同,此条件不检查是否使用了特定 TLS 版本。有关更多信息,请参阅 仅限 HTTPS 请求访问

例 使用 aws:SecureTransport 全局条件键强制实施 HTTPS 的存储桶策略
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" } ] }
基于这两种键的策略示例和更多示例

您可以在一个策略中使用前面示例中演示的两种条件键。有关更多信息和其他强制实施方法,请参阅 Amazon Storage 博客文章 Enforcing encryption in transit with TLS1.2 or higher with Amazon S3