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

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

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

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

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

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

नियम डिप्लॉय करना

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

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

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

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

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

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

Google Cloud Console का इस्तेमाल करना

Google Cloud Console में सीधे तौर पर, Cloud Firestore Security Rules को मैनेज और डिप्लॉय किया जा सकता है. नियमों का एडिटर, Standard और Enterprise, दोनों वर्शन में, नेटिव मोड में Firestore के लिए उपलब्ध है.

ज़रूरी अनुमतियां

Google Cloud Console में सुरक्षा के नियमों को मैनेज और डिप्लॉय करने के लिए, आपको IAM की ये अनुमतियां चाहिए:

  • firebaserules.releases.create
  • firebaserules.releases.delete
  • firebaserules.releases.update
  • firebaserules.rulesets.create
  • firebaserules.rulesets.delete
  • firebaserules.rulesets.list
  • firebaserules.rulesets.test (नियमों के सिम्युलेटर का इस्तेमाल करने के लिए ज़रूरी है)

Google Cloud Console में नियम डिप्लॉय करने के लिए:

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.
  2. उस डेटाबेस के आईडी पर क्लिक करें जिसे मैनेज करना है.
  3. नेविगेशन मेन्यू में, सुरक्षा पर क्लिक करें.
  4. Firestore के नियम टैब पर क्लिक करें.
  5. नियमों के एडिटर में, अपने नियम देखें. बदलाव करने के लिए, नियमों का नया सेट या नियमों का सेट क्लोन करें पर क्लिक करें. इसके बाद, अपने नियमों में बदलाव करें.
  6. अपने बदलाव डिप्लॉय करने के लिए, पब्लिश करें पर क्लिक करें.

टाइमलाइन में, नियमों के पिछले सेट भी देखे जा सकते हैं. साथ ही, उन्हें क्लोन या वापस पहले जैसा किया जा सकता है.

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.

अगले चरण