说明:MinIO是文件资源服务器,相当于免费的OSS,安装参考:
Minio使用及整合起步依赖
;
如果你的桶(Bucket)权限设置的是“Private”,那么可能会有数据泄露的风险。像别有用心的用户,可以通过抓包,获取到Minio服务器的地址和桶名;
(如下,simple桶下有这两个文件)
假如项目中,我们给用户提供了"文本文件.txt",那么服务器肯定会把下面这个URL响应给前端,包括了
MinIO服务器的地址和该文件所在的Bucket名,最后是文件名
;
现在如果这个地址被人通过抓包工具,抓包得到,那么就可以通过去掉文件名,直接获取到该Bucket下的所有文件清单,如下,可以看到该Bucket下的另一个文件(这是一个word文件.docx),这就有文件泄露的风险。
解决这个问题,可以通过修改Bucket配置,将
Access Policy
设置为
Custom
,并且去掉下面
Write Policy
中的这行配置;
去掉,保存;
重试,直接输入Bucket名就不行;
以上MinIO服务器部署在云服务上的CentOS系统上,MinIO为容器启动,版本为laster;
如果你使用的不是镜像容器启动,或者是其他操作系统下的,
可以参考这位博主的文章
;
文章目录前言
Minio
客户端的使用权限控制主流程测试Amazon S3 定义的操作:即各种权限配置
前文我们学习了
minio
的基本概念与搭建,那么如果我们有n个系统,n个系统都在使用同一套
minio
,那么如何来控制每个系统的
访问
权限呢???本文则重在解决此问题。
Minio
客户端的使用
MinIO
客户端快速入门指南
要
遍历
Minio
存储
桶
中的文件夹,你可以使用
Minio
客户端库或
Minio
的API来实现。下面以Python语言为例,演示如何
遍历
Minio
存储
桶
中的文件夹:
```python
from
minio
import
Minio
# 初始化
Minio
客户端
minio
_client =
Minio
(
endpoint="your-
minio
-endpoint",
access_key="your-access-key",
secret_key="your-secret-key",
secure=False # 如果使用HTTP而不是HTTPS,将secure参数
设置
为False
#
遍历
存储
桶
中的文件和文件夹
def list_objects(bucket_name, prefix=''):
objects =
minio
_client.list_objects(bucket_name, prefix=prefix, recursive=True)
for obj in objects:
print(obj.bucket_name, obj.object_name)
# 调用函数
遍历
文件夹
list_objects("your-bucket-name", "your-folder-prefix")
请将上述代码中的以下参数替换为你自己的信息:
- `your-
minio
-endpoint`:
Minio
服务器
的URL
- `your-access-key`:
Minio
的
访问
密钥
- `your-secret-key`:
Minio
的秘密密钥
- `your-bucket-name`:要
遍历
的存储
桶
名称
- `your-folder-prefix`:要
遍历
的文件夹路径前缀(可选)
这样,你就可以通过调用`list_objects`函数来
遍历
Minio
存储
桶
中的文件和文件夹。