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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47{
"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/*"
时,这些操作才被允许。
- 同样
- 第一个声明: