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

上次更新日期:2021 年 4 月 27 日

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

解决方法

注意:Amazon S3 提供传输中加密和静态加密。传输中的加密是指 HTTPS,静态加密是指客户端服务器端加密

Amazon S3 同时允许 HTTP 和 HTTPS 请求。默认情况下,请求通过 AWS 管理控制台、AWS 命令行界面 (AWS CLI) 或 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:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "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:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "true"
        }
      },
      "Principal": "*"
    }
  ]
}

这篇文章对您有帮助吗?


您是否需要账单或技术支持?