关于Minio对象存储的桶策略的一点建议

Blade 未结 1 3059
3395733618
3395733618 剑圣 2020-12-18 10:13

一、该问题的重现步骤是什么?

1. 默认的桶策略是公共读,是由代码设置的s3规则

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?

minioTemplate中创建桶,要设置桶策略为公共读

然后使用代码设置的桶策略在minio的控制台中是看不到的,还只能用代码去改,这种情况是很痛苦的。

防盗链的很重要的,带宽很贵,被盗链了挤占公司购买的服务器带宽资源很痛苦。被盗链之后又不可能一家家找到盗链狗让他们用用自己的服务器资源。只能默默的加带宽,可是公司要是有这个钱加带宽的话(老板要是有这个觉悟加带宽的话),做程序的也不至于那么痛苦。

我是被盗链狗深深的伤到过的人,设置私有桶,再发放限时url,其实文件都是可以给别人下走的。我们也没有什么保密的东西,下了就下了。可是用了我们的图,还要盗我们的链,真的很痛苦。


当然也有同志会说,你这个限时url用上,使用富文本的时候很痛苦啊,放在服务本中的文件url,过段时间就不能用了。

这个其实是可以解决的

存富文本的时候,前端操作一下,将src中的url替换成文件id

读富文本的时候,将数据库的富文本转码后,再用Jsoup解析,将所有src属性的id替换成限时url,返回前端

就搞定了


minio的控制台自带有桶策略的设置,自己设置就完事了,很方便的,不需要用代码去设置

image.png

所以强烈建议minioTemplate中不要去设置桶策略,然后在OssTemplate加一个 getPresignedObjectUrl 方法,在其实现类中加入实现



我已经自己改了,希望作者能够接受我的建议。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

2.7.0    win10,centos7

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 2020-12-18 11:51

    这个问题我之前都有考虑过,但了解到大部分公司的项目都是在内网或者需要长时间展示的,所以会默认把权限放开,这是根据大部分人的需求而定。

    当然你如果想做防盗链,你的解决方案是可以的,但也只是针对minio而已。如果是其他的oss服务或者自己写的oss服务呢?每个单独去改都比较耗时间,所以这并不是一个比较好的解决方案。

    我们的设计是关于底层的,底层通用型,当遇到不同的场景,比如需要防盗链了,可以从上层进行控制,也不需要写代码,比如采用防盗链服务,或者简单一些直接用nginx来实现防盗链就行。这种方案不需要去兼容不同的oss服务,也不需要去关心每个桶的策略,只需要一段nginx配置就能实现

    0 讨论(0)
提交回复