如何强制对我的 Amazon S3 桶使用 TLS 1.2 或更高版本?

2 分钟阅读
0

我的客户使用较早版本的 TLS。我想在他们访问我的 Amazon Simple Storage Service(Amazon S3)桶中的内容时,强制使用最新版本的 TLS。

解决方案

注意:Amazon S3 需要使用 TLS 1.2 或更高版本,这是 S3 API 端点的默认设置。要强制使用更高的加密协议版本(例如 TLS 1.3 或更高版本),仍然可以参考本文中的示例。

使用附加到存储桶的基于资源的策略,强制对与 S3 存储桶的所有连接使用 TLS 1.2 或更高版本。

若要附加需要 TLS 1.2 或更高版本的桶策略,请完成下列步骤:

  1. 打开 Amazon S3 控制台

  2. 从列表中选择桶。

  3. 选择权限选项卡。

  4. 在“桶策略”下,选择编辑

  5. 添加策略以拒绝对您要阻止的加密协议的访问。例如,使用以下策略来拒绝使用低于 1.2 的 TLS 版本的所有 HTTPS 请求:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "EnforceTLSv12orHigher",
          "Principal": {
            "AWS": "*"
          },
          "Action": [
            "s3:*"
          ],
          "Effect": "Deny",
          "Resource": [
            "arn:aws:s3:::DOC_EXAMPLE_BUCKET/*",
            "arn:aws:s3:::DOC_EXAMPLE_BUCKET"
          ],
          "Condition": {
            "NumericLessThan": {
              "s3:TlsVersion": 1.2
            }
          }
        }
      ]
    }

    该策略强制使用 HTTPS 来提高传输中数据的安全性。

    如果您的工作负载需要通往 Amazon S3 的 HTTP 流量,请使用以下策略。此策略允许使用 HTTP 流量并阻止来自 TLS 1.2 较早版本的 HTTPS 流量:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "UpdateTLSv12",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC_EXAMPLE_BUCKET/*",
          "Condition": {
            "Bool": {
              "aws:SecureTransport": "true"
            },
            "NumericLessThan": {
              "s3:TlsVersion": "1.2"
            }
          }
        }
      ]
    }

查看 S3 的加密协议

要测试您的新策略,请运行以下示例 curl 命令发出使用特定传统协议的 HTTPS 请求:

curl https://${BUCKET_NAME}.s3.us-east-1.amazonaws.com/image.png -v --tlsv1.0 --tls-max 1.0

由于 Amazon S3 检测到您的请求未使用 TLS 1.2 或更高版本,因此 curl 命令将返回 Access Denied(拒绝访问)。

注意: 在默认情况下,curl 会发送匿名请求。如果您的存储桶是私有的,则无论使用何种 TLS 版本,您都会收到 403 Access Denied(403 拒绝访问)错误。使用 curl 进行测试时,生成 Amazon S3 预签名 URL 以授予访问您的私有对象的权限。

最佳实践是使用 AWS CloudTrail Lake 来识别与 AWS 服务端点相连的早期版本 TLS 连接。您可以配置 CloudTrail Lake 事件数据存储来捕获管理事件或者数据事件。

AWS 官方
AWS 官方已更新 5 个月前