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、为用户添加策略

  • 直接为用户指定策略

在这里插入图片描述

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

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐