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
برای وضوح، از طریق مرورگر به آدرس مراجعه کنید
می بینیم که تحت MINIO_ACCESS_KEY=user1 به Minio متصل شدیم. سطل user1bucket در دسترس ما است.
ایجاد یک سطل امکان پذیر نخواهد بود، زیرا هیچ اقدام مربوطه در خط مشی وجود ندارد.
بیایید یک فایل در سطل user1bucket ایجاد کنیم.
بیایید تحت MINIO_ACCESS_KEY=user2 به Minio متصل شویم. سطل user2bucket در دسترس ما است.
و ما نه user1bucket و نه فایل های user1bucket را نمی بینیم.
با استفاده از Minio یک چت تلگرام ایجاد کرد
منبع: www.habr.com