تكوين Minio بحيث يمكن للمستخدم العمل فقط مع دلو خاص به

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

من أجل الوضوح ، نذهب من خلال المتصفح على العنوان http://ip-сервера-где-запущен-minio:9000/minio/

نرى أننا اتصلنا بـ Minio ضمن MINIO_ACCESS_KEY = user1. دلو user1bucket متاح لنا.

تكوين Minio بحيث يمكن للمستخدم العمل فقط مع دلو خاص به

لن ينجح إنشاء حاوية ، نظرًا لعدم وجود إجراء مطابق في السياسة.

تكوين Minio بحيث يمكن للمستخدم العمل فقط مع دلو خاص به

لنقم بإنشاء ملف في دلو user1bucket.

تكوين Minio بحيث يمكن للمستخدم العمل فقط مع دلو خاص به

اتصل بـ Minio تحت MINIO_ACCESS_KEY = user2. دلو user2bucket متاح لنا.

ولا نرى إما user1bucket أو ملفات من user1bucket.

تكوين Minio بحيث يمكن للمستخدم العمل فقط مع دلو خاص به

تم إنشاء دردشة Telegram بواسطة Minio https://t.me/minio_s3_ru

المصدر: www.habr.com