Minio عبارة عن متجر كائنات بسيط وسريع ومتوافق مع AWS S3. تم تصميم Minio لاستضافة البيانات غير المنظمة مثل الصور ومقاطع الفيديو وملفات السجل والنسخ الاحتياطية. يدعم 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=
إذا كنت لا تستخدم nginx قبل Minio ، فأنت بحاجة إلى التغيير.
--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 مع اختبار كلمة المرور 12345.
minio-mc admin user add myminio user1 test12345
إنشاء المستخدم user2 مع اختبار كلمة المرور 54321.
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 ضمن MINIO_ACCESS_KEY = user1. دلو user1bucket متاح لنا.
لن ينجح إنشاء حاوية ، نظرًا لعدم وجود إجراء مطابق في السياسة.
لنقم بإنشاء ملف في دلو user1bucket.
اتصل بـ Minio تحت MINIO_ACCESS_KEY = user2. دلو user2bucket متاح لنا.
ولا نرى إما user1bucket أو ملفات من user1bucket.
تم إنشاء دردشة Telegram بواسطة Minio
المصدر: www.habr.com