فهم قواعد أمان 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;
    }
  }
}

يمكنك تعديل هذه القواعد من خلال اختيار تطبيق 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/.*');
    }
  }
}

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