Linux操作Minio客户端创建多用户、多策略

前言

虽然docker里面可以安装minio客户端,但是在docker的Minio客户端容器里面,有很多常用命令不能使用,而且minio客户端就是一些mc命令,完全不需要放到docker容器里面,去启动,进入容器,操作策略,用户等,太麻烦。直接下载mc文件添加执行权限就可以使用了

Minio服务,客户端安装可以看我另外博客
docker安装Minio服务
docker安装Minio客户端

安装

1、使用wget命令安装mc命令

wget https://dl.min.io/client/mc/release/linux-amd64/mc -P /usr/local/bin/

2、给路径下的mc添加执行权限

chmod +x /usr/local/bin/mc

3、绑定自己Linux上或者docker上的Minio服务
示例

// 从MinIO服务获得URL、access key和secret key。
// API签名是可选参数,默认情况下,它被设置为"S3v4"。
mc config host add minio http://xxx.xx.xx.xxx:9010 minioxxx minioxxx --api S3v4

在这里插入图片描述
4、测试是否绑定Minio服务

mc ls minio

在这里插入图片描述
可以看到我的Minio就两个桶,而且都没有东西

客户端安装好之后,就正式进入了我们的多用户,权限的创建了

查看信息

1、查看配置信息

// 查看配置信息
mc alias list

在这里插入图片描述
这个minio就是我们当前的策略,里面对应了服务路径,以及账户密码
这里显示的配置信息,其实也就是 /root/.mc目录下的config.json配置文件的信息。这个目录会在初次使用mc客户端命令的时候自动生成。

2、查看minio当前策略的权限

mc admin policy list minio

在这里插入图片描述
这里分别代表的意思是

readwrite     // 读写
writeonly     // 只写
consoleAdmin  // 控制台管理员
diagnostics   // 诊断
readonly      // 只读

以上都是Minio策略的权限

自定义策略权限

MinIO默认的权限管理策略只有writeonlyreadonlyreadwrite,而且是针对所有的的,要实现对不同的桶进行不同的权限管理,需要使用自定义策略
使用mc admin policy创建策略。可以在/root/.mc目录中创建一个json文件
比如我们业务中,有很多的系统,可以根据业务系统的不同,创建不用的业务账号,做到数据隔离的作用

1、添加策略,并给访问策略执行策略配置
如:
我们创建一个zlbucket.json。即表示我们要设置只能操作一个桶的一个账户。
我们先创建zlbucket.json策略文件,内容如下:
在自定义/www/docker/minio/custom_strategy目录下,创建 touch zlbucket.json
在这里插入图片描述

加入下面配置信息
在配置文件中,是不允许加入 "//注释"注释的,否则会报错
所以在zlbucket.json文件中添加下面json的时候需要去掉注销

示例
{
  "Version": "2012-10-17",	// 版本,按照官方的
  "Statement": [
    {
      "Effect": "Allow",		// Allow或者deny,允许或者拒绝下面配置的访问权限
      "Action": [				// 配置权限,上传,删除,下载等等的权限
        "s3:GetBucketLocation", // 授予权限以返回 Amazon S3 存储桶所在的区域 文章底下会详解
		"s3:GetBucketPolicy",   // 授予权限以返回指定存储桶的策略 文章底下会详解
		"s3:ListBucket",		// 查看桶权限
		"s3:GetObject",			// 下载权限
		"s3:PutObject",			// 上传权限
		"s3:DeleteObject"		// 删除权限
      ],
      "Resource": [					// 配置权限的作用范围
        "arn:aws:s3:::image-zl/*","arn:aws:s3:::image-xx/*"	// arn:aws:s3不用动,*表示权限作用于image-zl这个桶下的所有数据,加逗号可以写多个桶
      ]
    }
  ]
}

3、增加新策略
在zlbucket.json加入上面去掉注释后的策略
这里的策略我是限制了只能操作image-zl桶

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketPolicy",
"s3:ListBucket",	
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::image-zl/*"
],
"Sid": ""
}
]
}

4、给Minio增加自定义策略

                          // 策略别名
mc admin policy add minio zlbucket /www/docker/minio/custom_strategy/zlbucket.json
/**
这里注意,不同用户用同一策略别名zlbucket 没问题
如果zlbucket.json有所修改,请更换别名
*/

在这里插入图片描述
这里有个疑问
在这里插入图片描述
我在zlbucket.json里面将"Version": 设置为"2021-04-23",会报错,
直译:mc:<错误>无法解析输入策略:无效的版本’2021-04-23’
后面看到官方文档是用2012-10-17,不知道为什么只能用这个,知道的小伙伴可以评论底下告诉我,多谢

5、给Minio增加策略后检查是否加入

查看权限
mc admin policy list minio

在这里插入图片描述

6、给minio增加用户

mc admin user add minio adminzl adminzlxxxx

在这里插入图片描述
7、检查是否新增成功

// 查看minio用户
mc admin user list minio

在这里插入图片描述

8、给新用户增加我们自定义的权限

// 使用mc admin policy set 给用户名为 user=adminzl 的用户添加 权限:zlbucket 权限策略
mc admin policy set minio zlbucket user=adminzl

在这里插入图片描述
9、后续修改或者新增自定义策略,重复上面4、6步骤即可

测试

1、登录

给新用户增加后,在网页访问自己Minio服务,输入自己加的用户账号密码
在这里插入图片描述
adminzl账户登录成功后,只能看到一个image-zl桶 ListBucket权限

2、操作
1)PutObject:上传
在这里插入图片描述
2)下载
在这里插入图片描述
3)删除

没权限的情况下
1)创建桶
在这里插入图片描述
策略里面的权限只能对image-zl桶进行查看,上传、下载、删除操作

连接

java代码连接Minio后,会出现Access Denied
在这里插入图片描述
这是因为没有权限访问,需要开启对应的权限,也就是GetBucketLocation命令,它的作用授予可以访问桶的权限,可以让java代码对桶进行上传操作

进行上传操作,会出现
在这里插入图片描述
这是因为,image-zl这个桶,默认的是可读,不可写,java自然无法访问到资源进行上传
后面我在官方的Action权限里面看到GetBucketPolicy命令,给用户授予操作桶读写权限,所以在zlbucket.json里面加入GetBucketPolicy命令

流程图

在这里插入图片描述

相关命令

命令作用
mc admin user disable myminio newuser禁用用户
mc admin user remove myminio newuser删除用户
mc admin user list myminio列出所有启用和禁用的用户

本文只是介绍了怎么创建多个用户和策略,还只是Minio里面的冰山一角,更多功能请看

官方文档

Action权限
MinIO多用户快速入门指南

有疑问和不懂的欢迎评论区留言,感谢你们的阅读

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值