Firebase, सुरक्षा के नियमों को मैनेज करने के लिए कई टूल उपलब्ध कराता है. हर टूल, खास मामलों में काम आता है. साथ ही, हर टूल, Firebase के सुरक्षा के नियमों को मैनेज करने वाले एक ही बैकएंड एपीआई का इस्तेमाल करता है.Security Rules
इसे लागू करने के लिए, किसी भी टूल का इस्तेमाल किया जा सकता है. हालांकि, मैनेजमेंट एपीआई:
- नियमों का सोर्स लेता है. यह नियमों का एक सेट होता है. आम तौर पर, यह एक कोड फ़ाइल होती है, जिसमें Firebase Security Rules स्टेटमेंट शामिल होते हैं.
- लिए गए सोर्स को, नियमों के सेट के तौर पर सेव करता है. इसमें बदलाव नहीं किया जा सकता.
- रिलीज़ में, नियमों के हर सेट के डिप्लॉयमेंट को ट्रैक करता है. Firebase के सुरक्षा के नियमों की सुविधा वाली सेवाएं, सुरक्षित किए गए किसी रिसॉर्स के लिए हर अनुरोध का आकलन करने के लिए, किसी प्रोजेक्ट की रिलीज़ को खोजती हैं.
- नियमों के सेट के सिंटैक्स और सिमैंटिक टेस्ट चलाने की सुविधा देता है.
Firebase CLI का इस्तेमाल करना
Firebase CLI की मदद से, स्थानीय सोर्स अपलोड किए जा सकते हैं और रिलीज़ डिप्लॉय की जा सकती हैं. सीएलआई के Firebase Local Emulator Suite की मदद से, सोर्स की पूरी स्थानीय जांच की जा सकती है.
सीएलआई का इस्तेमाल करके, अपने ऐप्लिकेशन कोड के साथ-साथ, नियमों को वर्शन कंट्रोल में रखा जा सकता है. साथ ही, मौजूदा डिप्लॉयमेंट प्रोसेस के तहत, नियमों को डिप्लॉय किया जा सकता है.
कॉन्फ़िगरेशन फ़ाइल जनरेट करना
Firebase CLI का इस्तेमाल करके, अपने Firebase प्रोजेक्ट को कॉन्फ़िगर करने पर, आपके प्रोजेक्ट डायरेक्ट्री में
.rules कॉन्फ़िगरेशन फ़ाइल बनती है. अपने Firebase प्रोजेक्ट को कॉन्फ़िगर करना शुरू करने के लिए, यह निर्देश इस्तेमाल करें:
Cloud Firestore
// Set up Firestore in your project directory, creates a .rules file firebase init firestore
Realtime Database
// Set up Realtime Database in your project directory, creates a .rules file firebase init database
Cloud Storage
// Set up Storage in your project directory, creates a .rules file firebase init storage
अपने नियमों में बदलाव करना और उन्हें अपडेट करना
.rules कॉन्फ़िगरेशन फ़ाइल में जाकर, सीधे अपने नियमों के सोर्स में बदलाव करें.
पक्का करें कि Firebase CLI में किए गए सभी बदलाव, Firebase कंसोल में दिखें. इसके अलावा, यह भी पक्का करें कि Firebase कंसोल या Firebase CLI में से किसी एक का इस्तेमाल करके, लगातार अपडेट किए जाएं. ऐसा न करने पर, Firebase कंसोल में किए गए किसी भी अपडेट को आप मिटा सकते हैं.
इसलिए, अगर सुरक्षा के नियम तय किए जाते हैं या उनमें बदलाव किया जाता है तो Firebase कंसोल का इस्तेमाल करके, पक्का करें कि आपने अपने प्रोजेक्ट डायरेक्ट्री में तय किए गए नियमों को भी अपडेट किया हो.अपने अपडेट की जांच करना
Local Emulator Suite सुरक्षा के नियमों की सुविधा वाले सभी प्रॉडक्ट के लिए एम्युलेटर उपलब्ध कराता है. हर एम्युलेटर के लिए, सुरक्षा के नियमों का इंजन, नियमों का सिंटैक्स और सिमैंटिक, दोनों तरह से आकलन करता है. इस तरह, यह सुरक्षा के नियमों को मैनेज करने वाले एपीआई की ओर से ऑफ़र की जाने वाली सिंटैक्स की जांच से ज़्यादा काम करता है.
अगर सीएलआई का इस्तेमाल किया जा रहा है, तो Suite, Firebase Security Rules जांच के लिए एक बेहतरीन टूल है. अपने अपडेट की स्थानीय तौर पर जांच करने और यह पुष्टि करने के लिए, Local Emulator Suite का इस्तेमाल करें कि आपके ऐप्लिकेशन के Security Rules आपकी ज़रूरत के मुताबिक काम कर रहे हैं.
अपने अपडेट डिप्लॉय करना
अपने Security Rules को अपडेट करने और उनकी जांच करने के बाद, सोर्स को प्रोडक्शन में डिप्लॉय करें.
Cloud Firestore Security Rules के लिए, अपनी firebase.json फ़ाइल की समीक्षा करके और उसे अपडेट करके, .rules फ़ाइलों को अपने डिफ़ॉल्ट और
नाम वाले अन्य डेटाबेस से जोड़ें.
सिर्फ़ चुनिंदा तौर पर Security Rules को डिप्लॉय करने या उन्हें अपनी सामान्य डिप्लॉयमेंट प्रोसेस के तहत डिप्लॉय करने के लिए, इन निर्देशों का इस्तेमाल करें.
Cloud Firestore
// Deploy rules for all databases configured in your firebase.json firebase deploy --only firestore:rules
// Deploy rules for the specified database configured in your firebase.json firebase deploy --only firestore:<databaseId>
Realtime Database
// Deploy your .rules file firebase deploy --only database
Cloud Storage
// Deploy your .rules file firebase deploy --only storage
Firebase कंसोल का इस्तेमाल करना
Firebase कंसोल से, सुरक्षा के नियमों के सोर्स में बदलाव भी किया जा सकता है और उन्हें रिलीज़ के तौर पर डिप्लॉय भी किया जा सकता है.Security RulesFirebase Firebase कंसोल के यूज़र इंटरफ़ेस (यूआई) में बदलाव करते समय, सिंटैक्स की जांच की जाती है. वहीं, सुरक्षा के नियमों के Playground का इस्तेमाल करके, सिमैंटिक की जांच की जा सकती है.FirebaseSecurity Rules
अपने नियमों में बदलाव करना और उन्हें अपडेट करना
- Firebase कंसोल खोलें और अपना प्रोजेक्ट चुनें.
- इसके बाद, प्रॉडक्ट नेविगेशन से Realtime Database, Cloud Firestore या Storage चुनें. फिर, Security Rules एडिटर पर जाने के लिए, Rules पर क्लिक करें.
- एडिटर में जाकर, सीधे अपने नियमों में बदलाव करें.
अपने अपडेट की जांच करना
एडिटर के यूज़र इंटरफ़ेस (यूआई) में सिंटैक्स की जांच करने के अलावा, सिमैंटिक Security Rules की जांच की जा सकती है. इसके लिए, अपने प्रोजेक्ट के डेटाबेस और स्टोरेज रिसॉर्स का इस्तेमाल करें. सुरक्षा के नियमों के Playground का इस्तेमाल करके, Firebase कंसोल में सीधे तौर पर, सुरक्षा के नियमों के Security Rules की जांच की जा सकती है. Security Rules एडिटर में, नियमों का Playground स्क्रीन खोलें, सेटिंग में बदलाव करें, और चलाएं पर क्लिक करें. एडिटर में सबसे ऊपर, पुष्टि करने वाला मैसेज देखें.
अपने अपडेट डिप्लॉय करना
जब आपको लगे कि आपके अपडेट, आपकी ज़रूरत के मुताबिक हैं, तो पब्लिश करें पर क्लिक करें.
Admin SDK का इस्तेमाल करना
आप Node.js के लिए Admin SDK का इस्तेमाल नियमों के सेट के लिए कर सकते हैं. प्रोग्राम के हिसाब से ऐक्सेस की इस सुविधा की मदद से, ये काम किए जा सकते हैं:
- नियमों को मैनेज करने के लिए, कस्टम टूल, स्क्रिप्ट, डैशबोर्ड, और सीआई/सीडी पाइपलाइन लागू करना.
- एक से ज़्यादा Firebase प्रोजेक्ट में, नियमों को ज़्यादा आसानी से मैनेज करना.
प्रोग्राम के हिसाब से नियमों को अपडेट करते समय, यह पक्का करना ज़रूरी है कि आपके ऐप्लिकेशन के ऐक्सेस कंट्रोल में कोई अनचाहा बदलाव न हो. अपना Admin SDK कोड लिखते समय, सुरक्षा को सबसे ज़्यादा प्राथमिकता दें. खास तौर पर, नियमों को अपडेट या डिप्लॉय करते समय.
एक और ज़रूरी बात यह है कि Firebase Security Rules रिलीज़ को पूरी तरह से लागू होने में कुछ मिनट लगते हैं. नियमों को डिप्लॉय करने के लिए, Admin SDK का इस्तेमाल करते समय, रेस कंडीशन से बचें. ऐसा न करने पर, आपका ऐप्लिकेशन उन नियमों पर तुरंत निर्भर हो सकता है जिनका डिप्लॉयमेंट अब तक पूरा नहीं हुआ है. अगर आपके इस्तेमाल के उदाहरण के लिए, ऐक्सेस कंट्रोल के नियमों को बार-बार अपडेट करना पड़ता है, तो Cloud Firestore का इस्तेमाल करने वाले सॉल्यूशन आज़माएं. इसे बार-बार अपडेट किए जाने के बावजूद, रेस कंडीशन को कम करने के लिए डिज़ाइन किया गया है.
इन सीमाओं का भी ध्यान रखें:
- सीरियलाइज़ किए जाने पर, नियमों का साइज़ 256 केआईबी से कम होना चाहिए. साथ ही, वे यूटीएफ-8 कोड में होने चाहिए.
- किसी प्रोजेक्ट में, डिप्लॉय किए गए नियमों के ज़्यादा से ज़्यादा 2,500 सेट हो सकते हैं. यह सीमा पूरी होने के बाद, नए नियम बनाने से पहले, आपको नियमों के कुछ पुराने सेट मिटाने होंगे.
Cloud Storage या Cloud Firestore के नियमों के सेट बनाना और उन्हें डिप्लॉय करना
Admin SDK की मदद से, सुरक्षा के नियमों को मैनेज करने के लिए, आम तौर पर तीन अलग-अलग चरण शामिल हो सकते हैं:
- नियमों की फ़ाइल का सोर्स बनाना (ज़रूरी नहीं)
- नियमों का सेट बनाना
- नियमों के नए सेट को रिलीज़ करना या डिप्लॉय करना
एसडीके, Cloud Storage और Cloud Firestore सुरक्षा के नियमों के लिए, इन चरणों को एक ही एपीआई कॉल में शामिल करने का तरीका उपलब्ध कराता है. उदाहरण के लिए:
const source = `service cloud.firestore {
match /databases/{database}/documents {
match /carts/{cartID} {
allow create: if request.auth != null && request.auth.uid == request.resource.data.ownerUID;
allow read, update, delete: if request.auth != null && request.auth.uid == resource.data.ownerUID;
}
}
}`;
// Alternatively, load rules from a file
// const fs = require('fs');
// const source = fs.readFileSync('path/to/firestore.rules', 'utf8');
await admin.securityRules().releaseFirestoreRulesetFromSource(source);
Cloud Storage नियमों के साथ, यही पैटर्न काम करता है releaseFirestoreRulesetFromSource().
इसके अलावा, नियमों की फ़ाइल को इन-मेमोरी ऑब्जेक्ट के तौर पर बनाया जा सकता है. साथ ही, नियमों का सेट बनाया जा सकता है. इन इवेंट पर ज़्यादा कंट्रोल के लिए, नियमों के सेट को अलग से डिप्लॉय किया जा सकता है. उदाहरण के लिए:
const rf = admin.securityRules().createRulesFileFromSource('firestore.rules', source);
const rs = await admin.securityRules().createRuleset(rf);
await admin.securityRules().releaseFirestoreRuleset(rs);
Realtime Database नियमों के सेट अपडेट करना
Realtime Database के नियमों के सेट अपडेट करने के लिए, Admin SDK की मदद से, admin.database के getRules() और
setRules() तरीकों का इस्तेमाल करें. नियमों के सेट को JSON फ़ॉर्मैट में या टिप्पणियों के साथ स्ट्रिंग के तौर पर वापस पाया जा सकता है.
नियमों का सेट अपडेट करने के लिए:
const source = `{
"rules": {
"scores": {
".indexOn": "score",
"$uid": {
".read": "$uid == auth.uid",
".write": "$uid == auth.uid"
}
}
}
}`;
await admin.database().setRules(source);
नियमों के सेट मैनेज करना
नियमों के बड़े सेट को मैनेज करने के लिए, Admin SDK की मदद से, मौजूदा सभी नियमों की सूची देखी जा सकती है
admin.securityRules().listRulesetMetadata का इस्तेमाल करके. उदाहरण के लिए:
const allRulesets = [];
let pageToken = null;
while (true) {
const result = await admin.securityRules().listRulesetMetadata(pageToken: pageToken);
allRulesets.push(...result.rulesets);
pageToken = result.nextPageToken;
if (!pageToken) {
break;
}
}
बहुत बड़े डिप्लॉयमेंट के लिए, नियमों के सेट की 2,500 की सीमा पूरी होने पर, एक तय समय के बाद सबसे पुराने नियमों को मिटाने के लिए लॉजिक बनाया जा सकता है. उदाहरण के लिए, 30 दिनों से ज़्यादा समय से डिप्लॉय किए गए सभी नियमों के सेट मिटाने के लिए:
const thirtyDays = new Date(Date.now() - THIRTY_DAYS_IN_MILLIS);
const promises = [];
allRulesets.forEach((rs) => {
if (new Date(rs.createTime) < thirtyDays) {
promises.push(admin.securityRules().deleteRuleset(rs.name));
}
});
await Promise.all(promises);
console.log(`Deleted ${promises.length} rulesets.`);
REST API का इस्तेमाल करना
ऊपर बताए गए टूल, अलग-अलग वर्कफ़्लो के लिए सही हैं. इनमें, Firebase Security Rules आपके प्रोजेक्ट में मौजूद एक से ज़्यादा Cloud Firestore डेटाबेस के लिए, Firebase के सुरक्षा के नियमों को मैनेज करना शामिल है. हालांकि, हो सकता है कि आपको मैनेजमेंट एपीआई का इस्तेमाल करके, Firebase Security Rules को मैनेज और डिप्लॉय करना हो. मैनेजमेंट एपीआई, आपको सबसे ज़्यादा फ़्लेक्सिबिलिटी देता है.
इन सीमाओं का भी ध्यान रखें:
- सीरियलाइज़ किए जाने पर, नियमों का साइज़ 256 केआईबी से कम होना चाहिए. साथ ही, वे यूटीएफ-8 कोड में होने चाहिए.
- किसी प्रोजेक्ट में, डिप्लॉय किए गए नियमों के ज़्यादा से ज़्यादा 2,500 सेट हो सकते हैं. यह सीमा पूरी होने के बाद, नए नियम बनाने से पहले, आपको नियमों के कुछ पुराने सेट मिटाने होंगे.
REST का इस्तेमाल करके, Cloud Firestore या Cloud Storage नियमों के सेट बनाना और उन्हें डिप्लॉय करना
इस सेक्शन में दिए गए उदाहरणों में, Firestore Security Rules का इस्तेमाल किया गया है. हालांकि, ये Cloud Storage Security Rules पर भी लागू होते हैं.
उदाहरणों में, एपीआई कॉल करने के लिए cURL का भी इस्तेमाल किया गया है. सेटअप करने और पुष्टि करने वाले टोकन पास करने के चरणों को शामिल नहीं किया गया है. रेफ़रंस से जुड़े दस्तावेज़ में इंटिग्रेट किए गए एपीआई एक्सप्लोरर का इस्तेमाल करके, इस एपीआई के साथ एक्सपेरिमेंट किया जा सकता है.
मैनेजमेंट एपीआई का इस्तेमाल करके, नियमों का सेट बनाने और उसे डिप्लॉय करने के लिए, आम तौर पर ये चरण अपनाए जाते हैं:
- नियमों की फ़ाइल के सोर्स बनाना
- नियमों का सेट बनाना
- नियमों के नए सेट को रिलीज़ (डिप्लॉय) करना.
कोई सोर्स बनाना
मान लें कि आप अपने secure_commerce Firebase प्रोजेक्ट पर काम कर रहे हैं और आपको अपने प्रोजेक्ट के east_store नाम के डेटाबेस में, Cloud Firestore Security Rules को डिप्लॉय करना है.
firestore.rules फ़ाइल में, इन नियमों को लागू किया जा सकता है.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
नियमों का सेट बनाना
अब इस फ़ाइल के लिए, base64 कोड में एनकोड किया गया फ़िंगरप्रिंट जनरेट करें. इसके बाद, projects.rulesets.create REST कॉल का इस्तेमाल करके, नियमों का सेट बनाने के लिए ज़रूरी पेलोड को भरने के लिए, इस फ़ाइल में मौजूद सोर्स का इस्तेमाल किया जा सकता है. यहां, REST पेलोड में firestore.rules का कॉन्टेंट डालने के लिए, cat निर्देश का इस्तेमाल करें.
ट्रैक करने के लिए, इसे अपने east_store डेटाबेस से जोड़ने के लिए, attachment_point को east_store पर सेट करें.
curl -X POST -d '{
"source": {
"files": [
{
"content": "' $(cat storage.rules) '",
"name": "firestore.rules",
"fingerprint": <sha fingerprint>
},
"attachment_point": "firestore.googleapis.com/databases/east_store"
]
}
}' 'https://firebaserules.googleapis.com/v1/projects/secure_commerce/rulesets'एपीआई, पुष्टि करने का जवाब और नियमों के सेट का नाम दिखाता है. उदाहरण के लिए, projects/secure_commerce/rulesets/uuid123.
नियमों का सेट रिलीज़ (डिप्लॉय) करना
अगर नियमों का सेट मान्य है, तो आखिरी चरण है कि नियमों के नए सेट को नाम वाली रिलीज़ में डिप्लॉय किया जाए.
curl -X POST -d '{
"name": "projects/secure_commerce/releases/cloud.firestore/east_store" ,
"rulesetName": "projects/secure_commerce/rulesets/uuid123"
}' 'https://firebaserules.googleapis.com/v1/projects/secure_commerce/releases'ध्यान रखें कि Firebase Security Rules रिलीज़ को पूरी तरह से लागू होने में कुछ मिनट लगते हैं. डिप्लॉय करने के लिए, मैनेजमेंट REST API का इस्तेमाल करते समय, रेस कंडीशन से बचें. ऐसा न करने पर, आपका ऐप्लिकेशन उन नियमों पर तुरंत निर्भर हो सकता है जिनका डिप्लॉयमेंट अब तक पूरा नहीं हुआ है.
REST का इस्तेमाल करके, Realtime Database नियमों के सेट अपडेट करना
Realtime Database सुरक्षा के नियमों को मैनेज करने के लिए अपना REST इंटरफ़ेस उपलब्ध कराता है.Security Rules REST के ज़रिए, Firebase को मैनेज करना देखेंRealtime Database Security Rules.
REST का इस्तेमाल करके, नियमों के सेट मैनेज करना
नियमों के बड़े डिप्लॉयमेंट को मैनेज करने के लिए, नियमों के सेट और रिलीज़ बनाने के लिए REST तरीके के अलावा, मैनेजमेंट एपीआई ये तरीके उपलब्ध कराता है:
- नियमों के सेट की सूची देखना, उन्हें पाना, और मिटाना
- नियमों की रिलीज़ की सूची देखना, उन्हें पाना, और मिटाना
बहुत बड़े डिप्लॉयमेंट के लिए, नियमों के सेट की 2,500 की सीमा पूरी होने पर, एक तय समय के बाद सबसे पुराने नियमों को मिटाने के लिए लॉजिक बनाया जा सकता है. उदाहरण के लिए, 30 दिनों से ज़्यादा समय से डिप्लॉय किए गए सभी नियमों के सेट मिटाने के लिए, projects.rulesets.list तरीके को कॉल किया जा सकता है. इसके बाद, Ruleset ऑब्जेक्ट की JSON सूची को उनके createTime की के आधार पर पार्स किया जा सकता है. फिर, ruleset_id के आधार पर, नियमों के संबंधित सेट पर project.rulesets.delete को कॉल किया जा सकता है.
REST का इस्तेमाल करके, अपने अपडेट की जांच करना
आखिर में, मैनेजमेंट एपीआई की मदद से, आपके प्रोडक्शन प्रोजेक्ट में मौजूद Cloud Firestore और Cloud Storage रिसॉर्स पर, सिंटैक्स और सिमैंटिक की जांच की जा सकती है.
.एपीआई के इस कॉम्पोनेंट की मदद से जांच करने में ये चरण शामिल हैं:
TestCaseऑब्जेक्ट के सेट को दिखाने के लिए,TestSuiteJSON ऑब्जेक्ट तय करनाTestSuiteसबमिट करना- वापस किए गए
TestResultऑब्जेक्ट को पार्स करना
testcase.json फ़ाइल में, एक TestCase के साथ TestSuite ऑब्जेक्ट तय करते हैं. इस उदाहरण में, हम उन नियमों पर चलाने के लिए, टेस्ट सुइट के साथ-साथ, REST पेलोड में, Security Rules
भाषा का सोर्स इनलाइन पास करते हैं. हम नियमों के आकलन की उम्मीद और क्लाइंट के उस अनुरोध के बारे में बताते हैं जिसके आधार पर नियमों के सेट की जांच की जानी है. यह भी तय किया जा सकता है कि टेस्ट रिपोर्ट कितनी पूरी हो
. इसके लिए, वैल्यू "FULL" का इस्तेमाल करें. इससे पता चलता है कि रिपोर्ट में, सभी
Security Rules भाषा के एक्सप्रेशन के नतीजे शामिल होने चाहिए. इनमें वे एक्स101}प्रेशन भी शामिल हैं जो अनुरोध से मैच नहीं हुए.
{ "source": { "files": [ { "name": "firestore.rules", "content": "service cloud.firestore { match /databases/{database}/documents { match /users/{userId}{ allow read: if (request.auth.uid == userId); } function doc(subpath) { return get(/databases/$(database)/documents/$(subpath)).data; } function isAccountOwner(accountId) { return request.auth.uid == accountId || doc(/users/$(request.auth.uid)).accountId == accountId; } match /licenses/{accountId} { allow read: if isAccountOwner(accountId); } } }" } ] }, "testSuite": { "testCases": [ { "expectation": "ALLOW", "request": { "auth": {"uid": "123"}, "path": "/databases/(default)/documents/licenses/abcd", "method": "get"}, "functionMocks": [ { "function": "get", "args": [{"exact_value": "/databases/(default)/documents/users/123"}], "result": {"value": {"data": {"accountId": "abcd"}}} } ] } ] } }
इसके बाद, आकलन के लिए, projects.test तरीके से इस TestSuite को सबमिट किया जा सकता है.
curl -X POST -d '{
' $(cat testcase.json) '
}' 'https://firebaserules.googleapis.com/v1/projects/secure_commerce/rulesets/uuid123:test'वापस की गई TestReport (जिसमें टेस्ट के सफल/असफल होने की स्थिति, डीबग मैसेज की सूची, नियमों के उन एक्सप्रेशन की सूची और उनके आकलन की रिपोर्ट शामिल होती है जिन्हें देखा गया है) से, स्थिति के सफल होने की पुष्टि होती है कि ऐक्सेस की अनुमति सही तरीके से दी गई है.
एक से ज़्यादा सेवाओं के लिए, Cloud Storage Security Rules की अनुमतियां मैनेज करना
अगर Cloud Storage Security Rules बनाए जाते हैं जो सुरक्षा की शर्तों का आकलन करने के लिए, Cloud Firestore दस्तावेज़ के कॉन्टेंट का इस्तेमाल करते हैं, तो Firebase कंसोल या Firebase CLI में, आपको दोनों प्रॉडक्ट को कनेक्ट करने की अनुमतियां चालू करने के लिए कहा जाएगा.
अगर आपको एक से ज़्यादा सेवाओं के लिए, सुरक्षा की सुविधा बंद करनी है, तो:
सबसे पहले, सुविधा बंद करने से पहले, अपने नियमों में बदलाव करें. साथ ही, Cloud Firestore को ऐक्सेस करने के लिए, Security Rules फ़ंक्शन का इस्तेमाल करने वाले सभी स्टेटमेंट हटाएं. ऐसा न करने पर, सुविधा बंद होने के बाद, Security Rules आकलन की वजह से , आपके स्टोरेज के अनुरोध पूरे नहीं हो पाएंगे.
रोल रद्द करने के लिए, Cloud guide for revoking roles में दिए गए निर्देशों का पालन करके, "Firebase Rules Firestore Service Agent" रोल मिटाने के लिए, Google Cloud Console में IAM पेज का इस्तेमाल करें.
अगली बार, Firebase CLI या Firebase कंसोल से, एक से ज़्यादा सेवाओं के लिए, नियम सेव करने पर, आपको इस सुविधा को फिर से चालू करने के लिए कहा जाएगा.