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 कंसोल में, डेटाबेस और स्टोरेज > Firestore > नियम टैब में जाकर ऐक्सेस किया जा सकता है.
नियमों का सिम्युलेटर, पुष्टि किए गए और पुष्टि नहीं किए गए रीड, राइट, और मिटाने की प्रोसेस को सिम्युलेट करने की सुविधा देता है. पुष्टि किए गए अनुरोध को सिम्युलेट करते समय, अलग-अलग प्रोवाइडर से पुष्टि करने वाले टोकन बनाए और उनकी झलक देखी जा सकती है. सिम्युलेट किए गए अनुरोध, आपके एडिटर में मौजूद नियमों के सेट के हिसाब से रन होते हैं. ये अनुरोध, फ़िलहाल डिप्लॉय किए गए नियमों के सेट के हिसाब से रन नहीं होते.
नियम डिप्लॉय करना
मोबाइल ऐप्लिकेशन से Cloud Firestore का इस्तेमाल करने से पहले, आपको सुरक्षा नियम डिप्लॉय करने होंगे. नियमों को Firebase कंसोल, Firebase CLI या Cloud Firestore मैनेजमेंट REST API का इस्तेमाल करके डिप्लॉय किया जा सकता है.
Cloud Firestore Security Rules में किए गए अपडेट को नई क्वेरी और लिसनर पर लागू होने में एक मिनट तक लग सकता है. हालांकि, बदलावों को पूरी तरह से लागू होने और चालू लिसनर पर असर डालने में 10 मिनट तक लग सकते हैं.
इसलिए, अगर Firebase कंसोल का इस्तेमाल करके सुरक्षा नियम तय या उनमें बदलाव किया जाता है, तो पक्का करें कि आपने अपने प्रोजेक्ट की डायरेक्ट्री में तय किए गए नियमों को भी अपडेट किया हो.Firebase कंसोल का इस्तेमाल करना
अपने प्रोजेक्ट में डिफ़ॉल्ट डेटाबेस के लिए, नियमों का पहला सेट सेट अप और डिप्लॉय करने के लिए, Firebase कंसोल में डेटाबेस और स्टोरेज > 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.
अगले चरण
- सुरक्षा नियमों को स्ट्रक्चर करने का तरीका जानें.
- सुरक्षा नियमों की शर्तों को अपनी पसंद के मुताबिक लिखें.
- सुरक्षा नियमों के रेफ़रंस के बारे में पढ़ें.