باستخدام 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 محاكي قواعد يمكنك استخدامه لاختبار مجموعة القواعد. يمكنك الوصول إلى المحاكي في كلّ من Google Cloud Console وFirebase Console.
تتيح لك أداة محاكاة القواعد محاكاة عمليات القراءة والكتابة والحذف التي تمت مصادقتها وتلك التي لم تتم مصادقتها. عند محاكاة طلب مصادقة، يمكنك إنشاء رموز مميّزة للمصادقة ومعاينتها من مختلف مقدّمي الخدمات. يتم تنفيذ الطلبات المحاكاة مقابل مجموعة القواعد في المحرّر، وليس مجموعة القواعد التي تم نشرها.
اختبار القواعد في Google Cloud Console
تتوفّر أداة محاكاة القواعد في Google Cloud Console لخدمة Firestore في الوضع الأصلي في كل من الإصدارين Standard وEnterprise.
الأذونات المطلوبة
لاختبار قواعد الأمان في Google Cloud Console، يجب أن يتوفّر لديك إذن IAM التالي:
firebaserules.rulesets.test
لمحاكاة طلب قاعدة بيانات في Google Cloud Console، اتّبِع الخطوات التالية:
- في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
- انقر على رقم تعريف قاعدة البيانات التي تريد اختبارها.
- في قائمة التنقّل، انقر على الأمان.
- انقر على علامة التبويب المحاكي.
- في القائمة المنسدلة نوع المحاكاة، اختَر نوع العملية: get أو create أو update أو delete.
- في حقل الموقع الجغرافي، أدخِل مسار المستند الذي تريد اختباره (على سبيل المثال،
users/user_123). - (اختياري) بالنسبة إلى طلبات الإنشاء والتعديل، انقر على إنشاء مستند لإعداد حمولة المستند التجريبي.
- (اختياري) لمحاكاة طلب مصادقة، فعِّل المصادقة، واختَر موفِّر مصادقة (مثل google.com أو مجهول)، واضبط حقول حمولة الرمز المميز.
- انقر على تشغيل.
تعرض لوحة التقييم ما إذا كان الطلب مسموحًا به أو مرفوضًا، وعناصر التقرير التفصيلية لكل شرط تم تقييمه، بالإضافة إلى تمييز على مستوى السطر في محرّر الرموز.
اختبار القواعد في "وحدة تحكّم Firebase"
لاختبار القواعد في وحدة تحكّم Firebase، انتقِل إلى قواعد البيانات ومساحة التخزين >Firestore > علامة التبويب القواعد. انقر على بيئة اختبار القواعد لفتح إعدادات المحاكي، واختَر خيارات المحاكاة، ثم انقر على تشغيل.
نشر القواعد
قبل أن تتمكّن من بدء استخدام Cloud Firestore من تطبيقك على الجهاز الجوّال، عليك نشر قواعد الأمان. يمكنك نشر القواعد في وحدة تحكّم Firebase أو في وحدة تحكّم Google Cloud أو باستخدام Firebase CLI أو من خلال واجهة REST API الخاصة بإدارة Cloud Firestore.
قد يستغرق تطبيق التعديلات على Cloud Firestore Security Rules مدةً تصل إلى دقيقة واحدة لتؤثّر في طلبات البحث والمستمعين الجدد. ومع ذلك، يمكن أن يستغرق نشر التغييرات بالكامل مدة تصل إلى 10 دقائق، وقد تؤثّر في أي مستمعين نشطين.
استخدام "وحدة تحكّم Firebase"
لإعداد مجموعة القواعد الأولى ونشرها، انتقِل إلى علامة التبويب القواعد في وحدة تحكّم Firebase ضمن قواعد البيانات والتخزين > Firestore لقاعدة البيانات التلقائية في مشروعك.
في حال إنشاء قواعد بيانات متعددة لمشروعك، يمكنك نشر Cloud Firestore Security Rules لكل قاعدة بيانات. في وحدة تحكّم Firebase، استخدِم أداة اختيار قاعدة البيانات للتبديل بين قاعدة البيانات التلقائية وأي قواعد بيانات إضافية.
اكتب قواعدك في أداة التعديل على الإنترنت، ثم انقر على نشر.
استخدام "وحدة تحكّم Google Cloud"
يمكنك إدارة Cloud Firestore Security Rules ونشره مباشرةً في Google Cloud Console. يتوفّر محرّر القواعد في وضع Firestore الأصلي في كلّ من الإصدارَين Standard وEnterprise.
الأذونات المطلوبة
لإدارة قواعد الأمان ونشرها في Google Cloud Console، يجب أن تتوفّر لديك أذونات إدارة الهوية وإمكانية الوصول التالية:
firebaserules.releases.createfirebaserules.releases.deletefirebaserules.releases.updatefirebaserules.rulesets.createfirebaserules.rulesets.deletefirebaserules.rulesets.listfirebaserules.rulesets.test(مطلوب لاستخدام "محاكي القواعد")
لنشر القواعد في Google Cloud Console، اتّبِع الخطوات التالية:
- في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
- انقر على رقم تعريف قاعدة البيانات التي تريد إدارتها.
- في قائمة التنقّل، انقر على الأمان.
- انقر على علامة التبويب قواعد Firestore.
- في "محرّر القواعد"، اطّلِع على قواعدك. للتعديل، انقر على مجموعة قواعد جديدة أو استنساخ مجموعة قواعد، ثم عدِّل قواعدك.
- انقر على نشر لنشر التغييرات.
يمكنك أيضًا الاطّلاع على مجموعات القواعد السابقة في المخطط الزمني واستنساخها أو استعادتها.
استخدام Firebase CLI
يمكنك أيضًا نشر القواعد باستخدام واجهة سطر الأوامر (CLI) الخاصة بـ Firebase. يتيح لك استخدام واجهة سطر الأوامر إبقاء قواعدك تحت التحكم في الإصدارات مع الرمز البرمجي للتطبيق ونشر القواعد كجزء من عملية النشر الحالية.
// 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.
الخطوات التالية
- تعرَّف على كيفية تنظيم قواعد الأمان.
- اكتب شروط قواعد الأمان المخصّصة.
- اطّلِع على مرجع قواعد الأمان.