2023-05-18 19:06:21 457阅读
本文档介绍怎样使用mc client客户端,通过命令在minio中创建多个用户,且为不同的用户分配不同的访问策略的步骤及每个步骤的相关说明
minio的访问策略由policy文件进行描述,一个新的policy文件的模板如下:
"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" : { ... }以下是对上述每个字段的描述
Version字段代表的是policy描述文件遵守的版本,有2008-10-17和2012-10-17两个可选值,我们用2012-10-17即可。
描述该policy的详细规则,他是一个数组的形式,支持多种规则的灵活组合
描述该规则的类型,有两个可选项:Allow 和 Deny,Allow代表该规则是放行规则,Deny代表该规则是拦截规则
数组类型,描述操作,其中,可以使用s3:* 通配所有权限。
目前常用的操作摘录如下:
其他更详细的操作类型,可以见文章最后的参考链接
resource用于描述这个策略控制的资源,均以arn:aws:s3:::开头,以下是几个例子:
condation字段用于描述该策略的生效条件,一般不作配置,具体可设置的生效条件,可参见以下链接:
https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/reference_policies_elements_condition.html
以下是一个policy文件的实例
"Version" : "2012-10-17", "Statement" : [ "Effect" : "Allow", "Action" : [ "s3:ListBucket","s3:ListAllMyBuckets"], "Resource" : "arn:aws:s3:::*" "Effect" : "Allow", "Action" : [ "s3:GetObject","s3:GetBucketLocation"], "Resource" : "arn:aws:s3:::testbucket/*" "Effect" : "Deny", "Action" : [ "s3:GetObject","s3:GetBucketLocation"], "Resource" : "arn:aws:s3:::testbucket/20230504*"上述的policy文件依次表示:
接下来,我们需要创建一个用户,并给这个用户授权,以让这个用户能访问特定的资源,以下操作我们使用minio的官方客户端mc
需要说明的是: 由于minio的admin接口分为/v1,/v2,/v3等多个版本,所以必须使用和服务端配套的mc客户端使用,不能用高版本的mc客户端访问低版本的minioserver,否则可能无法正确处理admin指令,下文的演示以使用admin v1接口的版本举例,其他版本的使用命令也是类似的,只是内部真正发起的请求地址不一样:
最新版本的minioserver使用的是/v3的admin接口,最新版本的操作可参考官方文档,具体可见文章最后的参考链接
参照上文的说明,配置好访问策略后,我们需要新建访问策略:
[root@local /]# mc admin policy add minio_alias testpolicy "/tmp/policy.json"
Added policy `testpolicy` successfully.
上述命令的minio_alias是mc客户端里设置的minio别名,testpolicy是新建的访问策略名称,最后的路径是配置好的策略规则所在的文件全路径
上述命令实际上是往minio服务端发起请求:PUT /minio/admin/v1/add-canned-policy?name=testpolicy
[root@local /]# mc admin user add minio_alias testuser1 pwd1 testpolicy
Added user `testuser1` successfully.
上述命令的minio_alias是mc客户端里设置的minio别名,testuser1是用户名,pwd1是密码,testpolicy是授予给这个用户的访问策略
上述命令实际上是往minio服务端发起请求:PUT /minio/admin/v1/add-user?accessKey=testuser1
当我们需要修改用户的初始策略时,可以通过这个命令修改:
[root@local /]# mc admin user policy minio_alias testuser1 testpolicy
Set a policy `testpolicy` for user `testuser1` successfully.
上述命令实际是是往minio服务端发起请求:PUT /minio/admin/v1/set-user-policy?accessKey=testuser1&name=testpolicy
需要注意的是,在最新版本的minio server及mc客户端里,修改用户策略的是:
[root@local /]# mc admin policy detach minio_alias oldpolicy --user testuser1
[root@local /]# mc admin policy attach minio_alias testpolicy --user testuser1
当我们需要删除原来的访问策略时,可以执行以下命令进行修改:
如果是修改访问策略的话,我们可以直接新建同名的访问策略即可,minio会进行覆盖。
[root@local /]# mc admin policy remove minio_alias testpolicy
Removed policy `testpolicy` successfully.
上述命令实际上是往minio服务端发起请求:DELETE /minio/admin/v1/remove-canned-policy?name=testpolicy
参考链接:
https://min.io/docs/minio/linux/reference/minio-mc-admin.html
https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/reference_policies_elements_condition.html
版权声明:本文内容系天翼云实名用户自发贡献,版权归原作者所有,天翼云开发者社区不拥有其著作权,亦不承担相应法律责任,未经许可,不得转载。
如有疑问或争议,请联系ctyunbbs@chinatelecom.cn删除。