文章目录

  • 前言
  • Minio客户端的使用
  • 权限控制主流程
  • 测试
  • Amazon S3 定义的操作:即各种权限配置
  • 分布式集群权限配置
  • 总结

前言

前文我们学习了minio的基本概念与搭建,那么如果我们有n个系统,n个系统都在使用同一套minio,那么如何来控制每个系统的访问权限呢???本文则重在解决此问题。

Minio客户端的使用

首先我们得先学习一下Minio客户端的使用,因为权限控制是在客户端下使用的。MinIO客户端快速入门指南

MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。简单来说就是命令行控制minio的操作,如本文的添加权限控制。

相关命令:

  • ls 列出文件和文件夹。
  • mb 创建一个存储桶或一个文件夹。
  • cat 显示文件和对象内容。
  • pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。
  • share 生成用于共享的URL。
  • cp 拷贝文件和对象。
  • mirror 给存储桶和文件夹做镜像。
  • find 基于参数查找文件。
  • diff 对两个文件夹或者存储桶比较差异。
  • rm 删除文件和对象。
  • events 管理对象通知。
  • watch 监听文件和对象的事件。
  • policy 管理访问策略。
  • session 为cp命令管理保存的会话。
  • config 管理mc配置文件。
  • update 检查软件更新。
  • version 输出版本信息。

1.下载mc客户端:mc

2.使用
将mc文件放入目录,我这里跟minio文件放在一起。
在mc文件存在目录下:
给mc添加执行权限:chmod +x mc
执行:./mc version

权限控制主流程

简述流程:

  • 创建策略
  • 创建策略配置文件
  • 把策略配置文件与策略关联
  • 创建用户
  • 把权限策略与用户关联

1.首先执行一下几个命令:

  1. ./mc config host list:查看主机的mc配置。我们可以看到本地minio访问地址local:http://localhost:9000
  2. 这里显示的配置信息,其实也就是 /root/.mc目录下的config.json配置文件的信息。这个目录会在初次使用mc客户端命令的时候自动生成。

2.添加策略,并给访问策略执行策略配置

  • 给local创建别名为sxdb,用户名密码为admin 12345678。这里的为minio.service配置文件配置的用户名和密码
    ./mc config host add sxdb http://localhost:9000 admin 12345678

    再执行一下./mc config host list查看mc配置,可以看到新增一个一条

  • 创建自定义策略配置文件 testPolicy1.json
    touch testPolicy1.json

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["s3:ListAllMyBuckets","s3:ListBucket","s3:GetBucketLocation","s3:GetObject","s3:DeleteObject"],"Resource": ["arn:aws:s3:::testpolicy1/*"]}]
}
名称 作用
Version 版本,这个不能随便写,看着是日期。其实随便写了后会失效
Effect Allow或者deny,允许或者拒绝下面配置的访问权限
Action 配置权限,上传,删除,下载等等的权限
Resource 配置权限的作用范围,这里配置的是只能控制testpolicy1这个桶
  • 给策略sxdb设置策略配置文件json
    设置前先看一看当前sxdb的权限,可以看到默认readonly,readwrite,writeonly三个权限
    ./mc admin policy list sxdb

    给策略别名sxdb添加自定义策略配置:./mc admin policy add sxdb test1 testPolicy1.json

3.添加用户
给策略别名,添加一个用户testuser1 ,密码为a12345678。这个密码不能太短会报错如图所示。指定这个用户的权限策略为刚刚添加的test1
./mc admin user add sxdb testuser1 a12345678 test1

4.给用户设置访问策略
给用户testuser1,添加test1权限策略
./mc admin user set-policy sxdb testuser1 test1

5.如果有更改策略配置json文件,则可以重新执行如下:
./mc admin user set-policy sxdb testuser1 test1
./mc admin policy add sxdb test1 testPolicy1.json

测试

  1. 用minio.service配置的用户名密码(管理员)登录,建桶testpolicy1,testpolicy1

  2. 更改权限配置文件把删除的权限去掉,添加上传权限

  3. 重新执行命令,重新加载:
    ./mc admin policy add sxdb test1 testPolicy1.json

  4. 换自己创建的用户testuser1 a12345678登录,进行上传,删除操作



加上删除权限:



可以看到文件已经没了。但是不知道小伙伴们有没有发现,明明管理员登录创建了2个桶,为什么这个用户testuser1只看到了一个桶??
当然是作了权限控制:
这里只给用户testuser1设定了testpolicy1的访问资源

做一下更改:

再看一看,这是就2个桶都有了

Amazon S3 定义的操作:即各种权限配置

Amazon S3 的操作、资源和条件键
如图所示:

这里简单罗列一下:

名称 作用
GetObject 下载对象
ListBucket 查看桶内的对象列表
ListAllMyBuckets 查看所有的桶列表
PutObject 上传对象
DeleteObject 删除对象
AbortMultipartUpload 授予权限以中止分段上传

分布式集群权限配置

笔者对分布式下集群的权限配置做了模拟,发现如下:
1.只需要在一个节点创建用户,创建策略。其他节点能够使用该用户登录界面,且该用户拥有相应的权限。但是这个节点mc命令行里面是找不到用户和策略配置的
疑问:分布式集群下,需要在其他节点都重新创建用户配置权限吗???

总结

// 查看mc配置
./mc config host list// 提供minio.service账号密码,创建策略别名sxdb
./mc config host add sxdb http://localhost:9000 admin 12345678// 查看策略sxdb的权限列表
./mc admin policy list sxdb // 给策略sxdb添加自定义策略权限文件testPolicy1.json,名字为test1
./mc admin policy add sxdb test1 testPolicy1.json// 添加用户,账号密码为testuser1  a12345678,与权限策略test1绑定
./mc admin user add sxdb testuser1 a12345678 test1// 查询别名sxdb下面的所有用户状态
./mc admin user list sxdb// 给用户testuser1 设置权限策略test1
./mc admin user set-policy sxdb testuser1 test1// 启用用户testuser1
./mc admin user enable sxdb testuser1 // 禁用用户testuser1
./mc admin user disable sxdb testuser1

上一篇:Minio(一) | 搭建Minio服务器(单节点)

下一篇:Minio(三) | Minio分布式集群搭建

Minio(二) | Minio多用户权限控制相关推荐

  1. AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制

    AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念.但是很多同学在使用过后都提出了需要多用户支持的建议.整个团队或者整个公司都使用同一个密码来管理非常的 ...

  2. Web应用程序系统的多用户权限控制设计及实现-总述【1】

    中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. ...

  3. springboot-29-security(二)用户角色权限控制

    本博客基于上一个 http://www.cnblogs.com/wenbronk/p/7379865.html 增加了角色的权限表, 可以进行权限校验 一, 数据准备 1, 数据表建立 /* Navi ...

  4. Web应用程序系统的多用户权限控制设计及实现-首页模块【5】

    首页模块就是展示不同权限的最终结果了,在阅读这章之前若有些不明白,可看看后续的单独的权限模块,用户模块,目录模块后从整体上再看首页模块. 阅读该模块需要一定或者是比较熟练的js知识,EasyUI Ta ...

  5. vue实现页面权限显示_Vue 实现前端权限控制

    登录&&权限流程图 前言 首先我们确定的权限控制分为三大部分,其中根据粒度大小分的更细: 登录权限控制 页面权限控制 菜单中的页面是否可以被访问 页面中的按钮 (增.删.改.查)的权限 ...

  6. linux权限s的作用,lqc|_高级权限控制之su、sudo、特殊权限s及t位、facl

    实验二:高级权限控制之su.sudo.特殊权限s及t位.facl 1)su切换用户 a.su的基本用法: su - u01 ##root-->u01,不需要密码 su - 或su - root ...

  7. (后台管理系统的权限控制与管理)

    此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理,建议搭配视频教程一起食用效果更佳 在Web 系统中,权限很久以来一直都只是后端程序所控制的. 为什么呢? 因为Web 系统的本质 ...

  8. 自定义jsp标签实现按钮权限控制

    一.了解jsp自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对tag handler的对象的操作,即当servlet执行时Web ...

  9. 前端面试必问(后台管理系统的权限控制与管理)

    此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理,建议搭配视频教程一起食用效果更佳 在Web 系统中,权限很久以来一直都只是后端程序所控制的. 为什么呢? 因为Web 系统的不质 ...

最新文章

  1. linux网络编程面试题,完美收官!字节4面斩下2-2Offer
  2. QString之arg用法
  3. sqoop将hive导出到mysql_Sqoop hive导出到mysql[转]
  4. python教程很详细_Python编程入门教程:从入门到高级,非常详细
  5. 唏嘘!2019榜单出炉:铁打的Python连续3年第一,它居然跌出前十?
  6. Python实战之子进程
  7. 动态规划—代码查重实验
  8. 3dmax塌陷在哪里?怎么用?
  9. 最新互联网架构师视频教程+源码20G
  10. Keil5新建工程小白指南
  11. 【直播笔记】在临床研究中,如何利用SAS做更好的统计报表输出
  12. 节假日读取接口_2018年节假日API接口,直接计算好的
  13. python中4j_GitHub - Byron4j/PythonVeterans: Python新手到老鸟的历程;基于Python 3.6
  14. VR/AR的需求和前景
  15. 全球与中国聚 (3,4-亚乙基二氧噻吩) (PEDOT)市场“十四五”规划及远景目标的建议报告2022-2028年
  16. 多通路fpga 通信_【论文精选】基于FPGA的EtherCAT从站通信链路分析与验证
  17. 【Derivation】任何矩阵都相似与Jordan标准形证明
  18. 云存储,下一个浪潮之巅,看云存储格局之变
  19. 舒尔特方格训练注意力游戏 | 舒尔特Pro
  20. H3C WX2510h无线控制器如何网关式部署无线网络

热门文章

  1. try 和finally
  2. WordPress eXtended Rss (WXR)文件格式解析
  3. 伪随机数与随机数种子
  4. EXCEL-职业版本(1)
  5. BC50 计算单位阶跃函数
  6. Springer期刊 latex投稿经验分享(包含latex模板)
  7. VulnHub FunBox Writeup
  8. git config 命令详解
  9. 游戏夜读 | 记忆里的老游戏
  10. Android各个版本名称与版本号对照表