Firebase के सुरक्षा नियमों को मैनेज और डिप्लॉय करें

Firebase आपको अपने नियम मैनेज करने के लिए कई टूल देता है. इनमें से हर टूल खास मामलों में काम का होता है. साथ ही, हर टूल एक ही बैकएंड Firebase सुरक्षा नियम मैनेजमेंट एपीआई का इस्तेमाल करता है.

भले ही, इसे शुरू करने के लिए किसी भी टूल का इस्तेमाल किया जाए, मैनेजमेंट एपीआई:

  • नियमों का सोर्स शामिल करता है: नियमों का सेट होता है. आम तौर पर, यह एक कोड फ़ाइल होती है जिसमें Firebase के सुरक्षा नियमों के स्टेटमेंट होते हैं.
  • डेटा डाले गए सोर्स को ऐसे नियमसेट के तौर पर सेव करता है जिन्हें बदला नहीं जा सकता.
  • किसी रिलीज़ में हर नियमसेट के डिप्लॉयमेंट को ट्रैक करता है. Firebase के सुरक्षा नियम लागू करने वाली सेवाएं, किसी सुरक्षित संसाधन के लिए हर अनुरोध का आकलन करने के लिए, किसी प्रोजेक्ट की रिलीज़ देखती हैं.
  • यह किसी नियमसेट के वाक्य और वाक्य से जुड़े टेस्ट चलाने की सुविधा देता है.

Firebase सीएलआई का इस्तेमाल करना

Firebase सीएलआई की मदद से, लोकल सोर्स अपलोड किए जा सकते हैं और रिलीज़ डिप्लॉय किए जा सकते हैं. सीएलआई के Firebase लोकल एम्युलेटर सुइट से, सोर्स की पूरी स्थानीय जांच की जा सकती है.

सीएलआई का इस्तेमाल करके, अपने नियमों को ऐप्लिकेशन कोड के साथ वर्शन कंट्रोल में रखा जा सकता है. साथ ही, डिप्लॉयमेंट की मौजूदा प्रोसेस के हिस्से के तौर पर, नियमों को डिप्लॉय किया जा सकता है.

कॉन्फ़िगरेशन फ़ाइल जनरेट करना

Firebase सीएलआई का इस्तेमाल करके 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 सीएलआई में किया गया कोई भी बदलाव, Firebase कंसोल में दिखता हो. अगर ऐसा नहीं है, तो Firebase कंसोल या Firebase सीएलआई का इस्तेमाल करके इसे लगातार अपडेट किया जा सकता है. ऐसा नहीं करने पर, Firebase कंसोल में किए गए अपडेट को ओवरराइट किया जा सकता है.

अपडेट की जांच करें

Local Emulator Suite, उन सभी प्रॉडक्ट के लिए एम्युलेटर उपलब्ध कराता है जिन पर सुरक्षा के नियम लागू होते हैं. हर एम्युलेटर के लिए, सुरक्षा नियम इंजन, नियमों के वाक्य और वाक्य, दोनों का आकलन करता है. इस तरह, वह सुरक्षा नियम मैनेजमेंट एपीआई ऑफ़र के वाक्यात्मक परीक्षण से ज़्यादा हो जाता है.

अगर सीएलआई का इस्तेमाल किया जा रहा है, तो यह सुइट, Firebase के सुरक्षा नियमों की जांच करने के लिए एक बेहतरीन टूल है. अपने अपडेट की स्थानीय तौर पर जांच करने के लिए, Local Emulator Suite का इस्तेमाल करें. साथ ही, पुष्टि करें कि आपके ऐप्लिकेशन के नियम, आपकी पसंद के हिसाब से व्यवहार करते हैं.

अपने अपडेट डिप्लॉय करें

अपने नियमों को अपडेट करने और उनकी जांच करने के बाद, सोर्स को प्रोडक्शन में डिप्लॉय करें.

Cloud Firestore के सुरक्षा नियमों के लिए, अपनी firebase.json फ़ाइल की समीक्षा करके और उसे अपडेट करके, .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 कंसोल से रिलीज़ के तौर पर डिप्लॉय करने का विकल्प भी होता है. Firebase कंसोल यूज़र इंटरफ़ेस (यूआई) में बदलाव करते ही सिंटैक्टिक टेस्टिंग की जाती है. साथ ही, नियम प्लेग्राउंड का इस्तेमाल करके सिमेंटिक टेस्ट की सुविधा उपलब्ध हो जाती है.

अपने नियमों में बदलाव करना और उन्हें अपडेट करना

  1. Firebase कंसोल खोलें और अपना प्रोजेक्ट चुनें.
  2. इसके बाद, प्रॉडक्ट नेविगेशन से रीयल टाइम डेटाबेस, Cloud Firestore या स्टोरेज चुनें. इसके बाद, नियम एडिटर पर जाने के लिए नियम पर क्लिक करें.
  3. सीधे एडिटर में जाकर, अपने नियमों में बदलाव करें.

अपडेट की जांच करें

एडिटर यूज़र इंटरफ़ेस (यूआई) में सिंटैक्स की जांच करने के अलावा, आप नियम प्लेग्राउंड का इस्तेमाल करके सीधे Firebase कंसोल में, अपने प्रोजेक्ट के डेटाबेस और स्टोरेज संसाधनों का इस्तेमाल करके सिमैंटिक नियमों के व्यवहार की जांच कर सकते हैं. 'नियम' एडिटर में 'नियम प्लेग्राउंड' स्क्रीन खोलें, सेटिंग में बदलाव करें और 'रन' पर क्लिक करें. एडिटर के सबसे ऊपर, पुष्टि करने वाला मैसेज देखें.

अपने अपडेट डिप्लॉय करें

जब आप संतुष्ट हो जाएं कि अपडेट आपकी उम्मीद के मुताबिक हैं, तो पब्लिश करें पर क्लिक करें.

'एडमिन SDK' का इस्तेमाल करना

Node.js के लिए 'एडमिन SDK' नियमसेट का इस्तेमाल किया जा सकता है. प्रोग्राम के हिसाब से अपने-आप मिलने वाले इस ऐक्सेस की मदद से, ये काम किए जा सकते हैं:

  • नियमों को मैनेज करने के लिए, ज़रूरत के मुताबिक टूल, स्क्रिप्ट, डैशबोर्ड, और सीआई/सीडी पाइपलाइन का इस्तेमाल करें.
  • एक से ज़्यादा Firebase प्रोजेक्ट में नियमों को ज़्यादा आसानी से मैनेज करें.

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

एक और ज़रूरी बात का ध्यान रखें कि Firebase के सुरक्षा नियमों की रिलीज़ को पूरी तरह से लागू होने में कई मिनट लगते हैं. नियम लागू करने के लिए एडमिन SDK का इस्तेमाल करते समय, पक्का करें कि उन रेस स्थितियों से बचें जिनमें आपका ऐप्लिकेशन उन नियमों पर तुरंत निर्भर हो जाता है जिनका डिप्लॉयमेंट अभी पूरा नहीं हुआ है. अगर आपके इस्तेमाल के उदाहरण को ऐक्सेस कंट्रोल के नियमों को बार-बार अपडेट करने की ज़रूरत है, तो Cloud Firestore का इस्तेमाल करके समाधान करें. इसे बार-बार अपडेट होने के बावजूद, रेस की स्थितियों को कम करने के लिए डिज़ाइन किया गया है.

इन सीमाओं पर भी ध्यान दें:

  • क्रम से लगाए जाने पर, नियमों को UTF-8 कोड में बदले गए टेक्स्ट के 256 केआईबी से कम होना चाहिए.
  • किसी प्रोजेक्ट में ज़्यादा से ज़्यादा 2,500 नियमसेट लागू किए जा सकते हैं. यह सीमा पूरी हो जाने के बाद, आपको नए नियम बनाने से पहले कुछ पुराने नियम मिटाने होंगे.

Cloud Storage या Cloud Firestore के नियमों की सूची बनाएं और डिप्लॉय करें

एडमिन SDK टूल की मदद से सुरक्षा के नियमों को मैनेज करने के लिए, एक सामान्य वर्कफ़्लो होता है. इसमें तीन अलग-अलग चरण शामिल हो सकते हैं:

  1. नियम वाली फ़ाइल का सोर्स बनाना (ज़रूरी नहीं)
  2. नियमसेट बनाएं
  3. नया नियमसेट रिलीज़ या डिप्लॉय करें

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);

यही पैटर्न, releaseFirestoreRulesetFromSource() के साथ Cloud Storage के नियमों के लिए भी काम करता है.

इसके अलावा, इन इवेंट को बारीकी से कंट्रोल करने के लिए, नियमों वाली फ़ाइल को मेमोरी में मौजूद ऑब्जेक्ट के तौर पर भी बनाया जा सकता है. इसके अलावा, रूलसेट बनाए जा सकते हैं और नियमों के सेट को अलग से डिप्लॉय किया जा सकता है. उदाहरण के लिए:

    const rf = admin.securityRules().createRulesFileFromSource('firestore.rules', source);
    const rs = await admin.securityRules().createRuleset(rf);
    await admin.securityRules().releaseFirestoreRuleset(rs);

रीयलटाइम डेटाबेस के नियमसेट अपडेट करें

एडमिन 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);

नियमसेट मैनेज करें

बड़े नियमों-सेट को मैनेज करने के लिए, एडमिन 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 का इस्तेमाल करना

ऊपर बताए गए टूल अलग-अलग वर्कफ़्लो के लिए सही हैं. इनमें आपके प्रोजेक्ट में एक से ज़्यादा Cloud Firestore डेटाबेस के लिए Firebase के सुरक्षा नियम मैनेज करना भी शामिल है. हालांकि, हो सकता है कि आप मैनेजमेंट एपीआई का इस्तेमाल करके, Firebase के सुरक्षा नियमों को मैनेज और डिप्लॉय करना चाहें. Management API से आपको बेहतरीन सुविधाएं मिलती हैं.

इन सीमाओं पर भी ध्यान दें:

  • क्रम से लगाए जाने पर, नियमों को UTF-8 कोड में बदले गए टेक्स्ट के 256 केआईबी से कम होना चाहिए.
  • किसी प्रोजेक्ट में ज़्यादा से ज़्यादा 2,500 नियमसेट लागू किए जा सकते हैं. यह सीमा पूरी हो जाने के बाद, आपको नए नियम बनाने से पहले कुछ पुराने नियम मिटाने होंगे.

REST के साथ Cloud Firestore या Cloud Storage के नियमों की सूची बनाएं और डिप्लॉय करें

इस सेक्शन में दिए गए उदाहरणों में Firestore के नियमों का इस्तेमाल किया गया है. हालांकि, ये Cloud Storage के नियमों पर भी लागू होते हैं.

उदाहरणों में एपीआई कॉल करने के लिए, CURL का भी इस्तेमाल किया गया है. पुष्टि करने वाले टोकन को सेट अप करने और उन्हें पास करने के चरण शामिल नहीं किए गए हैं. इस एपीआई के साथ एक्सपेरिमेंट करने के लिए, रेफ़रंस दस्तावेज़ के साथ इंटिग्रेट किए गए एपीआई एक्सप्लोरर का इस्तेमाल किया जा सकता है.

मैनेजमेंट एपीआई का इस्तेमाल करके, रूलसेट बनाने और उसे डिप्लॉय करने के कुछ सामान्य तरीके ये हैं:

  1. नियम वाली फ़ाइल के सोर्स बनाएं
  2. नियमसेट बनाएं
  3. नया नियमसेट रिलीज़ (डिप्लॉय) करें.

सोर्स बनाना

मान लें कि आप अपने secure_commerce Firebase प्रोजेक्ट पर काम कर रहे हैं और अपने east_store नाम के प्रोजेक्ट के डेटाबेस में, लॉक किए गए Cloud Firestore के नियमों को डिप्लॉय करना चाहते हैं.

इन नियमों को firestore.rules फ़ाइल में लागू किया जा सकता है.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

नियमसेट बनाएं

अब इस फ़ाइल के लिए, base64 कोड में बदला गया फ़िंगरप्रिंट जनरेट करें. इसके बाद, इस फ़ाइल के सोर्स का इस्तेमाल करके, projects.rulesets.create REST कॉल के नियमसेट बनाने के लिए ज़रूरी पेलोड को अपने-आप डाला जा सकता है. यहां, firestore.rules की सामग्री को REST पेलोड में डालने के लिए 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 के सुरक्षा नियमों की रिलीज़ को पूरी तरह से लागू होने में कई मिनट लगते हैं. डिप्लॉयमेंट के लिए मैनेजमेंट REST API का इस्तेमाल करते समय, उन रेस की स्थितियों से बचें जिनमें आपका ऐप्लिकेशन तुरंत उन नियमों पर निर्भर होता है जिनका डिप्लॉयमेंट अभी पूरा नहीं हुआ है.

REST के साथ रीयलटाइम डेटाबेस के नियमसेट अपडेट करें

रीयलटाइम डेटाबेस, नियमों को मैनेज करने के लिए अपना REST इंटरफ़ेस उपलब्ध कराता है. REST के ज़रिए Firebase रीयल टाइम डेटाबेस नियमों को मैनेज करना देखें.

REST की मदद से, रूलसेट मैनेज करें

नियमसेट और रिलीज़ बनाने के लिए REST के तरीके के अलावा, मैनेजमेंट एपीआई, बड़े नियमों के डिप्लॉयमेंट को मैनेज करने में मदद करने के लिए ये तरीके उपलब्ध कराता है:

  • नियम की सूची बनाएं, पाएं, और मिटाएं
  • रिलीज़ के नियमों की सूची बनाना, उन्हें पाना, और मिटाना

बहुत बड़े डिप्लॉयमेंट के लिए, जो समय के साथ 2,500 नियमों की सीमा तक पहुंच जाते हैं, आप एक तय टाइम साइकल में सबसे पुराने नियमों को मिटाने के लिए लॉजिक बना सकते हैं. उदाहरण के लिए, 30 दिनों से ज़्यादा समय तक डिप्लॉय किए गए सभी नियमों की सूची मिटाने के लिए, projects.rulesets.list तरीके को कॉल करें. इसके बाद, Ruleset ऑब्जेक्ट की createTime कुंजियों पर JSON सूची को पार्स करें. इसके बाद, ruleset_id तक उससे जुड़े नियमों की सूची पर project.rulesets.delete को कॉल करें.

REST के साथ अपने अपडेट की जांच करें

आखिर में, मैनेजमेंट एपीआई की मदद से अपने प्रोडक्शन प्रोजेक्ट में, Cloud Firestore और Cloud Storage संसाधनों पर वाक्य-विन्यास और सिमैंटिक टेस्ट चलाए जा सकते हैं.

एपीआई के इस कॉम्पोनेंट के साथ टेस्टिंग में ये शामिल हैं:

  1. TestCase ऑब्जेक्ट के सेट को दिखाने के लिए, TestSuite JSON ऑब्जेक्ट तय किया जा रहा है
  2. TestSuite सबमिट किया जा रहा है
  3. पार्स करने में TestResult ऑब्जेक्ट मिले

आइए, testcase.json फ़ाइल में एक TestCase के साथ TestSuite ऑब्जेक्ट तय करते हैं. इस उदाहरण में, हम नियमों की भाषा के सोर्स को REST पेलोड के साथ इनलाइन बनाकर पास करते हैं. साथ ही, इन नियमों को चलाने के लिए टेस्ट सुइट भी पास करते हैं. हम नियमों के आकलन की उम्मीद और क्लाइंट का वह अनुरोध तय करते हैं जिसके हिसाब से नियमों के सेट की जांच की जानी है. आपके पास यह भी तय करने की सुविधा होती है कि टेस्ट रिपोर्ट कितनी पूरी है. इसके लिए, "FULL" वैल्यू का इस्तेमाल करके, सभी नियमों में भाषा के एक्सप्रेशन को शामिल किया जाना चाहिए. इसमें वे एक्सप्रेशन भी शामिल हैं जो अनुरोध से मेल नहीं खाते.

 {
  "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"}}}
            }
          ]
      }
    ]
  }
}

इसके बाद, हम इस TestSuite को projects.test तरीके से आकलन के लिए सबमिट कर सकते हैं.

curl -X POST -d '{
    ' $(cat testcase.json) '
}' 'https://firebaserules.googleapis.com/v1/projects/secure_commerce/rulesets/uuid123:test'

लौटाए गए TestReport (इनमें टेस्ट सफल/फ़ेल होने की स्थिति, डीबग मैसेज की सूचियां, देखे गए नियमों के एक्सप्रेशन की सूचियां और उनकी इवैलुएशन रिपोर्ट शामिल हैं) की स्थिति 'सफल' के तौर पर यह पुष्टि की जाएगी कि ऐक्सेस सही तरीके से दिया गया है.

क्रॉस-सर्विस Cloud Storage सुरक्षा नियमों के लिए अनुमतियां मैनेज करें

अगर आपने Cloud Storage के सुरक्षा नियम बनाए हैं, जो सुरक्षा की स्थितियों का आकलन करने के लिए, Cloud Firestore दस्तावेज़ के कॉन्टेंट का इस्तेमाल करते हैं, तो आपको Firebase कंसोल या Firebase सीएलआई में यह सूचना दी जाएगी कि वे दोनों प्रॉडक्ट को कनेक्ट करने के लिए अनुमतियां चालू करें.

अगर ऐसी क्रॉस-सर्विस सुरक्षा को बंद करना है, तो:

  1. सबसे पहले, सुविधा को बंद करने से पहले, अपने नियमों में बदलाव करें. साथ ही, उन सभी स्टेटमेंट को हटा दें जो Cloud Firestore को ऐक्सेस करने के लिए, 'नियम' फ़ंक्शन का इस्तेमाल करते हैं. अगर ऐसा नहीं किया जाता है, तो सुविधा बंद होने के बाद, नियमों का आकलन करने की वजह से स्टोरेज से जुड़े आपके अनुरोध पूरे नहीं हो पाएंगे.

  2. "Firebase के नियमों के हिसाब से Firestore सर्विस एजेंट" की भूमिका मिटाने के लिए, Google Cloud Console में आईएएम पेज का इस्तेमाल करें. इसके लिए, भूमिकाओं को वापस लेने के लिए क्लाउड गाइड में दिए गए निर्देशों का पालन करें.

अगली बार जब आप Firebase सीएलआई या Firebase कंसोल से क्रॉस-सेवा नियमों को सेव करेंगे, तब आपको इस सुविधा को फिर से चालू करने के लिए कहा जाएगा.