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

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

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

सुरक्षा नियमों का वर्शन 2

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

अगले चरण