S3 静态网站托管 - 限制来自 IP 范围的访问

Nav*_*jay 3 cloud amazon-s3 static-content cloud-hosting amazon-web-services

有什么方法可以强制我们仅从 S3 静态网站托管站点的特定 IP 范围进行访问?

小智 8

实际上,您只需要使用存储桶策略配置 S3 访问:

  1. 打开您的AWS S3 控制台
  2. 右键单击您的存储桶并选择Properties。您将在右侧看到存储桶属性。
  3. 权限部分,单击编辑存储桶策略
  4. 填写以下策略(调整 IP 地址):
{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "54.240.143.0/24"
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

此处查看更多 S3 存储桶策略示例。

  • 当然,这假设对象本身没有使用 `x-amz-acl: public-read` 上传,并且没有其他存储桶策略也允许读取。否则,此策略不会覆盖它,并且需要更改对象的权限,或者存储桶策略需要为“拒绝”而不是“允许”,并且条件更改为“NotIpAddress”。(任何匹配的`Allow` 将允许,任何匹配的`Deny` 将拒绝,并且`Deny` 始终否决`Allow`。)在任何一种情况下,`"aws:SourceIp"` 还可以指定一个CIDR 值数组,每个值引用,逗号分隔,在`[`方括号`]`中。 (2认同)