Minio 私有策略配置指南
🥧本文是一篇针对于minio资源进行私有化进行配置的教程
一、引言
Minio 是一个高性能的对象存储服务器,在实际应用中,为了保障数据的安全性和隐私性,常常需要配置私有策略,限制对存储桶及对象的访问。本文将详细介绍 Minio 私有策略的配置方法。
二、Minio 策略基础概念
(一)策略语言 Minio 使用一种类似 JSON 的策略语言来定义访问权限。策略由一系列语句(Statement)组成,每个语句包含效果(Effect)、主体(Principal)、操作(Action)和资源(Resource)等关键元素。
- Effect:取值为 “Allow” 或 “Deny”,表示允许或拒绝相应的操作。
- Principal:定义策略应用的对象,可以是特定用户、用户组或通配符(如 “*” 代表所有主体)。
- Action:指定允许或拒绝的操作,例如 “s3 : GetObject”(获取对象)、“s3 : PutObject”(上传对象)等。
- Resource:明确策略作用的资源,如特定的存储桶或对象路径。
(二)作用范围 策略可以应用于整个 Minio 服务器,也可以针对特定的存储桶或对象子集。例如,你可以创建一个策略,只允许特定用户访问某个存储桶,而禁止其他用户的任何操作。
三、配置私有策略的步骤
(一)登录 Minio 控制台
打开浏览器,输入 Minio 服务器的地址,使用管理员账号和密码登录到 Minio 控制台。
(二)创建策略
-
在控制台左侧导航栏中,点击 “Administrator -> Buckets”。
-
选择需要配置的桶 “Access Policy:”(策略)选项卡,然后点击 “Change Access Policy”(更改访问策略)按钮。
-
在策略编辑器“Change Access Policy”中,将“Access Policy”策略由“Private/Public”->Custom“。
-
编写策略内容如下: Write Policy:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "s3:ListBucketMultipartUploads", "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::你的桶名" ] }, { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::你的桶名/*" ], "Condition": { "StringLike": { "aws:Referer": [ "http://你的域名1/*", "https://你的域名2/*" ] } } } ] }
在上述策略中,我们指定了:
- 策略版本:
"Version": "2012-10-17"
表示使用的 AWS 策略语言版本。 - 声明部分(Statement):
- 第一个声明:
Effect
为Allow
,即允许。Principal
是"*"
,意味着允许所有 AWS 主体。Action
包含"s3:ListBucketMultipartUploads"
(列出存储桶的多部分上传)、"s3:GetBucketLocation"
(获取存储桶位置)、"s3:ListBucket"
(列出存储桶内容)。Resource
为"arn:aws:s3:::orange"
,指定了目标存储桶orange
。
- 第二个声明:
- 同样
Effect
为Allow
,允许所有 AWS 主体。 Action
包含"s3:DeleteObject"
(删除对象)、"s3:GetObject"
(获取对象)、"s3:ListMultipartUploadParts"
(列出多部分上传的部分)、"s3:PutObject"
(上传对象)、"s3:AbortMultipartUpload"
(中止多部分上传)。Resource
为"arn:aws:s3:::orange/*"
,表示针对orange
存储桶下的所有对象。Condition
条件部分使用了StringLike
条件键,规定只有当aws:Referer
是"http://你的域名1/*"
或"https://你的域名2/*"
时,这些操作才被允许。
- 同样
- 第一个声明: