我可以使用哪个 S3 桶策略来遵守 AWS Config 规则 s3-bucket-ssl-requests-only?

1 分钟阅读
0

我为 Amazon Simple Storage Service(Amazon S3)桶策略激活了 AWS Config 规则“s3-bucket-ssl-requests-only”,要求在数据传输期间进行加密。我想确保我的桶策略符合此规则。

解决方法

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

Amazon S3 同时允许 HTTP 和 HTTPS 请求。默认情况下,Amazon S3 通过 AWS 管理控制台、AWS 命令行界面(AWS CLI)或 HTTPS 发出请求。

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

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

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

此示例桶策略符合 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 规则的桶策略

此桶策略不符合 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": "*"
    }
  ]
}

相关信息

如何使用桶策略和应用深度防御来帮助保护您的 Amazon S3 数据

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