Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Firebase Security Rules को प्रबंधित और तैनात करें

फायरबेस सीएलआई का उपयोग करें

फायरबेस सीएलआई का उपयोग करके नियमों को संपादित करें और तैनात करें। सीएलआई का उपयोग करने से आप अपने नियमों को अपने एप्लिकेशन कोड के साथ संस्करण नियंत्रण में रख सकते हैं और अपनी मौजूदा तैनाती प्रक्रिया के हिस्से के रूप में नियमों को तैनात कर सकते हैं।

एक कॉन्फ़िगरेशन फ़ाइल बनाएं

जब आप Firebase CLI का उपयोग करके अपने Firebase प्रोजेक्ट को कॉन्फ़िगर करते हैं, तो आप अपने प्रोजेक्ट डायरेक्टरी में एक .rules कॉन्फ़िगरेशन फ़ाइल बनाते हैं। अपने फायरबेस प्रोजेक्ट को कॉन्फ़िगर करने के लिए निम्न कमांड का उपयोग करें:

क्लाउड फायरस्टार

// Set up Firestore in your project directory, creates a .rules file
firebase init firestore

रियलटाइम डेटाबेस

// Set up Realtime Database in your project directory, creates a .rules file
firebase init database

घन संग्रहण

// Set up Storage in your project directory, creates a .rules file
firebase init storage

अपने नियमों को संपादित करें और अपडेट करें

सीधे .rules कॉन्फ़िगरेशन फ़ाइल में अपने नियम संपादित करें। सुनिश्चित करें कि आपके द्वारा Firebase CLI में किया गया कोई भी संपादन Firebase कंसोल में परिलक्षित होता है, या आप लगातार Firebase कंसोल या Firebase CLI का उपयोग करके अपडेट करते हैं। अन्यथा, आप फायरबेस कंसोल में किए गए किसी भी अपडेट को ओवरराइट कर सकते हैं।

अपने अपडेट का परीक्षण करें

स्थानीय स्तर पर अपने अपडेट का परीक्षण करने के लिए फायरबेस एमुलेटर का उपयोग करें और पुष्टि करें कि आपके ऐप के नियम आपके इच्छित व्यवहार को प्रदर्शित करते हैं।

अपने अपडेट तैनात करें

एक बार जब आप अपने नियमों को अद्यतन और परीक्षण कर लेते हैं, तो उन्हें उत्पादन के लिए तैनात करें। अपने आदेशों का चयन अकेले करने के लिए या उन्हें अपनी सामान्य परिनियोजन प्रक्रिया के भाग के रूप में लागू करने के लिए निम्न आदेशों का उपयोग करें।

क्लाउड फायरस्टार

// Deploy your .rules file
firebase deploy --only firestore:rules

रियलटाइम डेटाबेस

// Deploy your .rules file
firebase deploy --only database

घन संग्रहण

// Deploy your .rules file
firebase deploy --only storage

Firebase कंसोल का उपयोग करें

आप फायरबेस कंसोल से नियमों को संपादित और तैनात भी कर सकते हैं।

अपने नियमों को संपादित करें और अपडेट करें

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

अपने अपडेट का परीक्षण करें

आप नियम सिम्युलेटर का उपयोग करके सीधे फायरबेस कंसोल में अपने नियमों के व्यवहार का परीक्षण कर सकते हैं। नियम संपादक में सिम्युलेटर स्क्रीन खोलें, सेटिंग्स को संशोधित करें और रन पर क्लिक करें। संपादक के शीर्ष पर पुष्टिकरण संदेश देखें।

अपने अपडेट तैनात करें

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

व्यवस्थापक SDK का उपयोग करें

आप प्रोग्राम को बनाने, प्रबंधित करने और सुरक्षा नियमों को लागू करने के लिए Node.js के लिए व्यवस्थापक SDK का उपयोग कर सकते हैं। इस प्रोग्रामेटिक एक्सेस के साथ, आप यह कर सकते हैं:

  • नियमों के प्रबंधन के लिए कस्टम टूल, स्क्रिप्ट, डैशबोर्ड और CI / CD पाइपलाइनों को लागू करें।
  • कई फायरबेस परियोजनाओं में नियमों को अधिक आसानी से प्रबंधित करें।

प्रोग्राम को नियमपूर्वक अपडेट करते समय, अपने ऐप के एक्सेस कंट्रोल पर अनपेक्षित बदलाव करने से बचना बहुत महत्वपूर्ण है। नियमों को ध्यान में रखते हुए, विशेष रूप से सुरक्षा को ध्यान में रखते हुए अपने व्यवस्थापक एसडीके कोड को लिखें।

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

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

  • क्रमबद्ध होने पर नियम UTF-8 एनकोडेड पाठ के 64 KiB से छोटे होने चाहिए।
  • एक परियोजना में अधिकतम 2500 तैनात किए गए नियम हो सकते हैं। एक बार यह सीमा पूरी हो जाने के बाद, नए बनाने से पहले आपको कुछ पुराने नियम हटाने होंगे।

क्लाउड स्टोरेज या क्लाउड फायरस्टार नियम बनाएं और तैनात करें

व्यवस्थापक SDK के साथ सुरक्षा नियमों के प्रबंधन के लिए एक विशिष्ट वर्कफ़्लो में तीन असतत चरण शामिल हो सकते हैं:

  1. एक नियम फ़ाइल बनाएँ (वैकल्पिक)
  2. एक नियम बनाएं
  3. रिलीज, या तैनाती, नया नियम

एसडीके इन चरणों को क्लाउड स्टोरेज और क्लाउड फायरस्टार सुरक्षा नियमों के लिए एकल एपीआई कॉल में संयोजित करने की एक विधि प्रदान करता है। उदाहरण के लिए:

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

वैकल्पिक रूप से, आप इन-मेमोरी ऑब्जेक्ट के रूप में नियम फ़ाइल बना सकते हैं, नियम बना सकते हैं, और इन घटनाओं के करीब नियंत्रण के लिए अलग से नियमों को तैनात कर सकते हैं। उदाहरण के लिए:

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

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

व्यवस्थापक एसडीके के साथ रीयलटाइम डेटाबेस नियमों को अद्यतन करने के लिए, getRules() और setRules() admin.database तरीकों का admin.database । आप 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 साथ सभी मौजूदा नियमों को 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;
      }
    }

समय के साथ 2500-नियम की सीमा तक पहुंचने वाले बहुत बड़े नियमों के लिए, आप एक निश्चित समय चक्र पर सबसे पुराने नियमों को हटाने के लिए तर्क बना सकते हैं। उदाहरण के लिए, 30 दिनों से अधिक समय के लिए लागू सभी नियम सेटों को हटाने के लिए:

    const thirtyDays = new Date(Date.now() - THIRTY_DAYS_IN_MILLIS);
    const promises = [];
    allRulesets.forEach((rs) => {
      if (new Date(rs.crateTime) < thirtyDays) {
        promises.push(admin.securityRules().deleteRuleset(rs.name));
      }
    });
    await Promise.all(promises);
    console.log(`Deleted ${promises.length} rulesets.`);