Cloud Firestore के सुरक्षा नियमों का इस्तेमाल शुरू करना

Cloud Firestore Security Rules की मदद से, आपको इन्फ़्रास्ट्रक्चर को मैनेज करने या सर्वर-साइड पुष्टि और अनुमति देने वाला कोड लिखने की ज़रूरत नहीं पड़ती. इससे, उपयोगकर्ताओं को बेहतरीन अनुभव देने पर फ़ोकस किया जा सकता है.

सुरक्षा के नियम, ऐक्सेस कंट्रोल और डेटा की पुष्टि करने की सुविधा देते हैं. ये नियम, आसान और समझने में आसान फ़ॉर्मैट में होते हैं. उपयोगकर्ता और भूमिका के आधार पर ऐक्सेस सिस्टम बनाने के लिए, आपको Firebase Authentication के साथ Cloud Firestore Security Rules का इस्तेमाल करना होगा. इससे आपके उपयोगकर्ताओं का डेटा सुरक्षित रहेगा.

सुरक्षा के नियमों का दूसरा वर्शन

मई 2019 से, Cloud Firestore के सुरक्षा नियमों का दूसरा वर्शन उपलब्ध है. नियमों के दूसरे वर्शन में, रिकर्सिव वाइल्डकार्ड {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, नियमों का सिम्युलेटर उपलब्ध कराता है. इसका इस्तेमाल करके, अपने नियमों के सेट की जांच की जा सकती है. Firebase कंसोल के Cloud Firestore सेक्शन में मौजूद, नियम टैब से सिम्युलेटर को ऐक्सेस किया जा सकता है.

नियमों के सिम्युलेटर की मदद से, पुष्टि किए गए और पुष्टि नहीं किए गए रीड, राइट, और मिटाने के अनुरोधों को सिम्युलेट किया जा सकता है. पुष्टि किए गए अनुरोध का सिम्युलेशन करने पर, अलग-अलग प्रोवाइडर से पुष्टि किए गए टोकन बनाए और उनकी झलक देखी जा सकती है. सिमुलेट किए गए अनुरोध, आपके एडिटर में मौजूद नियमों के सेट के हिसाब से काम करते हैं. ये आपके मौजूदा नियमों के सेट के हिसाब से काम नहीं करते.

नियम लागू करना

मोबाइल ऐप्लिकेशन से Cloud Firestore का इस्तेमाल शुरू करने से पहले, आपको सुरक्षा से जुड़े नियम लागू करने होंगे. Firebase कंसोल, Firebase CLI या Cloud Firestore मैनेजमेंट REST API का इस्तेमाल करके, नियमों को डिप्लॉय किया जा सकता है.

Cloud Firestore Security Rules में किए गए अपडेट को नई क्वेरी और लिसनर पर लागू होने में एक मिनट लग सकता है. हालांकि, बदलावों को पूरी तरह से लागू होने में 10 मिनट लग सकते हैं. साथ ही, इससे सुनने वाले लोगों पर भी असर पड़ सकता है.

Firebase कंसोल का इस्तेमाल करना

अपने प्रोजेक्ट में डिफ़ॉल्ट डेटाबेस के लिए, नियमों का पहला सेट सेट अप और डिप्लॉय करने के लिए, Firebase कंसोल के Cloud Firestore सेक्शन में जाकर, नियम टैब खोलें.

ऑनलाइन एडिटर में अपने नियम लिखें. इसके बाद, पब्लिश करें पर क्लिक करें.

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 Security Rules, दोनों प्रॉडक्ट के लिए कर सकती हैं. ज़्यादा जानकारी के लिए, Cloud Storage के लिए गाइड देखें.

अगले चरण