MinIO 存储桶权限与 IAM 策略小记
简介
MinIO 存储桶有 public 和 private 两种权限:
public
:所有人都可以访问该桶的资源,包括桶内的文件内容和文件目录private
:所有人都无法直接访问该桶的资源,如果外部需要访问,只能通过外链(最长有效期7天)
MionIO 中的存储桶权限是一种较为简单的限制用户操作的方式,日常使用中,其缺点在于对用户操作的限制颗粒度不够细。
相较于存储桶权限,IAM 策略对操作的控制能力要灵活的多,但是相应的会稍微复杂一点。IAM 策略与存储桶权限配合可实现对存储桶操作的定制化控制。
存储桶权限十分简单明了,基本看一眼名字就能够理解了。本文主要记录 IAM 策略相关内容。
MinIO 服务器提供了一些内置的策略,即
writeonly
、readonly
和readwrite
,这些策略适用于所有服务器上的资源。例如 readwrite,应用该策略的用户或组将能够读写所以存储桶。
概述
从最基本的意义上说,策略包含以下元素:
Version(版本)
:标识策略的版本号,Minio 中一般为 “2012-10-17”。Statement(声明)
:描述策略的详细信息,包含 Effect(效果)、Action(动作)、Principal(委托人)、Resource(资源)和 Condition(条件)。其中Condition为可选。
关于 Statement
中字段的描述:
Resource(资源)
:存储桶、对象、访问点和作业是您可以允许或拒绝其权限的Amazon S3MinIO 资源。在策略中,您可以使用Amazon资源名称 (ARN) 来标识资源。Action(操作)
- 对于每个资源,Amazon S3MinIO 支持一组操作。通过使用操作关键字确定将允许(或拒绝)的资源操作。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}