前言
在centos7完成对minio的搭建部署后(centos7部署minio链接),需要进行权限控制,于是参考官方文档准备通过minio client指令来编写权限控制,但是当我执行指令:
mc config host add sxdb http://localhost:9000 admin 1234567
返回了错误:
mc: <ERROR> Unable to initialize new alias from the provided credentials. Get "http://localhost:9000/probe-bucket-sign-pmxj0te6ga6x/?location=": dial tcp [::1]:9000: connect: connection refused.
查遍全网资料无果,后来发现目前下载的minio的已经实现通过网页端来编辑权限了,可能在该版本取消了mc,于是就有了后文。
1.
启动minio服务后访问http://服务的ip地址:9000/,新建两个篮子(bucket),里面随便放点东西
2.
新建两个用户
3.
下面这个页面就是用来编写权限的,点击create policies,在Write Policy里就是用来写权限的,
具体格式如下
{
"Version": "2012-10-17", #这个日期就这样吧,虽然比较老
"Statement": [
{
"Effect": "Allow",
"Action": [ // 权限列表
"s3:ListAllMyBuckets", // 查看所有的桶权限
"s3:ListBucket", // 查看桶内对象权限
"s3:GetBucketLocation", // 定位bucket权限
"s3:GetObject", // 下载权限
"s3:PutObject", // 上传权限
"s3:DeleteObject" // 删除权限
],
"Resource": [
"arn:aws:s3:::onebucket/*" // arn:aws:s3不用动,后面用*表示所有桶,用onebucket/*表示只针对这个桶
]
}
]}
(这些步骤本来都是通过mc指令实现的)
下面的json实现了对所有篮子的读写
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
下面的json实现了读写test、读test2目录但无下载权限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::test/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::test2/*"
]
}
]
}
4.
编写完权限后回到user界面,点击要给与权限的用户
如下图点击Policies后点击Assign Policies
选择需要给的权限
要确保右上角的状态是enabled才会生效,如果是disabled则需要点机一下来切换
5.
最后点击登出切换到刚刚配置过的用户来验证一下是不是生效了,这里就不演示了,要注意的是如果没有新增权限,新增按钮还能点击但是会有提示access denied,如果没有文件下载权限,文件能下载但是下载下来只有0kb。(感觉这部分官方没做完,等官方更新吧)
遗留问题:
测试了给二级目录增加权限(像"arn:aws:s3:::test/二级目录/*"这样子),但是没有效果,有大佬知道的话麻烦留个言Orz