باستخدام Cloud Firestore Security Rules، يمكنك التركيز على تقديم تجربة رائعة للمستخدمين بدون الحاجة إلى إدارة البنية الأساسية أو كتابة رموز المصادقة والترخيص من جهة الخادم.
توفّر قواعد الأمان إمكانية التحكّم في الوصول إلى البيانات والتحقّق من صحتها بتنسيق بسيط وواضح. لإنشاء أنظمة وصول مستندة إلى المستخدمين والأدوار تحافظ على أمان بيانات المستخدمين، عليك استخدام Firebase Authentication مع Cloud Firestore Security Rules.
الإصدار 2 من قواعد الأمان
اعتبارًا من أيار (مايو) 2019، أصبح الإصدار 2 من Cloud Firestore لقواعد الأمان متاحًا. تغيّر النسخة 2 من القواعد سلوك أحرف البدل
التكرارية {name=**}
. يجب استخدام الإصدار 2 إذا كنت تخطّط لاستخدام طلبات مجموعة البيانات. يجب الموافقة على استخدام الإصدار 2 من خلال وضع rules_version = '2';
في السطر الأول من قواعد الأمان:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
قواعد الكتابة
ستكتب Cloud Firestore Security Rules وتديرها بما يتناسب مع نموذج البيانات الذي تنشئه لقاعدة البيانات التلقائية وكل قاعدة بيانات إضافية في مشروعك.
تتألف جميع Cloud Firestore Security Rules من عبارات match
التي تحدّد المستندات في قاعدة البيانات، ومن تعبيرات allow
التي تتحكّم في الوصول إلى هذه المستندات:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
يتم تقييم كل طلب قاعدة بيانات من مكتبة برامج Cloud Firestore للعميل على الأجهزة الجوّالة أو الويب وفقًا لقواعد الأمان قبل قراءة أي بيانات أو كتابتها. إذا كانت القواعد ترفض الوصول إلى أي من مسارات المستندات المحدّدة، سيفشل الطلب بأكمله.
في ما يلي بعض الأمثلة على مجموعات القواعد الأساسية. على الرغم من أنّ هذه القواعد صالحة، لا ننصح باستخدامها في التطبيقات المخصّصة للإنتاج:
يجب إكمال عملية المصادقة
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
رفض الكل
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
السماح بالكل
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
يتطابق المسار {document=**}
المستخدَم في الأمثلة أعلاه مع أي مستند في قاعدة البيانات بأكملها. يمكنك الانتقال إلى دليل تنظيم قواعد الأمان للتعرّف على كيفية مطابقة مسارات بيانات معيّنة والتعامل مع البيانات الهرمية.
اختبار القواعد
توفّر Cloud Firestore محاكي قواعد يمكنك استخدامه لاختبار مجموعة القواعد. يمكنك الوصول إلى المحاكي من علامة التبويب القواعد في قسم Cloud Firestore ضِمن وحدة تحكّم Firebase.
تتيح لك أداة محاكاة القواعد محاكاة عمليات القراءة والكتابة والحذف التي تمت مصادقتها وتلك التي لم تتم مصادقتها. عند محاكاة طلب مصادقة، يمكنك إنشاء رموز مميّزة للمصادقة ومعاينتها من مقدّمين مختلفين. يتم تنفيذ الطلبات المحاكاة وفقًا لمجموعة القواعد في المحرّر، وليس مجموعة القواعد التي تم نشرها حاليًا.
نشر القواعد
قبل أن تتمكّن من بدء استخدام Cloud Firestore من تطبيقك على الأجهزة الجوّالة، عليك نشر قواعد الأمان. يمكنك نشر القواعد في وحدة تحكّم Firebase أو باستخدام واجهة سطر الأوامر (CLI) الخاصة بـ Firebase أو من خلال واجهة برمجة التطبيقات REST الخاصة بإدارة Cloud Firestore.
قد يستغرق تطبيق التعديلات على Cloud Firestore Security Rules مدةً تصل إلى دقيقة واحدة لتؤثّر في طلبات البحث والمستمعين الجدد. ومع ذلك، يمكن أن يستغرق نشر التغييرات بالكامل مدة تصل إلى 10 دقائق، وقد تؤثّر في أي مستمعين نشطين.
استخدام "وحدة تحكّم Firebase"
لإعداد مجموعة القواعد الأولى ونشرها، افتح علامة التبويب القواعد في قسم Cloud Firestore ضمن قاعدة البيانات التلقائية في مشروعك، وذلك في وحدة تحكّم Firebase.
اكتب قواعدك في أداة التعديل على الإنترنت، ثم انقر على نشر.
استخدام واجهة سطر الأوامر (CLI) في Firebase
يمكنك أيضًا نشر القواعد باستخدام Firebase CLI. يتيح لك استخدام واجهة سطر الأوامر إبقاء قواعدك تحت التحكّم في الإصدار مع رمز تطبيقك ونشر القواعد كجزء من عملية النشر الحالية.
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
تعزيز مستوى الأمان في Cloud Storage
ستستفيد تطبيقاتك من ميزات قاعدة البيانات القوية في Cloud Firestore وميزات تخزين الملفات وإدارتها في Cloud Storage. وعند استخدامها معًا، توفّر هذه المنتجات أيضًا أمانًا معزّزًا للتطبيقات، لأنّ Cloud Firestore يمكنه تسجيل متطلبات التفويض التي يمكن أن تستخدمها "قواعد أمان Firebase" لكلا المنتجين. لمزيد من المعلومات، اطّلِع على دليل Cloud Storage.
الخطوات التالية
- تعرَّف على كيفية تنظيم قواعد الأمان.
- اكتب شروط قواعد الأمان المخصّصة.
- اطّلِع على مرجع قواعد الأمان.