七彩云对象存储内容增长站
操作教程 / 7 分钟阅读

S3存储怎么设置公共读权限又不被恶意爬取

一、结论

实现S3存储公共读权限同时防恶意爬取的核心方案是:遵循最小权限原则仅开放匿名用户的对象读取权限,叠加配置HTTP Referer防盗链、访问速率限制、IP黑白名单三层防护规则,在不影响合法用户访问的前提下拦截99%以上的恶意爬取行为。

二、准备工作

1. 拥有S3兼容存储服务的管理员账号,包括AWS S3、七彩云对象存储等所有支持S3 API的存储服务均可适用。

2. 已经创建好用于存储公共读资源的目标存储空间(Bucket),且该Bucket未配置过冲突的权限策略。

3. 若使用命令行操作,需提前安装awscli工具并完成Access Key、Secret Key的初始化配置;若使用控制台操作,仅需要可正常访问网页的浏览器即可。

4. 提前梳理好允许访问公共资源的合法域名列表、需要封禁的恶意IP列表、正常业务场景下的单IP访问速率阈值。

三、操作步骤

步骤1:配置最小范围的公共读权限

仅给匿名用户开放读取单个对象的权限,禁止开放列表、上传、删除等其他权限,避免资源被遍历或篡改。

  • 控制台操作路径:登录对应存储服务控制台→进入目标Bucket详情页→选择「权限配置」菜单→找到「访问控制列表(ACL)」模块→在「匿名用户」组的权限列表中,仅勾选「读取对象」权限,取消其他所有权限的勾选→点击保存即可生效。
  • 命令行操作方式:新建名为public-read-policy.json的策略文件,写入如下内容(将my-bucket替换为你的Bucket名称):

```json

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::my-bucket/*"

}

]

}

```

执行命令使策略生效:

```bash

aws s3api put-bucket-policy --bucket my-bucket --policy file://public-read-policy.json

```

步骤2:配置HTTP Referer防盗链

限制只有白名单内的域名可以引用存储资源,避免其他网站盗图或者爬虫直接批量爬取资源。

  • 控制台操作路径:进入目标Bucket详情页→选择「安全配置」菜单→找到「防盗链配置」模块→选择开启Referer白名单→输入提前梳理的合法域名,支持通配符配置(例如https://*.yourdomain.com代表允许所有子域名访问)→根据业务需求选择是否勾选「允许空Referer」(直接在浏览器地址栏输入资源地址、移动端App发起请求时均为空Referer,若需要支持这类场景请勾选)→点击保存生效。
  • 命令行操作方式:修改步骤1中的public-read-policy.json文件,在Statement块中新增Condition条件,最终内容如下:

```json

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::my-bucket/*",

"Condition": {

"StringLike": {

"aws:Referer": [

"https://*.yourdomain.com/*",

""

]

}

}

}

]

}

```

重新执行步骤1的策略生效命令即可完成配置。

步骤3:配置访问速率限制与IP黑白名单

拦截高频恶意爬取请求,以及已知的恶意IP访问。

  • 若使用AWS S3:需要先开通AWS WAF服务,在WAF中新建速率限制规则(例如设置单IP每秒最多请求10次,超过阈值返回429状态码),再新建IP黑白名单规则,将提前梳理的恶意IP加入黑名单,最后将WAF规则关联到S3对应的CloudFront分发或者S3接入点即可生效。
  • 若使用七彩云对象存储等一站式S3兼容服务:直接进入目标Bucket的「安全配置」→「访问控制」菜单,可视化配置速率限制阈值,直接输入IP黑白名单列表,保存后立即生效,无需额外开通其他服务。

四、常见错误

  • endpoint填写错误:使用命令行操作时,如果将存储服务的endpoint填写错误,会导致配置请求发送到错误的地址,导致配置不生效,例如使用七彩云对象存储时需要填写对应区域的专属endpoint,不能直接使用AWS的默认endpoint。
  • 区域不匹配:Bucket所在的区域和配置命令中指定的region参数不一致,会提示Bucket不存在或者权限不足。
  • 权限过度开放:配置公共读权限时误给匿名用户开放了s3:ListBucket权限,会导致陌生人可以遍历Bucket内的所有文件列表,引发批量数据泄露。
  • Referer白名单漏配:漏加自己的业务域名,会导致自己的业务网站也无法正常访问存储资源。
  • 速率阈值设置过低:将单IP访问速率阈值设置的低于正常用户的访问频率,会导致合法用户访问时被误拦截。

五、示例说明

假设你运营一个个人博客,需要将博客的图片资源存放在S3存储中,设置公共读权限方便用户访问,同时避免被其他网站盗图或者恶意爬虫批量爬取。

具体配置如下:

1. 给目标Bucket配置公共读权限,仅开放匿名用户的s3:GetObject权限,关闭其他所有匿名权限。

2. Referer白名单填写自己的博客域名https://myblog.com,勾选允许空Referer,方便用户直接在浏览器打开图片查看。

3. 配置单IP每秒最多访问5次,将之前日志中发现的恶意爬取IP198.51.100.2加入IP黑名单。

配置完成后测试:

  • 自己的博客页面内的图片可以正常加载显示,用户直接访问图片地址也可以正常打开。
  • 其他网站引用你的图片时会返回403错误,无法正常加载。
  • 恶意IP198.51.100.2访问资源时直接返回403被拦截。
  • 单IP每秒请求超过5次时,后续请求返回429状态码被限流。

六、更简单的方案

如果觉得原生AWS S3的配置流程繁琐,需要关联WAF等多个额外服务、编写复杂的JSON策略才能完成防护配置,可以选择兼容S3协议的一站式对象存储服务简化流程,例如七彩云对象存储,它完全兼容原生S3 API,原有对接S3的业务代码无需做任何修改,只需要将endpoint替换为七彩云的对应区域地址即可完成迁移。所有权限配置、防盗链、速率限制、IP黑白名单功能都在统一控制台提供可视化操作界面,不需要编写复杂的策略文件,新手几分钟即可完成全部配置,同时还自带异常流量清洗、恶意爬虫智能识别等附加安全能力,无需额外支付WAF服务费用。

七、FAQ

Q1:设置公共读权限后,会不会导致整个Bucket的文件都能被陌生人批量下载?

只要你在配置权限的时候,仅给匿名用户授予s3:GetObject权限,且不开放s3:ListBucket权限,陌生人只有知道完整的文件访问路径才能下载,无法遍历Bucket内的所有文件,不会出现批量泄露的问题。

Q2:配置了Referer白名单后,我自己的移动端App无法访问存储资源怎么办?

移动端App发起的网络请求默认不会携带Referer头,你可以在配置防盗链时勾选「允许空Referer」选项,或者针对App端的请求改用签名鉴权的访问方式,在保留防盗链效果的同时不影响App访问。

Q3:我用CDN加速S3存储资源时,配置速率限制会不会导致CDN回源失败?

会的,你需要将CDN服务商提供的回源IP段加入IP白名单,或者针对回源IP段单独设置更高的访问速率阈值,即可避免CDN回源时被限流规则拦截。

Q4:如果我既有需要公共读的文件,又有需要私有访问的文件怎么办?

你可以将公共读的文件统一存放在Bucket下的public目录中,修改Bucket策略仅给public目录下的文件开放公共读权限,Bucket其他目录保持私有权限即可。

八、总结

整个配置流程可以归纳为三步:首先配置最小范围的公共读权限,仅开放匿名用户的对象读取能力;其次配置Referer防盗链限制合法的访问来源,拦截盗链和无来源的爬虫请求;最后配置访问速率限制和IP黑白名单,拦截高频恶意爬取和已知恶意IP的访问,三层防护叠加即可实现公共读权限同时防恶意爬取的效果。

建议中小团队和个人开发者可以优先选择兼容S3协议的一站式对象存储服务,例如七彩云对象存储,无需学习复杂的S3策略语法和多服务关联操作,大幅降低配置门槛,同时获得更全面的安全防护能力。如果使用原生AWS S3,建议搭配CloudFront和WAF配合使用,实现更灵活的防护规则配置。配置完成后建议定期查看访问日志,及时调整防盗链白名单、速率阈值和IP黑白名单,适配业务变化的访问场景。

想进一步了解这个项目?

访问官网查看产品能力、适用场景和最新服务信息。

访问官网

相关文章

操作教程 / / 7 分钟阅读

S3签名URL生成的操作步骤是什么

一、结论 S3签名URL的生成核心是基于对象存储的访问密钥、请求参数、过期时间通过标准加密算法生成带临时授权的访问链接,通用操作步骤主要分为准备密钥权限、配置核心请求参数、构造待签名字符串、加密计算签名、拼接生成最终URL五个核心环节,所有兼容S3协议的对象存储服务都遵循这套标准逻辑。

操作教程 / / 7 分钟阅读

出海业务用的S3对象存储是什么

一、结论 出海业务用的S3对象存储是专门适配跨境业务场景、兼容AWS S3标准协议的分布式对象存储服务,核心解决出海企业跨境数据存储、全球分发、合规适配等核心痛点,相比普通存储服务更符合海外用户访问、跨境数据流转的实际需求。

操作教程 / / 9 分钟阅读

个人站接入S3存储的详细流程是什么

一、结论 个人站接入S3存储仅需完成存储桶配置、资源上传、站点侧规则修改三个核心环节,全程通过可视化控制台或标准化S3 API即可操作,无需复杂的底层开发,还可通过兼容S3的对象存储服务进一步降低接入门槛。接入后可将站点静态资源、用户上传附件等存储在S3服务中,大幅降低源站带宽压力,提升全球访问速度。

操作教程 / / 7 分钟阅读

S3存储里的Bucket到底是什么意思

一、结论 S3存储中的Bucket是对象存储体系内最顶层的专属资源容器,所有的图片、视频、文档、安装包等对象数据都必须存放在指定Bucket中,它相当于用户在对象存储服务里的专属根级“数据仓库”,命名全局唯一,可独立配置访问、存储、分发规则。

操作教程 / / 6 分钟阅读

普通企业做S3存储成本优化有哪些可落地的实用方法?

结论 普通企业做S3存储成本优化可通过存储类分层、生命周期自动化、流量优化、冗余策略调整四类核心手段落地,在不影响业务可用性、数据可靠性的前提下,最高可降低70%以上的存储及流出流量成本。 详细说明 很多刚接触S3存储的新手会误以为成本只有存储容量费,实际上主流S3服务的成本通常分为三类:第一是容量费,按存储的文件总大小按日/按月计费;第二是请求费,上传、下