Bootstrap

Minio(二) | Minio多用户权限控制

前言

        前文我们学习了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版本,这个不能随便写,看着是日期。其实随便写了后会失效
EffectAllow或者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分布式集群搭建

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;