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

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

توفر قواعد الأمان إمكانية التحكم في الوصول والتحقق من صحة البيانات بتنسيق بسيط وتعبيري. لإنشاء أنظمة وصول مستندة إلى المستخدم ومستندة إلى الأدوار مع الحفاظ على أمان بيانات المستخدمين، عليك استخدام مصادقة Firebase مع قواعد أمان Cloud Firestore.

الإصدار 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 من عبارات 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 أو باستخدام Cloud Firestore management REST API.

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

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

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

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

استخدام واجهة سطر الأوامر في Firebase

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

الخطوات اللاحقة