minio几种访问策略

本文介绍了MinIO存储系统的访问策略设置方法,包括桶策略和用户策略。详细解释了public、custom、private等策略的应用场景,并提供了Java API示例用于设置和查询桶策略。此外,还阐述了如何利用IAM为用户分配不同级别的访问权限。
摘要由CSDN通过智能技术生成

minio访问策略设置分两种:

  • 桶策略
  • 用户策略

一、web端设置桶策略

桶的创建者拥有管理桶的权限,其他未授权用户不可管理桶
在这里插入图片描述

桶默认可以有三种Access Policy策略:
public、custom、private

1.1、public

设置桶权限为public
在这里插入图片描述

不经过任何认证可以直接访问资源
在这里插入图片描述

1.2、custom

这种Access Policy策略是通过如下自定义Access Rules出现的

1.1.1、readonly

可以设置资源不经过授权,只能读取
在这里插入图片描述

在这里插入图片描述

1.1.2、writeonly

资源不经过授权,只能写入
在这里插入图片描述

1.1.3、readwrite

资源不经过授权,可读可写
在这里插入图片描述

1.3、private

桶设置为private后,未经授权不能进行任何操作,所有Access Rules失效


在这里插入图片描述

二、java程序设置桶策略

2.1、API设置桶策略

setBucketPolicy

  • 策略json可在web端查看与编写
/**
     * 设置桶策略
     * @param builder 策略json
     * @param bucketName 桶名称
     */
    @SneakyThrows(Exception.class)
    public static void createBucketPolicy(StringBuilder builder, String bucketName) {
        if(builder.length()==0) builder=defaultBucketPolicy(bucketName);
        minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(builder.toString()).build());
    }

    /**
     * 获取默认桶策略
     * @param bucketName
     * @return
     */
    private static StringBuilder defaultBucketPolicy(String bucketName){
        StringBuilder builder=new StringBuilder();
        builder.append("{\n" +
                "  \"Version\": \"2012-10-17\",\n" +
                "  \"Statement\": [\n" +
                "    {\n" +
                "      \"Effect\": \"Allow\",\n" +
                "      \"Action\": [\n" +
                "                \"s3:ListAllMyBuckets\",\n" +
                "                \"s3:ListBucket\",\n" +
                "                \"s3:GetBucketLocation\",\n" +
                "                \"s3:GetObject\",\n" +
                "                \"s3:PutObject\",\n" +
                "                \"s3:DeleteObject\"\n" +
                "      ],\n" +
                "      \"Principal\":\"*\",\n" +
                "      \"Resource\": [\n" +
                "        \"arn:aws:s3:::"+bucketName+"/*\"\n" +
                "      ]\n" +
                "    }\n" +
                "  ]\n" +
                "}");
        return builder;
    }

2.2、API查看桶策略

    /**
     * 查看桶策略
     * @param bucketName
     * @return
     */
    @SneakyThrows(Exception.class)
    public static String queryBucketPolicy(String bucketName) {
        String bucketPolicy = minioClient.getBucketPolicy(GetBucketPolicyArgs.builder().bucket(bucketName).build());
        logger.info(bucketPolicy);
        return bucketPolicy;
    }

三、web端设置用户策略

3.1、策略概念及语法

策略(policy):IAM(Identity and Access Management)最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetObject",
				"s3:PutObject",
                "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::testpolicy1/*"
      ]
    }
  ]
}

参数说明
Version标识策略的版本号,Minio中一般为"2012-10-17"
Statement策略授权语句,描述策略的详细信息,包含Effect(效果)、Action(动作)、Principal(用户)、Resource(资源)和Condition(条件)。其中Condition为可选
EffectEffect(效果)作用包含两种:Allow(允许)和Deny(拒绝),系统预置策略仅包含允许的授权语句,自定义策略中可以同时包含允许和拒绝的授权语句,当策略中既有允许又有拒绝的授权语句时,遵循Deny优先的原则。
ActionAction(动作)对资源的具体操作权限,格式为:服务名:资源类型:操作,支持单个或多个操作权限,支持通配符号*,通配符号表示所有。例如 s3:GetObject ,表示获取对象
ResourceResource(资源)策略所作用的资源,支持通配符号*,通配符号表示所有。在JSON视图中,不带Resource表示对所有资源生效。Resource支持以下字符:-_0-9a-zA-Z*./\,如果Resource中包含不支持的字符,请采用通配符号*。例如:arn:aws:s3:::my-bucketname/myobject*\,表示minio中my-bucketname/myobject目录下所有对象文件。
ConditionCondition(条件)您可以在创建自定义策略时,通过Condition元素来控制策略何时生效。Condition包括条件键和运算符,条件键表示策略语句的Condition元素,分为全局级条件键和服务级条件键。全局级条件键(前缀为g:)适用于所有操作,服务级条件键(前缀为服务缩写,如obs:)仅适用于对应服务的操作。运算符与条件键一起使用,构成完整的条件判断语句。

3.2、系统默认策略

权限描述
consoleAdmin控制台管理员
diagnostics诊断
readonly只读
readwrite读写
writeonly只写

3.3、自定义策略

在这里插入图片描述

3.4、为用户添加策略

  • 直接为用户指定策略

在这里插入图片描述

  • 为用户指定用户组,用户组设置策略
    在这里插入图片描述

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑谈子云亭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值