默认情况下直接访问MinIO的桶URL会直接列出桶内内容,本文将指引关闭该权限。
新版本
较新的版本中可以直接在后台编辑桶的权限,直接修改保存即可。
测试版本:
RELEASE.2025-02-18T16-25-55Z
(commit-id=90f5e1e5f62cbc47be6d0a3ca0634bfd84c2248c
)
直接打开会展示桶内文件列表:
- 打开MinIO控制台,定位到桶管理页面
- 将桶权限修改为
Custom
,然后编辑下方Json,删除"s3:ListBucket",
,保存后退出。 - 此时再访问桶URL不会得到文件列表。
旧版本
旧版本Console没有直接修改桶Custom权限的位置,这时就需要借助第三方工具。
测试版本:
RELEASE.2021-10-27T16-29-42Z
。
直接打开会展示桶内文件列表:
使用S3 Broswer设置桶权限
- 下载S3 Broswer,安装。
- 添加桶。
- 右键需要修改的桶,编辑桶权限。
- 移除
"s3:ListBucket",
后保存即可。 - 此时再访问桶URL不会得到文件列表。
使用MinIO Client设置桶权限
MinIO Client版本:RELEASE.2025-02-15T10-36-16Z。
该方法新版本MinIO也可用。
- 下载MinIO Client(mc):
1
2curl https://dl.min.io/client/mc/release/linux-amd64/mc -O mc
chmod +x mc - 添加MinIO服务别名例如:
1
./mc alias set [ALIAS] [API ENDPOINT] [USERNAME] [PASSWORD]
1
./mc alias set myminioservice http://192.168.110.42:9000 myminioadmin myminiopassword
- 将桶访问策略设置为Public:此时访问桶URL时会展示文件列表:
1
./mc anonymous set public myminioservice/room2
- 获取当前桶策略json:将输出的json存入
1
./mc anonymous get-json myminioservice/room2
room2.json
文件中,然后将文件中的"s3:ListBucket",
都移除,保存退出。 - 将修改好的json应用到桶:
1
2[root@localhost opt]# ./mc anonymous set-json room2.json myminioservice/room2
Access permission for `myminioservice/room2` is set from `room2.json` - 此时再访问桶URL不会得到文件列表:
1
2
3[root@localhost ~]# curl http://192.168.110.42:9000/room2
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied.</Message><BucketName>room2</BucketName><Resource>/room2</Resource><RequestId>1826D6EED936E163</RequestId><HostId>cd1ffdf0-8f33-4125-82ad-e128f9364cc9</HostId></Error>