使用阿里云的OSS(对象存储)已经很多年了,说实话一直没怎么搞明白,或者说也一直没出什么问题,所以就懒得细细研究。最初配置的时候,网上大量教程都是将bucket设置为公共读甚至是公共读写,我也就这么稀里糊涂地照着做了。
其实从名称就能看出,公共读就是匿名用户可以直接读取bucket中的文件,公共读写更甚,直接可以写入文件,风险可想而知。
所以官方一直鼓励设置为私有,以确保资料的安全性。最近如果开通OSS的话,默认就是私有,只有开通后才能通过权限管理将其改成公共读或公共读写。
问题是,之前一旦我设置成为私有之后,网站就无法再访问到OSS中的文件了更别提上传了。所以也就一直将错就错,公共读就公共读好了。
最近在研究CDN的时候,发现其中的私有回源的开关一直是灰色的,虽然角色授权已经成功了。尝试将OSS的权限修改为私有后就能打开私有回源了,而且上传和浏览都没问题。
大致回忆了一下,可能的原因是:

  1. 之前从来没有给bucket增加过授权,所以私有之后除了我这个阿里云的主账户能够读写文件,其他一概不能(这一点跟Linux的root用户和网站的www用户之间的区别是一样的)。为了方便读写就将OSS的权限给设置成了公共读写。后来不知什么原因创建了子账户,并对各个bucket进行了授权。这也是CDN私有回源的前提条件之一。
  2. 每次设置,不管是OSS还是CDN都会有一段配置时间(大概几分钟),所以在调试过程中,明明已经是正确设置也因为没有马上起效而被我修改回原设置。
  3. 每个网站系统使用的插件或者设置代码都不一样,网上给出的方案也各不相同(最典型的就是是否需要提供Access ID和KEY),一旦某种方法(比如设置公共读或公共读写)成功,后续都会沿用这种思路。
    目前所有的OSS都已经修改成了私有,有待时间验证是否会出现各类问题。
    如果有熟悉OSS的朋友正好路过,欢迎留言指正。
最后修改:2025 年 03 月 21 日
如果觉得我的文章对你有用,请随意赞赏