Home
avatar

CatOi

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 控制台。

(二)创建策略

  1. 在控制台左侧导航栏中,点击 “Administrator -> Buckets”。

  2. 选择需要配置的桶 “Access Policy:”(策略)选项卡,然后点击 “Change Access Policy”(更改访问策略)按钮。

  3. 在策略编辑器“Change Access Policy”中,将“Access Policy”策略由“Private/Public”->Custom“。

  4. 编写策略内容如下: 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/*"
                        ]
                    }
                }
            }
        ]
    }

在上述策略中,我们指定了:

  1. 策略版本"Version": "2012-10-17" 表示使用的 AWS 策略语言版本。
  2. 声明部分(Statement):
    • 第一个声明:
      • EffectAllow,即允许。
      • Principal"*",意味着允许所有 AWS 主体。
      • Action 包含 "s3:ListBucketMultipartUploads"(列出存储桶的多部分上传)、"s3:GetBucketLocation"(获取存储桶位置)、"s3:ListBucket"(列出存储桶内容)。
      • Resource"arn:aws:s3:::orange",指定了目标存储桶 orange
    • 第二个声明:
      • 同样 EffectAllow,允许所有 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/*" 时,这些操作才被允许。
Minio 中间件

喜欢这篇文章嘛,觉得文章不错的话,奖励奖励我!

支付宝打赏支付宝微信打赏 微信