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

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

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

يتيح لك محاكي القواعد محاكاة عمليات القراءة والكتابة والحذف التي تتم بعد المصادقة وبدونها. عند محاكاة طلب تمت المصادقة عليه، يمكنك إنشاء رموز المصادقة ومعاينتها من مختلف مقدّمي الخدمة. يتم تنفيذ الطلبات المحاكاة مقابل مجموعة القواعد في المحرّر، وليس مجموعة القواعد التي تم نشرها حاليًا.

نشر القواعد

قبل أن تتمكّن من البدء في استخدام Cloud Firestore من تطبيقك للأجهزة الجوّالة، عليك نشر قواعد الأمان. يمكنك نشر القواعد في "وحدة تحكّم Firebase" أو باستخدام Firebase CLI أو من خلال Cloud Firestore Management REST API.

قد يستغرق تطبيق التعديلات على 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.

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