بدء استخدام قواعد أمان Cloud Firestore

باستخدام Cloud Firestore Security Rules، يمكنك التركيز على توفير تجربة رائعة للمستخدِم بدون الحاجة إلى إدارة البنية الأساسية أو كتابة رمز المصادقة والتفويض من جهة الخادم.

توفّر قواعد الأمان ميزة التحكّم في الوصول والتحقّق من البيانات بتنسيق بسيط ولكنه معبّر. لإنشاء أنظمة وصول مستندة إلى المستخدمين والأدوار تحافظ على أمان data المستخدِمين، عليك استخدام 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 باستخدام IDE لـ Firebase أو باستخدام IDE لـ Firebase أو باستخدام واجهة برمجة التطبيقات REST API لإدارة Cloud Firestore.

قد يستغرق تطبيق التعديلات على Cloud Firestore Security Rules ما يصل إلى دقيقة واحدة لتظهر في طلبات البحث الجديدة و المستمعين الجدد. ومع ذلك، يمكن أن يستغرق نشر التغييرات بالكامل مدة تصل إلى 10 دقائق والتأثير في أي مستمعين نشطين.

استخدام وحدة تحكُّم Firebase

لإعداد مجموعتك الأولى من القواعد ونشرها، افتح علامة التبويب القواعد في القسم Cloud Firestore ضمن وحدة تحكّم Firebase لقاعدة البيانات التلقائية في مشروعك.

اكتب قواعدك في المحرّر على الإنترنت، ثم انقر على نشر.

استخدام واجهة برمجة التطبيقات Firebase CLI

يمكنك أيضًا نشر القواعد باستخدام واجهة برمجة تطبيقات 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.

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