You need to enable JavaScript to run this app. 如何配置Amazon S3基于IP的访问策略?配置后应用无法访问如何处理
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Amazon S3基于IP的访问策略?配置后应用无法访问如何处理

配置问题排查与修复方案

现有配置的核心问题

  • 逻辑适用场景错误:你当前策略仅允许IP为server-ip-address的客户端拉取资源,如果你的Web应用是直接将Spaces的图片链接嵌入前端页面,由用户浏览器直接发起资源请求,那么请求的源IP是用户设备的公网IP,不是你的服务器IP,自然会被策略拒绝。
  • 缺少显式Allow规则:S3兼容存储的权限逻辑是「默认隐式拒绝」,优先匹配Deny规则,再匹配Allow规则。你当前只配置了Deny规则,没有对应配置Allow规则,哪怕请求源IP符合要求,也会被默认隐式规则拒绝。
  • IP格式不规范:单IP配置需要加CIDR后缀/32,例如1.1.1.1/32,如果漏写后缀,IP匹配规则不会生效。如果你的服务器使用IPv6地址,仅配置IPv4也会导致匹配失败。

调试排查方法

  • 开启存储桶访问日志:在DigitalOcean Spaces控制台开启对应存储桶的访问日志功能,日志会记录每一次请求的源IP、Referer头、请求状态码等完整信息,可直接对比日志字段与你的策略条件,定位匹配失败的原因。
  • 使用curl模拟请求验证:
    模拟不带Referer的普通请求:curl -I https://<你的空间域名>/<测试文件路径>
    模拟带指定Referer的请求:curl -I -H "Referer: https://<你的业务域名>" https://<你的空间域名>/<测试文件路径>
    模拟指定源IP的请求(需要在对应IP的服务器上执行):curl -I https://<你的空间域名>/<测试文件路径>
    通过返回的状态码(200为正常、403为被策略拒绝)即可快速验证规则是否符合预期。

推荐的防盗链策略配置

如果你的场景是前端直接加载Spaces资源,推荐使用Referer校验替代IP校验,示例配置如下:

{
  "Id": "anti-hotlink policy",
  "Statement": [
    {
      "Sid": "Allow valid requests",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<你的存储桶名>/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "https://<你的业务域名>/*",
            "https://www.<你的业务域名>/*"
          ]
        }
      }
    },
    {
      "Sid": "Deny invalid requests",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<你的存储桶名>/*",
      "Condition": {
        "StringNotLike": {
          "aws:Referer": [
            "https://<你的业务域名>/*",
            "https://www.<你的业务域名>/*"
          ]
        }
      }
    }
  ]
}

如果你的场景是后端服务代理拉取资源再返回给用户,仅保留IP校验即可,注意补全Allow规则和IP的CIDR后缀。

内容的提问来源于stack exchange,提问作者Denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 13:15:02