# 对象存储被误设成公共读，上线前该核对哪几项

- Link: https://www.itor.cn/1558.html
- Published: 2026-11-15T04:37:57+08:00
- Author: it

测试阶段为了看图方便，把存储桶权限临时放开，是不少团队都做过的事。图片能直接打开，
附件能直接下载，联调效率确实高。问题在于，这个“临时”很容易被忘掉。等到系统上线，
桶还是公共读状态，任何拿到链接的人都能访问里面的文件，包括不该对外的内容。这类问题
不一定会立刻暴露，但一旦被扫描到，处理成本远高于上线前花十分钟核对。

要核对，先要分清三类权限概念。存储桶策略作用于整个桶，决定谁能对桶内资源做什么操作，
影响面最大。对象ACL作用于单个文件，粒度细，但容易在批量上传时被统一设成公开，反而
成为漏点。临时访问凭证则是给前端或第三方一个带时效的访问入口，本身不改变文件的默认
权限，用得好可以替代公共读。三者混用时，最常见的情况是桶策略已经收紧，但对象ACL还
留着公开读，或者反过来，凭证过期了却没人发现。

上线前的核对清单可以从五项入手。第一，确认桶的默认权限是私有，新建对象继承私有属性，
而不是继承“公开读”。第二，检查策略里是否存在通配符授权，比如把资源写成星号、把主体
写成所有人，这类写法在测试期很常见，上线前应逐条确认必要性。第三，关闭目录列表功能，
即使单个文件可访问，也不应让人通过列举接口看到桶里有什么。第四，外链是否带过期签名，
需要长期公开的资源应走签名机制，而不是直接开放读权限。第五，确认访问日志已开启，
出问题时能回溯谁在什么时间访问了什么。

验证方法不复杂，但要做对。用未登录状态的浏览器直接访问一个文件直链，观察返回的状态
码和内容。如果返回正常文件内容，说明该文件对外可读。再开一个无痕窗口重复访问，排除
缓存和登录态干扰。两步都通过，才说明权限确实收紧了。反过来，如果直链返回拒绝访问，
但业务页面里的图片仍能正常显示，说明走的是签名或代理路径，这是预期结果。

权限收紧后还要做兼容性检查。公共读关掉之后，原本依赖直链的图片、附件、导出文件可能
全部失效。上线前应把业务里所有引用存储地址的地方过一遍，确认它们走的是签名链接、
后端代理还是公共直链。公共直链的部分要改成签名或代理，签名有效期要覆盖实际使用场景，
避免用户打开页面时链接已经过期。这一步做不完整，权限是收紧了，业务也跟着断了。

把权限核对写进上线流程，比事后补救划算得多。it数运在交付中通常把这类检查列为固定
项，和域名解析、证书有效期、备份策略放在同一张清单上，逐项确认后再放行。对象存储
的权限问题不复杂，难的是有人记得在正确的时机检查它。
