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