MinIO 存储桶权限与 IAM 策略小记

5 minute read

简介

MinIO 存储桶有 public 和 private 两种权限:

  • public:所有人都可以访问该桶的资源,包括桶内的文件内容和文件目录
  • private:所有人都无法直接访问该桶的资源,如果外部需要访问,只能通过外链(最长有效期7天)

MionIO 中的存储桶权限是一种较为简单的限制用户操作的方式,日常使用中,其缺点在于对用户操作的限制颗粒度不够细。

相较于存储桶权限,IAM 策略对操作的控制能力要灵活的多,但是相应的会稍微复杂一点。IAM 策略与存储桶权限配合可实现对存储桶操作的定制化控制。

存储桶权限十分简单明了,基本看一眼名字就能够理解了。本文主要记录 IAM 策略相关内容。

MinIO 服务器提供了一些内置的策略,即 writeonlyreadonlyreadwrite,这些策略适用于所有服务器上的资源。例如 readwrite,应用该策略的用户或组将能够读写所以存储桶。

概述

从最基本的意义上说,策略包含以下元素:

  • Version(版本):标识策略的版本号,Minio 中一般为 “2012-10-17”。
  • Statement(声明):描述策略的详细信息,包含 Effect(效果)、Action(动作)、Principal(委托人)、Resource(资源)和 Condition(条件)。其中Condition为可选。

关于 Statement 中字段的描述:

  • Resource(资源):存储桶、对象、访问点和作业是您可以允许或拒绝其权限的 Amazon S3 MinIO 资源。在策略中,您可以使用 Amazon 资源名称 (ARN) 来标识资源。
  • Action(操作) - 对于每个资源,Amazon S3 MinIO 支持一组操作。通过使用操作关键字确定将允许(或拒绝)的资源操作。
  • Effect(效果):当用户请求特定操作时的效果,可以是允许或拒绝。如果未显式授予对资源的访问权限(允许),则隐式拒绝访问。可以显式拒绝对资源的访问,以确保用户拒绝用户访问,即使其它策略授予访问权限也是如此。
  • Principal(委托人):允许访问语句中的操作和资源的组或用户。在存储桶策略中,委托人是作为此权限接收者的用户、组、服务或其他实体。
  • Condition(条件):策略生效的条件。您可以使用 AWS 范围的密钥和特定于 Amazon S3 的密钥在 Amazon S3 访问策略中指定条件。

Action 所有可选操作详见:https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/list_amazons3.html

示例

以下示例 IAM 策略授予了对 cloud 存储桶的只读权限:

 1{
 2    "Version": "2012-10-17",
 3    "Statement": [
 4        {
 5            "Effect": "Allow",
 6            "Action": [
 7                "s3:GetBucketLocation",
 8                "s3:GetObject"
 9            ],
10            "Resource": [
11                "arn:aws:s3:::cloud/*"
12            ]
13        }
14    ]
15}

参考资料