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 एक नियमों का सिम्युलेटर उपलब्ध कराता है. इसका इस्तेमाल करके, अपने नियमों के सेट की जांच की जा सकती है. सिम्युलेटर को Google Cloud Console और Firebase कंसोल, दोनों में ऐक्सेस किया जा सकता है.
नियमों के सिम्युलेटर की मदद से, पुष्टि किए गए और पुष्टि नहीं किए गए रीड, राइट, और मिटाने के अनुरोधों को सिम्युलेट किया जा सकता है. पुष्टि किए गए अनुरोध का सिम्युलेशन करने पर, अलग-अलग प्रोवाइडर से पुष्टि किए गए टोकन बनाए और उनकी झलक देखी जा सकती है. सिम्युलेट किए गए अनुरोध, आपके एडिटर में मौजूद नियमों के सेट के हिसाब से काम करते हैं. ये अनुरोध, डिप्लॉय किए गए नियमों के सेट के हिसाब से काम नहीं करते.
Google Cloud Console में नियमों की जांच करना
Google Cloud Console में नियमों का सिम्युलेटर, स्टैंडर्ड और एंटरप्राइज़, दोनों वर्शन में नेटिव मोड में Firestore के लिए उपलब्ध है.
ज़रूरी अनुमतियां
Google Cloud Console में सुरक्षा के नियमों को आज़माने के लिए, आपके पास यह IAM अनुमति होनी चाहिए:
firebaserules.rulesets.test
Google Cloud कंसोल में डेटाबेस के अनुरोध का सिम्युलेशन करने के लिए:
- Google Cloud Console में, डेटाबेस पेज पर जाएं.
- उस डेटाबेस के आईडी पर क्लिक करें जिसकी आपको जांच करनी है.
- नेविगेशन मेन्यू में, सुरक्षा पर क्लिक करें.
- सिम्युलेटर टैब पर क्लिक करें.
- सिमुलेशन टाइप ड्रॉप-डाउन सूची में, ऑपरेशन का टाइप चुनें: get, create, update या delete.
- जगह फ़ील्ड में, उस दस्तावेज़ का पाथ डालें जिसे आपको टेस्ट करना है. उदाहरण के लिए,
users/user_123. - (ज़रूरी नहीं) create और update अनुरोधों के लिए, Build document पर क्लिक करें, ताकि मॉक दस्तावेज़ के पेलोड को कॉन्फ़िगर किया जा सके.
- (ज़रूरी नहीं) पुष्टि की गई किसी अनुरोध को सिम्युलेट करने के लिए, पुष्टि चालू करें. इसके बाद, पुष्टि करने की सेवा देने वाली कंपनी (जैसे कि google.com या Anonymous) चुनें और टोकन पेलोड फ़ील्ड कॉन्फ़िगर करें.
- Run पर क्लिक करें.
जांच करने वाले पैनल में यह दिखता है कि अनुरोध को अनुमति दी गई है या नहीं. साथ ही, इसमें जांच की गई हर शर्त के लिए रिपोर्ट आइटम और कोड एडिटर में लाइन-लेवल हाइलाइट दिखती हैं.
Firebase कंसोल में नियमों की जांच करना
Firebase कंसोल में नियमों को टेस्ट करने के लिए, डेटाबेस और स्टोरेज > Firestore > नियम टैब पर जाएं. सिमुलेटर की सेटिंग खोलने के लिए, नियमों का प्लेग्राउंड पर क्लिक करें. इसके बाद, सिमुलेशन के विकल्प चुनें और चलाएं पर क्लिक करें.
नियमों को लागू करना
मोबाइल ऐप्लिकेशन से Cloud Firestore का इस्तेमाल शुरू करने से पहले, आपको सुरक्षा से जुड़े नियम लागू करने होंगे. नियमों को Firebase कंसोल, Google Cloud कंसोल, Firebase CLI या Cloud Firestore मैनेजमेंट REST API का इस्तेमाल करके डिप्लॉय किया जा सकता है.
Cloud Firestore Security Rules में किए गए अपडेट को नई क्वेरी और लिसनर पर लागू होने में एक मिनट लग सकता है. हालांकि, बदलावों को पूरी तरह से लागू होने में 10 मिनट लग सकते हैं. साथ ही, इससे सुनने वाले लोगों पर भी असर पड़ सकता है.
Firebase कंसोल का इस्तेमाल करना
अपने प्रोजेक्ट में डिफ़ॉल्ट डेटाबेस के लिए, नियमों का पहला सेट सेट अप और डिप्लॉय करने के लिए, Firebase कंसोल में डेटाबेस और स्टोरेज > Firestore > नियम टैब पर जाएं.
अगर आपने अपने प्रोजेक्ट के लिए एक से ज़्यादा डेटाबेस बनाए हैं, तो हर डेटाबेस के लिए Cloud Firestore Security Rules को डिप्लॉय किया जा सकता है. Firebase कंसोल में, डेटाबेस चुनने वाले टूल का इस्तेमाल करके, डिफ़ॉल्ट डेटाबेस और किसी अन्य डेटाबेस के बीच स्विच करें.
ऑनलाइन एडिटर में अपने नियम लिखें. इसके बाद, पब्लिश करें पर क्लिक करें.
Google Cloud Console का इस्तेमाल करना
Cloud Firestore Security Rules को सीधे Google Cloud Console में मैनेज और डिप्लॉय किया जा सकता है. Rules Editor, Standard और Enterprise, दोनों वर्शन में Firestore के नेटिव मोड के लिए उपलब्ध है.
ज़रूरी अनुमतियां
Google Cloud Console में सुरक्षा नियमों को मैनेज और डिप्लॉय करने के लिए, आपके पास ये IAM अनुमतियां होनी चाहिए:
firebaserules.releases.createfirebaserules.releases.deletefirebaserules.releases.updatefirebaserules.rulesets.createfirebaserules.rulesets.deletefirebaserules.rulesets.listfirebaserules.rulesets.test(नियम सिम्युलेटर का इस्तेमाल करने के लिए ज़रूरी है)
Google Cloud Console में नियमों को डिप्लॉय करने के लिए:
- Google Cloud Console में, डेटाबेस पेज पर जाएं.
- उस डेटाबेस के आईडी पर क्लिक करें जिसे आपको मैनेज करना है.
- नेविगेशन मेन्यू में, सुरक्षा पर क्लिक करें.
- 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 के लिए गाइड देखें.
अगले चरण
- सुरक्षा नियमों को व्यवस्थित करने का तरीका जानें.
- कस्टम सुरक्षा नियमों की शर्तें लिखें.
- सुरक्षा नियमों का रेफ़रंस पढ़ें.