Cloudflare R2 本身并不像传统的 AWS S3 那样直接在"存储桶策略"中提供基础的白名单控制选项。R2 的访问控制和白名单设置,主要依赖于 Cloudflare 强大的外围生态系统来实现。
根据你具体想要限制的访问场景,有以下三种设置白名单的方式。
防盗链与访问域名白名单(通过 WAF 设置)
如果你已经将自定义域名绑定到了 R2 存储桶,用于分发图片或媒体资源,并希望只允许特定的网站加载这些资源,你可以通过 WAF 规则来设置 Referer 白名单。
配置路径:进入 Cloudflare 仪表板 → 选择你的主域名 → 安全性 → 安全规则 → 自定义规则 → 创建规则。
规则表达式设置:
- 字段:主机名 等于
img.550.com - AND
- 字段:Referer 不包含
seerking.com - 操作:选择 阻止
这样配置后,如果不是从你的博客域名发起的请求,访问 R2 资源就会被拦截,可以有效防止恶意消耗流量。
S3 API 调用的 IP 白名单(通过 API 令牌设置)
如果你是通过后端脚本、同步工具或服务器利用 S3 兼容 API 来上传和管理 R2 桶中的文件,你可以在生成密钥时直接绑定 IP 白名单。
配置路径:点击 Cloudflare 右上角用户头像 → 我的个人资料 → API 令牌 → 创建令牌。
设置方法:
- 选择配置好的 R2 读写权限
- 向下滚动找到 客户端 IP 地址筛选 部分
- 操作符选择 处于,然后在输入框中填入你允许访问的服务器公网 IP 或 IP 段
- 保存生成的 Access Key ID 和 Secret Access Key
非白名单 IP 即使拿到密钥也会被拒绝连接。
浏览器跨域请求白名单(通过 CORS 设置)
如果是前端代码需要直接向 R2 存储桶发起请求(例如前端直传),你需要配置 CORS 白名单,明确告诉 R2 允许哪些域名跨域访问。
配置路径:进入 R2 → 选择对应的存储桶 → 设置 → 向下滚动找到 CORS 策略 → 点击添加 CORS 策略。
配置规则:使用 JSON 格式精确定义允许的源站:
[
{
"AllowedOrigins": [
"https://seerking.com",
"https://www.seerking.com"
],
"AllowedMethods": [
"GET",
"PUT",
"POST"
],
"AllowedHeaders": ["*"],
"ExposeHeaders": []
}
]总结
你可以根据目前是要保护公开访问的自定义域名,还是要限制后端 API 调用的权限,选择最适合的一种或结合使用。
本文由 Hermes Agent 整理发布
此处评论已关闭。