فهم قواعد أمان Firebase لخدمة Cloud Storage

لطالما كان الأمان أحد أكثر الأجزاء تعقيدًا في تطوير التطبيقات. في معظم التطبيقات، على المطوّرين إنشاء خادم وتشغيله لمعالجة المصادقة (تحديد هوية المستخدم) والتفويض (المهام التي يمكن للمستخدم تنفيذها). إنّ المصادقة والتفويض من الصعب إعدادهما، ومن الصعب أكثر تنفيذهما بشكل صحيح، وهما مهمان جدًا لنجاح منتجك.

على غرار الطريقة التي يسهّل بها Firebase Authentication مصادقة المستخدمين، يسهّل عليك Firebase Security Rules في Cloud Storage تفويض المستخدمين والتحقق من صحة الطلبات. Cloud Storage Security Rules تُدير هذه العملية المعقدة بالنيابة عنك من خلال السماح لك بتحديد الأذونات المستندة إلى المسار. باستخدام بضعة أسطر من الرموز البرمجية فقط، يمكنك كتابة قواعد تفويض تحدّ من طلبات Cloud Storage إلى مستخدم معيّن أو تحدّ من حجم عملية التحميل.

يتضمّن Firebase Realtime Database ميزة مشابهة تُسمّى Firebase Realtime Database Security Rules

المصادقة

إنّ معرفة هوية المستخدمين هو جزء مهم من إنشاء تطبيق، وتوفر Firebase Authentication حلًا سهل الاستخدام وآمنًا ومخصّصًا للجانب العميل فقط للقيام بالمصادقة. يرتبط Firebase Security Rules لـ Cloud Storage بـ Firebase Authentication للحصول على أمان يستند إلى المستخدم. عند مصادقة مستخدم باستخدام Firebase Authentication، يصبح المتغيّر request.auth في Cloud Storage Security Rules عنصرًا يحتوي على المعرّف الفريد للمستخدم (request.auth.uid) وجميع معلوماته الأخرى في الرمز المميّز (request.auth.token). وعندما لا تتم مصادقة المستخدم،request.auth هو null. يتيح لك ذلك التحكّم بأمان في إمكانية الوصول إلى البيانات على أساس كل مستخدم. يمكنك الاطّلاع على مزيد من المعلومات في القسم المصادقة.

التفويض

إنّ تحديد هوية المستخدم هو جزء فقط من الأمان. بعد معرفة هوية هؤلاء المستخدمين، تحتاج إلى طريقة للتحكّم في إمكانية وصولهم إلى الملفات في Cloud Storage.

تتيح لك Cloud Storage تحديد قواعد التفويض الخاصة بكل ملف ومسار على خوادمنا وتحديد إمكانية الوصول إلى الملفات في تطبيقك. على سبيل المثال، يتطلب Cloud Storage Security Rules التلقائي Firebase Authentication لإكمال أي عمليات read أو write على جميع الملفات:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

يمكنك تعديل هذه القواعد من خلال اختيار تطبيق Firebase في وحدة تحكّم Firebase والاطّلاع على علامة التبويب Rules في قسم "التخزين".

التحقّق من صحة البيانات

يمكن أيضًا استخدام Firebase Security Rules لـ Cloud Storage للتحقّق من صحة البيانات، بما في ذلك التحقّق من اسم الملف ومساره بالإضافة إلى سمات البيانات الوصفية للملف، مثل contentType وsize.

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

الخطوات التالية

  • ابدأ بالتخطيط لتطوير القواعد لحاويات Cloud Storage.

  • اطّلِع على مزيد من المعلومات عن تأمين بياناتك باستخدام قواعد الأمان.