فهم قواعد أمان 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 /someFolder/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

يمكنك تعديل Security Rules هذه في وحدة تحكم Firebase من خلال الانتقال إلى علامة التبويب قواعد البيانات والتخزين > التخزين > القواعد.

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

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.

  • مزيد من المعلومات عن تأمين بياناتك باستخدام قواعد الأمان