راه اندازی Minio به طوری که کاربر فقط می تواند با سطل خود کار کند

Minio یک فروشگاه ساده، سریع و سازگار با AWS S3 است. Minio برای میزبانی از داده های بدون ساختار مانند عکس ها، فیلم ها، فایل های گزارش، پشتیبان گیری طراحی شده است. Minio همچنین از حالت توزیع شده پشتیبانی می کند، که توانایی اتصال چندین دیسک را به یک سرور ذخیره سازی اشیاء، از جمله آنهایی که در ماشین های مختلف قرار دارند، فراهم می کند.

هدف از این پست پیکربندی مینیو است تا هر کاربر فقط با سطل خودش کار کند.

به طور کلی Minio برای موارد زیر مناسب است:

  • ذخیره سازی بدون تکرار در بالای یک سیستم فایل قابل اعتماد با دسترسی از طریق S3 (ذخیره سازی کوچک و متوسط ​​میزبان NAS و SAN).
  • ذخیره سازی غیر تکراری در بالای یک سیستم فایل غیر قابل اعتماد با دسترسی S3 (برای توسعه و آزمایش).
  • ذخیره سازی با تکرار در گروه کوچکی از سرورها در یک رک با دسترسی از طریق پروتکل S3 (ذخیره سازی شکست با دامنه خرابی برابر با رک).

در سیستم های RedHat ما مخزن غیر رسمی Minio را به هم متصل می کنیم.

yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc

ایجاد کنید و به MINIO_ACCESS_KEY و MINIO_SECRET_KEY در /etc/minio/minio.conf اضافه کنید.

# Custom username or access key of minimum 3 characters in length.
MINIO_ACCESS_KEY=

# Custom password or secret key of minimum 8 characters in length.
MINIO_SECRET_KEY=

اگر قبل از Minio از nginx استفاده نمی کنید، باید تغییر دهید.

--address 127.0.0.1:9000

بر

--address 0.0.0.0:9000

بیایید Minio را راه اندازی کنیم.

systemctl start minio

ما یک اتصال به Minio به نام myminio ایجاد می کنیم.

minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY 
MINIO_SECRET_KEY

یک سطل user1bucket ایجاد کنید.

minio-mc mb myminio/user1bucket

یک سطل user2bucket ایجاد کنید.

minio-mc mb myminio/user2bucket

یک فایل خط مشی user1-policy.json ایجاد کنید.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket/*"
      ],
      "Sid": ""
    }
  ]
}

یک فایل خط مشی user2-policy.json ایجاد کنید.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket/*"
      ],
      "Sid": ""
    }
  ]
}

یک user1 با رمز عبور test12345 ایجاد کنید.

minio-mc admin user add myminio user1 test12345

یک user2 با رمز عبور test54321 ایجاد کنید.

minio-mc admin user add myminio user2 test54321

یک خط مشی در Minio به نام user1-policy از فایل user1-policy.json ایجاد می کنیم.

minio-mc admin policy add myminio user1-policy user1-policy.json

یک خط مشی در Minio به نام user2-policy از فایل user2-policy.json ایجاد می کنیم.

minio-mc admin policy add myminio user2-policy user2-policy.json

سیاست user1-policy را برای user1 اعمال کنید.

minio-mc admin policy set myminio user1-policy user=user1

سیاست user2-policy را برای user2 اعمال کنید.

minio-mc admin policy set myminio user2-policy user=user2

بررسی ارتباط سیاست ها با کاربران

minio-mc admin user list myminio

بررسی ارتباط سیاست ها با کاربران چیزی شبیه به این خواهد بود

enabled    user1                 user1-policy
enabled    user2                 user2-policy

برای وضوح، از طریق مرورگر به آدرس مراجعه کنید http://ip-сервера-где-запущен-minio:9000/minio/

می بینیم که تحت MINIO_ACCESS_KEY=user1 به Minio متصل شدیم. سطل user1bucket در دسترس ما است.

راه اندازی Minio به طوری که کاربر فقط می تواند با سطل خود کار کند

ایجاد یک سطل امکان پذیر نخواهد بود، زیرا هیچ اقدام مربوطه در خط مشی وجود ندارد.

راه اندازی Minio به طوری که کاربر فقط می تواند با سطل خود کار کند

بیایید یک فایل در سطل user1bucket ایجاد کنیم.

راه اندازی Minio به طوری که کاربر فقط می تواند با سطل خود کار کند

بیایید تحت MINIO_ACCESS_KEY=user2 به Minio متصل شویم. سطل user2bucket در دسترس ما است.

و ما نه user1bucket و نه فایل های user1bucket را نمی بینیم.

راه اندازی Minio به طوری که کاربر فقط می تواند با سطل خود کار کند

با استفاده از Minio یک چت تلگرام ایجاد کرد https://t.me/minio_s3_ru

منبع: www.habr.com