代码改变世界

MinIO创建单个buckets的读写账号

2025-07-10 17:12  WilliamZheng  阅读(337)  评论(0)    收藏  举报


网上找了半天,要么是旧版本的,要么是不符和需求,干脆自己下山走一遍,顺便记录下来

一、需求

minio创建一个单buckets账号,这个账号只能上传查看下载其中一个名为“data-fenfa”的buckets,别的buckets都不见,也可以用图形化界面控制台登录,但是也只能看到“data-fenfa”的buckets。
MinIO版本是2023-07-21,部署方式K8s sts。
回顾:MinIO 的权限控制依赖于 访问密钥(Access Key) 和 策略(Policy) 的绑定。需通过命令行工具 mc 或 API 实现。

二、创建过程

1. 连接MinIO

由于我的MinIO是K8s sts部署,所以得进入pod执行mc命令创建名为myminio的别名(alias)

[root@minio-0 /]# mc alias set 'myminio' 'http://minio.datag-system.svc:9000' 'minioadmin' '<secret_key>'
Added `myminio` successfully.

2. 创建用户并绑定策略

1. 创建用户

[root@minio-0 /]# mc admin user add myminio data-fenfa <secret_key>

2. 创建一个 JSON 格式的策略文件 data-fenfa-policy.json,内容如下:

这里说下,由于MinIO 的pod里默认是没有vi命令的,这里csi用的是local-path,所以可以去pvc所在宿主机挂载的目录下创建文件,当然也可以用cat > 目标文件名 << EOF的方式创建

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

3. 上传策略并绑定用户

# 创建策略
mc admin policy create myminio data-fenfa-policy /data-fenfa-policy.json

# 将策略绑定到用户
mc admin policy attach myminio data-fenfa-policy --user=data-fenfa

三、验证权限

使用S3 Browser登录data-fenfa账号,只能查看上传下载data-fenfa桶。
使用MinIO Web登录data-fenfa账号,只能查看上传下载data-fenfa桶。