起初我们在创建OSS bucket时,都会指定其读写权限,
通常我们都会设置成"公共读",即对上传有签名验证限制,而可以通过文件链接随意下载,
今天在检查线上阿里OSS bucket设置时,发现所有的bucket的读写权限都设置成了"私有",
而我们的用户却还可以通过文件链接来直接下载文件😱很是诧异!
虽然bucket设置了"私有"权限,但开发上传的文件却是"公共读"权限:
后来查看OSS相关资料发现🔗读写权限ACL后发现,其实也可以在上传文件时指定ACL
而在看了我们之前的开发代码后发现,其实我们在每次上传文件时都指定了访问策略为"公共读"
综上,
即每次上传文件的acl设置(或 后续单独acl设置)可以覆盖bucket的设置,若上传文件文件时没有指定acl设置则继承bucket的acl设置。
最终方案:
- 在创建bucket的时候设置合适的acl权限;
- 上传文件使用签名认证方式(无需指定acl),即由服务端生成签名,而终端通过签名进行文件上传;
- 上传的文件继承bucket的acl设置;