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

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

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

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

मई 2019 से, Cloud Firestore के सुरक्षा नियमों का दूसरा वर्शन उपलब्ध है. नियमों के दूसरे वर्शन में, बार-बार इस्तेमाल होने वाले वाइल्डकार्ड {name=**} के काम करने का तरीका बदला गया है. अगर आपको कलेक्शन ग्रुप क्वेरी का इस्तेमाल करना है, तो आपको वर्शन 2 का इस्तेमाल करना होगा. आपको अपने सुरक्षा नियमों में rules_version = '2'; को पहली पंक्ति बनाकर, वर्शन 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 के लिए गाइड देखें.

अगले चरण