شروحات الكمبيوتر والإنترنت والموبايل

خطأ S3 في MinIO: العملية فشلت بسبب رفض الوصول

تعتبر MinIO من الأدوات الفعالة لتخزين البيانات السحابية التي تدعم واجهة S3 مما يسهل استخدامها في تطبيقات Python وغيرها. ومع ذلك، قد تواجه أحيانًا أخطاء مثل minio.error.S3Error: S3 operation failed; code: AccessDenied, message: Access Denied., resource: /musor-bucket والتي تشير إلى أن لديك مشاكل في إعدادات الوصول. سنتناول في هذا المقال كيفية حل هذه المشكلة والإعدادات اللازمة لتجنبها.

فهم الخطأ: AccessDenied

يشير الخطأ "AccessDenied" إلى أن المستخدم ليس لديه الأذونات الكافية للوصول إلى المورد المطلوب، وهو في هذه الحالة "musor-bucket". تعد هذه المشكلة شائعة خاصة عند التعامل مع نظام ACL (قوائم التحكم في الوصول) أو سياسات IAM. لذلك، من المهم التأكد من إعدادات الوصول للمستخدم والموارد بشكل صحيح.

إعداد سياسات الوصول

لحل هذه المشكلة، يجب عليك إنشاء سياسة ملائمة للمستخدم "musor" ومن ثم ربطها بالمجموعة "musor-bucket". يمكن البدء بإنشاء سياسة باستخدام ملف JSON. إليك كيفية كتابة سياسة مخصصة:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowBucketSync",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::musor-bucket",
        "arn:aws:s3:::musor-bucket/*"
      ]
    }
  ]
}

هذا الملف يضمن أن المستخدم لديه الأذونات اللازمة للوصول إلى العناصر داخل "musor-bucket".

خطوات إعداد MinIO بشكل صحيح

بعد كتابة السياسة، يجب عليك إضافتها إلى مثيل MinIO الخاص بك. يمكن عمل ذلك من خلال استخدام الأداة mc. تأكد من أنك قد قمت بإنشاء متجر جديد للمستخدم "musor" بالاعتماد على الأزواج المفتاحية "musor-user" و"musor-top-secret-key". شغّل الأوامر التالية:

  1. إنشاء المجموعة:

    mc mb local/musor-bucket --debug
  2. إضافة المستخدم:

    mc admin user add local musor musor-top-secret-key --debug
  3. إنشاء السياسة:

    mc policy set-json ./data/musor-bucket-policy.json local/musor-bucket --debug
  4. ربط السياسة بالمستخدم:
    mc admin policy attach musor-bucket-policy local --user=musor-user --debug

اختبار الإعدادات

بعد الانتهاء من إعداد كل شيء، تأكد من أن كل شيء يعمل كما هو متوقع. يمكنك القيام بذلك عن طريق تنفيذ الأمر التالي:

mc admin user info local musor-user

هنا يمكنك التحقق من حالة المستخدم والامتيازات الممنوحة له.

استيراد السلاسل المختلفة في Python

عند محاولة الوصول إلى "musor-bucket" من خلال تطبيق Python، تأكد من تكوين العميل بشكل صحيح. إليك كيفية القيام بذلك:

from minio import Minio
from urllib3 import PoolManager
access_key = "musor-user"
secret_key = "musor-top-secret-key"
pool_manager = PoolManager(ca_certs="minio/tls-ca-bundle.pem", cert_reqs="CERT_REQUIRED")
client = Minio("minio.local:443", access_key=access_key, secret_key=secret_key, secure=True, http_client=pool_manager)
print(client.bucket_exists("musor-bucket"))

إذا واجهت نفس الخطأ minio.error.S3Error: S3 operation failed; code: AccessDenied, message: Access Denied., resource: /musor-bucket، فقد يعني ذلك أن هناك مشكلة في إعدادات الوصول، سواء في سياسات المستخدم أو في تكوين MinIO.

الخاتمة

تجنب الأخطاء المتعلقة بالوصول يعتمد على فهم مناسب لآليات التحكم في الوصول في MinIO. تأكد من أن جميع الإعدادات قد تم تكوينها بدقة وأن السياسات مرتبطة بالمستخدمين الصحيحين. بتطبيق الخطوات المذكورة أعلاه، يجب أن تتمكن من حل مشكلة "AccessDenied" والوصول إلى "musor-bucket" بنجاح.

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!