适用场景

对象存储便宜、耐用,但用不好会出三件事:账单暴涨(没人清)、数据泄露(桶公开可读)、同步没配(区域故障后拿不到数据)。三件事都能通过配置解决,关键是有人定期看。

配置步骤(权限、防盗链与审计)

# 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 分钟、策略变更留痕、盗链防护生效

小结

对象存储验收:抽查任意一个桶,能立刻说清谁能读、生命周期怎么走、有没有同步、每月花多少钱。四项都答得上就是合规使用。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。