要符合 AWS Config 规则 s3-bucket-ssl-requests-only,我要使用什么 S3 存储桶策略?

上次更新时间: 2019 年 10 月 29 日

我启用了 AWS Config 规则 s3-bucket-ssl-requests-only 以确保我的 Amazon Simple Storage Service (Amazon S3) 存储桶策略要求数据传输过程中加密。我要如何创建符合此规则的存储桶策略? 

解决方法

默认情况下,Amazon S3 允许 HTTP 和 HTTPS 请求。要符合 s3-bucket-ssl-requests-only 规则,请确认您的存储桶策略显式拒绝 HTTP 请求的访问权。允许 HTTPS 请求但没有显式拒绝 HTTP 请求的存储桶策略可能不符合该规则。

要在存储桶策略中判定是 HTTP 还是 HTTPS 请求,请使用一个检查键 "aws:SecureTransport" 的条件。当此键为 true 时,意味着请求通过 HTTPS 发送。要确保遵守 s3-bucket-ssl-requests-only 规则,需要创建一个存储桶策略,并使其显式拒绝满足条件 "aws:SecureTransport": "false" 的请求的访问权。此策略显式拒绝 HTTP 请求的访问权。

符合 s3-bucket-ssl-requests-only 规则的存储桶策略

例如,下面的存储桶策略符合规则。该策略在请求满足条件 "aws:SecureTransport": "false" 时,显式拒绝对所有存储桶和对象的操作:

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowSSLRequestsOnly",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::awsexamplebucket",
        "arn:aws:s3:::awsexamplebucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      },
      "Principal": "*"
    }
  ]
}

不符合 s3-bucket-ssl-requests-only 规则的存储桶策略

相反,以下存储桶策略不符合该规则。该策略没有使用显式拒绝语句,因而允许满足条件 “aws: SecureTransport”: “true” 的请求的访问权。如果请求使用 HTTPS,此语句允许针对存储桶中的所有对象匿名访问 s3: GetObject。应避免这种类型的存储桶策略,除非您的用例需要通过 HTTPS 匿名访问。

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "NOT-RECOMMENDED-FOR__AWSCONFIG-Rule_s3-bucket-ssl-requests-only",
      "Action": "s3:GetObject",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::awsexamplebucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "true"
        }
      },
      "Principal": "*"
    }
  ]
}

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?