minio 客户端修改访问策略
2024-01-05/2024-01-05
背景
前端时间听前辈谗言,搭了个Minio服务用来存储文件,在设置存储桶权限时为了图方便直接写上了PUBLIC ,其实是没有好好研究权限这一块。
前两天省公司检测出服务器漏洞,访问存储桶的根路径会展示出文档树,把文件资源全暴露了。因为机器只开了一个端口,所以只能在客户端修改了。
访问策略描述
以下是官网的一份策略文件描述
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [ "s3:<ActionName>", ... ],
"Resource" : "arn:aws:s3:::*",
"Condition" : { ... }
},
{
"Effect" : "Deny",
"Action" : [ "s3:<ActionName>", ... ],
"Resource" : "arn:aws:s3:::*",
"Condition" : { ... }
}
]
}
- 对于
Statement.Action数组,指定一项或多项的API操作,官网有详细描述。S3 API操作,这也是我们主要关注的点。 - 对于
Statement.Resource键,指定要限制策略的存储桶或存储桶前缀。 - 对于
Statement.Condition键,您可以指定一个或多个支持的 Conditions。
因为服务器只有一个用户,且需要查看文件为根路径以下,所以本文只针对第一点API做处理,这边简单介绍几个API
s3:*
简单,所有权限s3:CreateBucket
创建桶的权限s3:DeleteBucket
删除桶的权限s3:ForceDeleteBucket
强制删除非空的桶s3:GetBucketLocation
对桶拥有读权限的用户可以执行获取桶区域位置信息的操作。s3:ListAllMyBuckets
获取指定账号下所有的存储桶列表s3:DeleteObject
删除对象s3:GetObject
获取、下载对象- s3:PutObject
上传文件/生成文件上传链接 - s3:
ListBucket
获取桶下所有文件
更多请参考S3 API操作
那么,不难发现,出现这一问题就是因为当权限设置为PUBLIC时,存在ListBucket权限,导致这一情况。
修改访问策略
去掉 ListBucket权限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::ifamily"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::test/*"
]
}
]
}
- 将文件上传服务器并命名为
testPolicy.json,注意必须为JSON格式文件。 - 更新桶策略,这里采用
mc命令,参考官网
mc anonymous set-json ~/testPolicy.json myminio/mydata
成功

访问存储桶的根路径

访问单张文件路径

完美解决了
后记
感觉对于客户端修改权限网上的资料有点老旧,也不完全,写下来对以后的小伙伴也有个参考