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

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