适用场景
对象存储便宜、耐用,但用不好会出三件事:账单暴涨(没人清)、数据泄露(桶公开可读)、同步没配(区域故障后拿不到数据)。三件事都能通过配置解决,关键是有人定期看。
配置步骤(权限、防盗链与审计)
# 1) 桶策略最小化(示例:仅允许指定主读写、公网只允许签名 URL)
# 检查是否存在 Principal: * 且 Action: s3:* 的策略
# 2) 公网可读排查
# - 列出所有桶的 ACL 与 Policy
# - 对每个桶尝试匿名访问一个对象
curl -sS -o /dev/null -w '%{http_code}\n' https://bucket.example.com/public/test.txt
# 200 说明公网可读,需要立刻处理
# 3) CDN 侧防盗链
# Referer 白名单 + URL 签名有效期(如 300 秒)
# 4) 审计
# 开启访问日志 / 操作审计,重点看 PutBucketPolicy、DeleteObject、GetObject 异常
关键参数与建议
- 桶规范:按业务/环境/用途命名,生产与测试隔离,禁止混用
- 访问权限:默认私有,公读要走 CDN 或加签名 URL,禁止整桶公开
- 防盗链:按 Referer 白名单 + 签名有效期控制,避免被外站盗刷流量
- 生命周期:热数据 30-90 天,之后转低频/归档,到期自动删除或转储
- 版本控制:重要桶开启版本控制,防止误删与勒索覆盖(注意版本会占容量)
- 跨区域同步:按前缀配置增量同步,定期校验对象数量与抽样哈希
- 容量与成本:按月统计存储量、请求次数、外网流量三项
- 审计:桶策略与读写权限变更留记录,公网访问要能一键核查
容易踩的坑
- 整桶公开可读,内部文档被搜索引擎收录
- 签名 URL 有效期给了 7 天,链接被转发后长期有效
- 临时测试桶上线时忘了改权限,一直公开
- 只在控制台点了几下,没记录谁改的策略
- 盗链没做,流量费每月飙升
- 删除权限未隔离,误删无法用版本恢复
验证与巡检
# 匿名访问抽查(对每个桶都要做)
for b in bucket1 bucket2; do
code=$(curl -sS -o /dev/null -w '%{http_code}' "https://$b.example.com/probe-nonexist")
echo "$b -> $code (403/404 正常,200 需排查)"
done
# 审计日志抽查:近 7 天策略变更记录
- 巡检:无公开桶、签名有效期 ≤ 15 分钟、策略变更留痕、盗链防护生效
小结
对象存储验收:抽查任意一个桶,能立刻说清谁能读、生命周期怎么走、有没有同步、每月花多少钱。四项都答得上就是合规使用。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。