ফায়ারবেস নিরাপত্তা নিয়ম পরিচালনা এবং স্থাপন করুন

Firebase আপনাকে আপনার Rules পরিচালনা করার জন্য বেশ কয়েকটি সরঞ্জাম সরবরাহ করে, প্রতিটি নির্দিষ্ট ক্ষেত্রে কার্যকর এবং প্রত্যেকটি একই ব্যাকএন্ড Firebase নিরাপত্তা নিয়ম ব্যবস্থাপনা API ব্যবহার করে।

এটি চালু করার জন্য কোন টুল ব্যবহার করা হয় না কেন, ব্যবস্থাপনা API:

  • একটি নিয়মের উৎস ইনজেস্ট করে: নিয়মের একটি সেট, সাধারণত Firebase Security Rules বিবৃতি ধারণকারী একটি কোড ফাইল।
  • একটি অপরিবর্তনীয় রুলসেট হিসাবে গ্রহণ করা উৎস সংরক্ষণ করে।
  • একটি রিলিজে প্রতিটি নিয়ম সেটের স্থাপনা ট্র্যাক করে। ফায়ারবেস নিরাপত্তা বিধি-সক্ষম পরিষেবাগুলি একটি সুরক্ষিত সম্পদের জন্য প্রতিটি অনুরোধের মূল্যায়ন করার জন্য একটি প্রকল্পের জন্য রিলিজ সন্ধান করে।
  • একটি নিয়ম সেটের সিনট্যাকটিক এবং শব্দার্থিক পরীক্ষা চালানোর ক্ষমতা প্রদান করে।

Firebase CLI ব্যবহার করুন

Firebase CLI- এর সাহায্যে আপনি স্থানীয় উৎসগুলি আপলোড করতে এবং রিলিজগুলি স্থাপন করতে পারেন৷ CLI এর Firebase Local Emulator Suite আপনাকে উত্সগুলির সম্পূর্ণ স্থানীয় পরীক্ষা করতে দেয়৷

CLI ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশন কোড সহ আপনার নিয়মগুলিকে সংস্করণ নিয়ন্ত্রণে রাখতে পারবেন এবং আপনার বিদ্যমান স্থাপনার প্রক্রিয়ার অংশ হিসাবে নিয়মগুলি স্থাপন করতে পারবেন।

একটি কনফিগারেশন ফাইল তৈরি করুন

আপনি যখন Firebase CLI ব্যবহার করে আপনার Firebase প্রকল্প কনফিগার করেন, তখন আপনি আপনার প্রকল্প ডিরেক্টরিতে একটি .rules কনফিগারেশন ফাইল তৈরি করেন। আপনার ফায়ারবেস প্রকল্প কনফিগার করা শুরু করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

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 কনসোলে করা যেকোনো আপডেট ওভাররাইট করতে পারেন।

আপনার আপডেট পরীক্ষা করুন

Local Emulator Suite সমস্ত নিরাপত্তা নিয়ম-সক্ষম পণ্যের জন্য এমুলেটর প্রদান করে। প্রতিটি এমুলেটরের জন্য নিরাপত্তা বিধি ইঞ্জিন নিয়মের সিনট্যাকটিক এবং শব্দার্থিক মূল্যায়ন উভয়ই করে, এইভাবে নিরাপত্তা বিধি ব্যবস্থাপনা API অফার করে সিনট্যাকটিক পরীক্ষাকে অতিক্রম করে।

আপনি যদি CLI-এর সাথে কাজ করেন, তাহলে Firebase Security Rules পরীক্ষার জন্য স্যুট একটি চমৎকার টুল। স্থানীয়ভাবে আপনার আপডেটগুলি পরীক্ষা করার জন্য Local Emulator Suite ব্যবহার করুন এবং নিশ্চিত করুন যে আপনার অ্যাপের Rules আপনি যে আচরণটি চান তা প্রদর্শন করে৷

আপনার আপডেট স্থাপন করুন

একবার আপনি আপনার Rules আপডেট এবং পরীক্ষা করার পরে, উত্সগুলিকে উত্পাদনে স্থাপন করুন৷

Cloud Firestore Security Rules জন্য, আপনার firebase.json ফাইল পর্যালোচনা ও আপডেট করে আপনার ডিফল্ট এবং অতিরিক্ত নামকৃত ডাটাবেসের সাথে .rules ফাইলগুলিকে সংযুক্ত করুন৷

নির্বাচনীভাবে আপনার 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 কনসোল ব্যবহার করুন

এছাড়াও আপনি Rules উত্সগুলি সম্পাদনা করতে পারেন এবং সেগুলিকে Firebase কনসোল থেকে প্রকাশ হিসাবে স্থাপন করতে পারেন৷ আপনি Firebase কনসোল UI এ সম্পাদনা করার সাথে সাথে সিনট্যাকটিক পরীক্ষা করা হয় এবং Rules খেলার মাঠ ব্যবহার করে শব্দার্থিক পরীক্ষা উপলব্ধ।

আপনার নিয়মগুলি সম্পাদনা এবং আপডেট করুন

  1. Firebase কনসোল খুলুন এবং আপনার প্রকল্প নির্বাচন করুন.
  2. তারপর, পণ্য নেভিগেশন থেকে Realtime Database , Cloud Firestore বা স্টোরেজ নির্বাচন করুন, তারপর Rules সম্পাদকে নেভিগেট করতে নিয়মগুলিতে ক্লিক করুন৷
  3. সরাসরি সম্পাদকে আপনার নিয়ম সম্পাদনা করুন।

আপনার আপডেট পরীক্ষা করুন

সম্পাদক UI-তে সিনট্যাক্স পরীক্ষা করার পাশাপাশি, আপনি Rules খেলার মাঠ ব্যবহার করে সরাসরি Firebase কনসোলে আপনার প্রকল্পের ডাটাবেস এবং স্টোরেজ রিসোর্স ব্যবহার করে শব্দার্থিক Rules আচরণ পরীক্ষা করতে পারেন। Rules সম্পাদকে নিয়ম খেলার মাঠ স্ক্রীন খুলুন, সেটিংস পরিবর্তন করুন এবং রান ক্লিক করুন। সম্পাদকের শীর্ষে নিশ্চিতকরণ বার্তাটি দেখুন।

আপনার আপডেট স্থাপন করুন

একবার আপনি সন্তুষ্ট হন যে আপনার আপডেটগুলি আপনার প্রত্যাশা অনুযায়ী, প্রকাশ করুন ক্লিক করুন৷

অ্যাডমিন SDK ব্যবহার করুন

আপনি Node.js রুলসেটের জন্য Admin SDK ব্যবহার করতে পারেন। এই প্রোগ্রাম্যাটিক অ্যাক্সেসের সাথে, আপনি করতে পারেন:

  • নিয়ম পরিচালনার জন্য কাস্টম টুল, স্ক্রিপ্ট, ড্যাশবোর্ড এবং CI/CD পাইপলাইন প্রয়োগ করুন।
  • একাধিক ফায়ারবেস প্রকল্প জুড়ে আরও সহজে নিয়ম পরিচালনা করুন।

প্রোগ্রামগতভাবে নিয়মগুলি আপডেট করার সময়, আপনার অ্যাপের অ্যাক্সেস নিয়ন্ত্রণে অনিচ্ছাকৃত পরিবর্তনগুলি এড়াতে খুবই গুরুত্বপূর্ণ৷ নিরাপত্তার কথা মাথায় রেখে আপনার Admin SDK কোড লিখুন, বিশেষ করে নিয়ম আপডেট বা স্থাপন করার সময়।

আরেকটি গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে যে Firebase Security Rules প্রকাশগুলি সম্পূর্ণরূপে প্রচারিত হতে কয়েক মিনিট সময় নেয়। নিয়ম স্থাপন করার জন্য Admin SDK ব্যবহার করার সময়, আপনার অ্যাপ অবিলম্বে সেই নিয়মগুলির উপর নির্ভর করে যে রেস পরিস্থিতিগুলি এড়াতে ভুলবেন না যেগুলির স্থাপনা এখনও সম্পূর্ণ হয়নি৷ যদি আপনার ব্যবহারের ক্ষেত্রে নিয়ন্ত্রণের নিয়ম অ্যাক্সেস করার জন্য ঘন ঘন আপডেটের প্রয়োজন হয়, তাহলে Cloud Firestore ব্যবহার করে সমাধানগুলি বিবেচনা করুন, যা ঘন ঘন আপডেট হওয়া সত্ত্বেও রেসের অবস্থা কমাতে ডিজাইন করা হয়েছে।

এছাড়াও এই সীমাগুলি নোট করুন:

  • ক্রমিক করার সময় নিয়মগুলি অবশ্যই UTF-8 এনকোড করা পাঠ্যের 256 KiB-এর থেকে ছোট হতে হবে৷
  • একটি প্রকল্পে সর্বাধিক 2500টি নিয়োজিত নিয়ম সেট থাকতে পারে। একবার এই সীমা পৌঁছে গেলে, নতুন তৈরি করার আগে আপনাকে অবশ্যই কিছু পুরানো নিয়ম মুছে ফেলতে হবে৷

Cloud Storage বা Cloud Firestore নিয়ম সেট তৈরি করুন এবং স্থাপন করুন

Admin SDK সাথে নিরাপত্তা বিধি পরিচালনার জন্য একটি সাধারণ কর্মপ্রবাহে তিনটি পৃথক পদক্ষেপ অন্তর্ভুক্ত থাকতে পারে:

  1. একটি নিয়ম ফাইল উৎস তৈরি করুন (ঐচ্ছিক)
  2. একটি নিয়ম সেট তৈরি করুন
  3. রিলিজ, বা স্থাপন, নতুন নিয়ম সেট

SDK Cloud Storage এবং Cloud Firestore নিরাপত্তা নিয়মের জন্য এই ধাপগুলিকে একক API কলে একত্রিত করার একটি পদ্ধতি প্রদান করে। যেমন:

    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 নিয়ম সেট আপডেট করুন

Admin SDK সাথে Realtime Database নিয়ম সেটগুলি আপডেট করতে, 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;
      }
    }

সময়ের সাথে 2500 রুলসেট সীমাতে পৌঁছানো খুব বড় স্থাপনার জন্য, আপনি একটি নির্দিষ্ট সময় চক্রের প্রাচীনতম নিয়মগুলি মুছে ফেলার জন্য যুক্তি তৈরি করতে পারেন। উদাহরণস্বরূপ, 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 Security Rules ব্যবস্থাপনা সহ বিভিন্ন কর্মপ্রবাহের জন্য উপযুক্ত, কিন্তু আপনি নিজেই ব্যবস্থাপনা API ব্যবহার করে Firebase Security Rules পরিচালনা এবং স্থাপন করতে চাইতে পারেন। ব্যবস্থাপনা API আপনাকে সর্বাধিক নমনীয়তা দেয়।

এছাড়াও এই সীমাগুলি নোট করুন:

  • ক্রমিক করার সময় নিয়মগুলি অবশ্যই UTF-8 এনকোড করা পাঠ্যের 256 KiB-এর থেকে ছোট হতে হবে৷
  • একটি প্রকল্পে সর্বাধিক 2500টি নিয়োজিত নিয়ম সেট থাকতে পারে। একবার এই সীমা পৌঁছে গেলে, নতুন তৈরি করার আগে আপনাকে অবশ্যই কিছু পুরানো নিয়ম মুছে ফেলতে হবে৷

REST এর সাথে Cloud Firestore বা Cloud Storage নিয়ম সেট তৈরি করুন এবং স্থাপন করুন

এই বিভাগের উদাহরণগুলি Firestore Rules ব্যবহার করে, যদিও সেগুলি Cloud Storage Rules প্রযোজ্য৷

উদাহরণগুলি এপিআই কল করতে কার্এল ব্যবহার করে। প্রমাণীকরণ টোকেন সেট আপ এবং পাস করার পদক্ষেপগুলি বাদ দেওয়া হয়েছে৷ আপনি রেফারেন্স ডকুমেন্টেশনের সাথে ইন্টিগ্রেটেড API এক্সপ্লোরার ব্যবহার করে এই API নিয়ে পরীক্ষা করতে পারেন।

ম্যানেজমেন্ট এপিআই ব্যবহার করে একটি নিয়ম সেট তৈরি এবং স্থাপনের জন্য সাধারণ পদক্ষেপগুলি হল:

  1. নিয়ম ফাইল উত্স তৈরি করুন
  2. একটি নিয়ম সেট তৈরি করুন
  3. নতুন রুলসেট রিলিজ (ডিপ্লয়) করুন।

একটি উৎস তৈরি করুন

ধরুন আপনি আপনার secure_commerce Firebase প্রকল্পে কাজ করছেন এবং east_store নামের আপনার প্রকল্পের একটি ডাটাবেসে লক-ডাউন Cloud Firestore 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'

API একটি বৈধতা প্রতিক্রিয়া এবং একটি নিয়ম সেটের নাম প্রদান করে, উদাহরণস্বরূপ 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 Rules পরিচালনার জন্য নিজস্ব REST ইন্টারফেস প্রদান করে। REST এর মাধ্যমে ফায়ারবেস Realtime Database Rules পরিচালনা দেখুন।

REST এর সাথে নিয়মাবলী পরিচালনা করুন

নিয়ম সেট এবং রিলিজ তৈরির জন্য একটি REST পদ্ধতি ছাড়াও বৃহৎ নিয়ম স্থাপনা পরিচালনা করতে সাহায্য করার জন্য, ব্যবস্থাপনা API নিম্নলিখিত পদ্ধতিগুলি প্রদান করে:

  • তালিকা, পেতে, এবং মুছে ফেলুন
  • তালিকা, পেতে, এবং নিয়ম রিলিজ মুছে ফেলুন

সময়ের সাথে 2500 রুলসেট সীমাতে পৌঁছানো খুব বড় স্থাপনার জন্য, আপনি একটি নির্দিষ্ট সময় চক্রের প্রাচীনতম নিয়মগুলি মুছে ফেলার জন্য যুক্তি তৈরি করতে পারেন। উদাহরণস্বরূপ, 30 দিনের বেশি সময় ধরে স্থাপন করা সমস্ত নিয়ম সেট মুছে ফেলার জন্য, আপনি projects.rulesets.list পদ্ধতিতে কল করতে পারেন, তাদের createTime কী-তে Ruleset অবজেক্টের JSON তালিকা পার্স করতে পারেন, তারপর ruleset_id দ্বারা সংশ্লিষ্ট নিয়মসেটগুলিতে project.rulesets.delete কল করতে পারেন .

REST দিয়ে আপনার আপডেট পরীক্ষা করুন

অবশেষে, ম্যানেজমেন্ট এপিআই আপনাকে আপনার প্রোডাকশন প্রোজেক্টে Cloud Firestore এবং Cloud Storage রিসোর্সে সিনট্যাকটিক এবং সিমেন্টিক পরীক্ষা চালানোর অনুমতি দেয়।

এপিআই-এর এই উপাদানটির সাথে টেস্টিং এর মধ্যে রয়েছে:

  1. TestCase অবজেক্টের একটি সেট প্রতিনিধিত্ব করার জন্য একটি TestSuite JSON অবজেক্ট সংজ্ঞায়িত করা
  2. TestSuite জমা দেওয়া হচ্ছে
  3. পার্সিং TestResult বস্তু ফেরত

আসুন testcase.json ফাইলে একটি TestCase সহ একটি TestSuite অবজেক্ট সংজ্ঞায়িত করি। এই উদাহরণে, আমরা সেই নিয়মগুলিতে চালানোর জন্য পরীক্ষার স্যুটের পাশাপাশি REST পেলোডের সাথে Rules ভাষার উৎস ইনলাইনে পাস করি। আমরা একটি নিয়ম মূল্যায়ন প্রত্যাশা, এবং ক্লায়েন্টের অনুরোধ উল্লেখ করি যার বিরুদ্ধে রুলসেট পরীক্ষা করা হবে। আপনি পরীক্ষার রিপোর্টটি কতটা সম্পূর্ণ তাও উল্লেখ করতে পারেন, "FULL" মান ব্যবহার করে ফলাফল নির্দেশ করতে সমস্ত Rules ভাষার অভিব্যক্তি প্রতিবেদনে অন্তর্ভুক্ত করা উচিত, অনুরোধের সাথে মেলেনি এমন অভিব্যক্তিগুলি সহ।

 {
  "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-তে অনুরোধ জানানো হবে।

আপনি যদি এই ধরনের ক্রস-সার্ভিস নিরাপত্তা অক্ষম করার সিদ্ধান্ত নেন:

  1. প্রথমত, বৈশিষ্ট্যটি নিষ্ক্রিয় করার আগে, Cloud Firestore অ্যাক্সেস করতে Rules ফাংশন ব্যবহার করে এমন সমস্ত বিবৃতি সরিয়ে আপনার নিয়মগুলি সম্পাদনা করুন৷ অন্যথায়, বৈশিষ্ট্যটি অক্ষম করার পরে, Rules মূল্যায়নের ফলে আপনার সঞ্চয়স্থানের অনুরোধগুলি ব্যর্থ হবে৷

  2. ভূমিকা প্রত্যাহার করার জন্য ক্লাউড নির্দেশিকা অনুসরণ করে "Firebase রুলস ফায়ারস্টোর সার্ভিস এজেন্ট" ভূমিকা মুছতে Google ক্লাউড কনসোলের IAM পৃষ্ঠাটি ব্যবহার করুন৷

পরের বার যখন আপনি Firebase CLI বা Firebase কনসোল থেকে ক্রস-সার্ভিস নিয়মগুলি সংরক্ষণ করবেন তখন আপনাকে বৈশিষ্ট্যটি পুনরায় সক্ষম করার জন্য অনুরোধ করা হবে৷

,

Firebase আপনাকে আপনার Rules পরিচালনা করার জন্য বেশ কয়েকটি সরঞ্জাম সরবরাহ করে, প্রতিটি নির্দিষ্ট ক্ষেত্রে কার্যকর এবং প্রত্যেকটি একই ব্যাকএন্ড Firebase নিরাপত্তা নিয়ম ব্যবস্থাপনা API ব্যবহার করে।

এটি চালু করার জন্য কোন টুল ব্যবহার করা হয় না কেন, ব্যবস্থাপনা API:

  • একটি নিয়মের উৎস ইনজেস্ট করে: নিয়মের একটি সেট, সাধারণত Firebase Security Rules বিবৃতি ধারণকারী একটি কোড ফাইল।
  • একটি অপরিবর্তনীয় রুলসেট হিসাবে গ্রহণ করা উৎস সংরক্ষণ করে।
  • একটি রিলিজে প্রতিটি নিয়ম সেটের স্থাপনা ট্র্যাক করে। ফায়ারবেস নিরাপত্তা বিধি-সক্ষম পরিষেবাগুলি একটি সুরক্ষিত সম্পদের জন্য প্রতিটি অনুরোধের মূল্যায়ন করার জন্য একটি প্রকল্পের জন্য রিলিজ সন্ধান করে।
  • একটি নিয়ম সেটের সিনট্যাকটিক এবং শব্দার্থিক পরীক্ষা চালানোর ক্ষমতা প্রদান করে।

Firebase CLI ব্যবহার করুন

Firebase CLI- এর সাহায্যে আপনি স্থানীয় উৎসগুলি আপলোড করতে এবং রিলিজগুলি স্থাপন করতে পারেন৷ CLI এর Firebase Local Emulator Suite আপনাকে উত্সগুলির সম্পূর্ণ স্থানীয় পরীক্ষা করতে দেয়৷

CLI ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশন কোড সহ আপনার নিয়মগুলিকে সংস্করণ নিয়ন্ত্রণে রাখতে পারবেন এবং আপনার বিদ্যমান স্থাপনার প্রক্রিয়ার অংশ হিসাবে নিয়মগুলি স্থাপন করতে পারবেন।

একটি কনফিগারেশন ফাইল তৈরি করুন

আপনি যখন Firebase CLI ব্যবহার করে আপনার Firebase প্রকল্প কনফিগার করেন, তখন আপনি আপনার প্রকল্প ডিরেক্টরিতে একটি .rules কনফিগারেশন ফাইল তৈরি করেন। আপনার ফায়ারবেস প্রকল্প কনফিগার করা শুরু করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

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 কনসোলে করা যেকোনো আপডেট ওভাররাইট করতে পারেন।

আপনার আপডেট পরীক্ষা করুন

Local Emulator Suite সমস্ত নিরাপত্তা নিয়ম-সক্ষম পণ্যের জন্য এমুলেটর প্রদান করে। প্রতিটি এমুলেটরের জন্য নিরাপত্তা বিধি ইঞ্জিন নিয়মের সিনট্যাকটিক এবং শব্দার্থিক মূল্যায়ন উভয়ই করে, এইভাবে নিরাপত্তা বিধি ব্যবস্থাপনা API অফার করে সিনট্যাকটিক পরীক্ষাকে অতিক্রম করে।

আপনি যদি CLI-এর সাথে কাজ করেন, তাহলে Firebase Security Rules পরীক্ষার জন্য স্যুট একটি চমৎকার টুল। স্থানীয়ভাবে আপনার আপডেটগুলি পরীক্ষা করার জন্য Local Emulator Suite ব্যবহার করুন এবং নিশ্চিত করুন যে আপনার অ্যাপের Rules আপনি যে আচরণটি চান তা প্রদর্শন করে৷

আপনার আপডেট স্থাপন করুন

একবার আপনি আপনার Rules আপডেট এবং পরীক্ষা করার পরে, উত্সগুলিকে উত্পাদনে স্থাপন করুন৷

Cloud Firestore Security Rules জন্য, আপনার firebase.json ফাইল পর্যালোচনা ও আপডেট করে আপনার ডিফল্ট এবং অতিরিক্ত নামকৃত ডাটাবেসের সাথে .rules ফাইলগুলিকে সংযুক্ত করুন৷

নির্বাচনীভাবে আপনার 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 কনসোল ব্যবহার করুন

এছাড়াও আপনি Rules উত্সগুলি সম্পাদনা করতে পারেন এবং সেগুলিকে Firebase কনসোল থেকে প্রকাশ হিসাবে স্থাপন করতে পারেন৷ আপনি Firebase কনসোল UI এ সম্পাদনা করার সাথে সাথে সিনট্যাকটিক পরীক্ষা করা হয় এবং Rules খেলার মাঠ ব্যবহার করে শব্দার্থিক পরীক্ষা উপলব্ধ।

আপনার নিয়মগুলি সম্পাদনা এবং আপডেট করুন

  1. Firebase কনসোল খুলুন এবং আপনার প্রকল্প নির্বাচন করুন.
  2. তারপর, পণ্য নেভিগেশন থেকে Realtime Database , Cloud Firestore বা স্টোরেজ নির্বাচন করুন, তারপর Rules সম্পাদকে নেভিগেট করতে নিয়মগুলিতে ক্লিক করুন৷
  3. সরাসরি সম্পাদকে আপনার নিয়ম সম্পাদনা করুন।

আপনার আপডেট পরীক্ষা করুন

সম্পাদক UI-তে সিনট্যাক্স পরীক্ষা করার পাশাপাশি, আপনি Rules খেলার মাঠ ব্যবহার করে সরাসরি Firebase কনসোলে আপনার প্রকল্পের ডাটাবেস এবং স্টোরেজ রিসোর্স ব্যবহার করে শব্দার্থিক Rules আচরণ পরীক্ষা করতে পারেন। Rules সম্পাদকে নিয়ম খেলার মাঠ স্ক্রীন খুলুন, সেটিংস পরিবর্তন করুন এবং রান ক্লিক করুন। সম্পাদকের শীর্ষে নিশ্চিতকরণ বার্তাটি দেখুন।

আপনার আপডেট স্থাপন করুন

একবার আপনি সন্তুষ্ট হন যে আপনার আপডেটগুলি আপনার প্রত্যাশা অনুযায়ী, প্রকাশ করুন ক্লিক করুন৷

অ্যাডমিন SDK ব্যবহার করুন

আপনি Node.js রুলসেটের জন্য Admin SDK ব্যবহার করতে পারেন। এই প্রোগ্রাম্যাটিক অ্যাক্সেসের সাথে, আপনি করতে পারেন:

  • নিয়ম পরিচালনার জন্য কাস্টম টুল, স্ক্রিপ্ট, ড্যাশবোর্ড এবং CI/CD পাইপলাইন প্রয়োগ করুন।
  • একাধিক ফায়ারবেস প্রকল্প জুড়ে আরও সহজে নিয়ম পরিচালনা করুন।

প্রোগ্রামগতভাবে নিয়মগুলি আপডেট করার সময়, আপনার অ্যাপের অ্যাক্সেস নিয়ন্ত্রণে অনিচ্ছাকৃত পরিবর্তনগুলি এড়াতে খুবই গুরুত্বপূর্ণ৷ নিরাপত্তার কথা মাথায় রেখে আপনার Admin SDK কোড লিখুন, বিশেষ করে নিয়ম আপডেট বা স্থাপন করার সময়।

আরেকটি গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে যে Firebase Security Rules প্রকাশগুলি সম্পূর্ণরূপে প্রচারিত হতে কয়েক মিনিট সময় নেয়। নিয়ম স্থাপন করার জন্য Admin SDK ব্যবহার করার সময়, আপনার অ্যাপ অবিলম্বে সেই নিয়মগুলির উপর নির্ভর করে যে রেস পরিস্থিতিগুলি এড়াতে ভুলবেন না যেগুলির স্থাপনা এখনও সম্পূর্ণ হয়নি৷ যদি আপনার ব্যবহারের ক্ষেত্রে নিয়ন্ত্রণের নিয়ম অ্যাক্সেস করার জন্য ঘন ঘন আপডেটের প্রয়োজন হয়, তাহলে Cloud Firestore ব্যবহার করে সমাধানগুলি বিবেচনা করুন, যা ঘন ঘন আপডেট হওয়া সত্ত্বেও রেসের অবস্থা কমাতে ডিজাইন করা হয়েছে।

এছাড়াও এই সীমাগুলি নোট করুন:

  • ক্রমিক করার সময় নিয়মগুলি অবশ্যই UTF-8 এনকোড করা পাঠ্যের 256 KiB-এর থেকে ছোট হতে হবে৷
  • একটি প্রকল্পে সর্বাধিক 2500টি নিয়োজিত নিয়ম সেট থাকতে পারে। একবার এই সীমা পৌঁছে গেলে, নতুন তৈরি করার আগে আপনাকে অবশ্যই কিছু পুরানো নিয়ম মুছে ফেলতে হবে৷

Cloud Storage বা Cloud Firestore নিয়ম সেট তৈরি করুন এবং স্থাপন করুন

Admin SDK সাথে নিরাপত্তা বিধি পরিচালনার জন্য একটি সাধারণ কর্মপ্রবাহে তিনটি পৃথক পদক্ষেপ অন্তর্ভুক্ত থাকতে পারে:

  1. একটি নিয়ম ফাইল উৎস তৈরি করুন (ঐচ্ছিক)
  2. একটি নিয়ম সেট তৈরি করুন
  3. রিলিজ, বা স্থাপন, নতুন নিয়ম সেট

SDK Cloud Storage এবং Cloud Firestore নিরাপত্তা নিয়মের জন্য এই ধাপগুলিকে একক API কলে একত্রিত করার একটি পদ্ধতি প্রদান করে। যেমন:

    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 নিয়ম সেট আপডেট করুন

Admin SDK সাথে Realtime Database নিয়ম সেটগুলি আপডেট করতে, 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;
      }
    }

সময়ের সাথে 2500 রুলসেট সীমাতে পৌঁছানো খুব বড় স্থাপনার জন্য, আপনি একটি নির্দিষ্ট সময় চক্রের প্রাচীনতম নিয়মগুলি মুছে ফেলার জন্য যুক্তি তৈরি করতে পারেন। উদাহরণস্বরূপ, 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 Security Rules ব্যবস্থাপনা সহ বিভিন্ন কর্মপ্রবাহের জন্য উপযুক্ত, কিন্তু আপনি নিজেই ব্যবস্থাপনা API ব্যবহার করে Firebase Security Rules পরিচালনা এবং স্থাপন করতে চাইতে পারেন। ব্যবস্থাপনা API আপনাকে সর্বাধিক নমনীয়তা দেয়।

এছাড়াও এই সীমাগুলি নোট করুন:

  • ক্রমিক করার সময় নিয়মগুলি অবশ্যই UTF-8 এনকোড করা পাঠ্যের 256 KiB-এর থেকে ছোট হতে হবে৷
  • একটি প্রকল্পে সর্বাধিক 2500টি নিয়োজিত নিয়ম সেট থাকতে পারে। একবার এই সীমা পৌঁছে গেলে, নতুন তৈরি করার আগে আপনাকে অবশ্যই কিছু পুরানো নিয়ম মুছে ফেলতে হবে৷

REST এর সাথে Cloud Firestore বা Cloud Storage নিয়ম সেট তৈরি করুন এবং স্থাপন করুন

এই বিভাগের উদাহরণগুলি Firestore Rules ব্যবহার করে, যদিও সেগুলি Cloud Storage Rules প্রযোজ্য৷

উদাহরণগুলি এপিআই কল করতে কার্এল ব্যবহার করে। প্রমাণীকরণ টোকেন সেট আপ এবং পাস করার পদক্ষেপগুলি বাদ দেওয়া হয়েছে৷ আপনি রেফারেন্স ডকুমেন্টেশনের সাথে ইন্টিগ্রেটেড API এক্সপ্লোরার ব্যবহার করে এই API নিয়ে পরীক্ষা করতে পারেন।

ম্যানেজমেন্ট এপিআই ব্যবহার করে একটি নিয়ম সেট তৈরি এবং স্থাপনের জন্য সাধারণ পদক্ষেপগুলি হল:

  1. নিয়ম ফাইল উত্স তৈরি করুন
  2. একটি নিয়ম সেট তৈরি করুন
  3. নতুন রুলসেট রিলিজ (ডিপ্লয়) করুন।

একটি উৎস তৈরি করুন

ধরুন আপনি আপনার secure_commerce Firebase প্রকল্পে কাজ করছেন এবং east_store নামের আপনার প্রকল্পের একটি ডাটাবেসে লক-ডাউন Cloud Firestore 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'

API একটি বৈধতা প্রতিক্রিয়া এবং একটি নিয়ম সেট নাম প্রদান করে, উদাহরণস্বরূপ 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 Rules পরিচালনার জন্য নিজস্ব REST ইন্টারফেস প্রদান করে। REST এর মাধ্যমে ফায়ারবেস Realtime Database Rules পরিচালনা দেখুন।

REST এর সাথে নিয়মাবলী পরিচালনা করুন

নিয়ম সেট এবং রিলিজ তৈরির জন্য একটি REST পদ্ধতি ছাড়াও বৃহৎ নিয়ম স্থাপনা পরিচালনা করতে সাহায্য করার জন্য, ব্যবস্থাপনা API নিম্নলিখিত পদ্ধতিগুলি প্রদান করে:

  • তালিকা, পেতে, এবং মুছে ফেলুন
  • তালিকা, পেতে, এবং নিয়ম রিলিজ মুছে ফেলুন

সময়ের সাথে 2500 রুলসেট সীমাতে পৌঁছানো খুব বড় স্থাপনার জন্য, আপনি একটি নির্দিষ্ট সময় চক্রের প্রাচীনতম নিয়মগুলি মুছে ফেলার জন্য যুক্তি তৈরি করতে পারেন। উদাহরণস্বরূপ, 30 দিনের বেশি সময় ধরে স্থাপন করা সমস্ত নিয়ম সেট মুছে ফেলার জন্য, আপনি projects.rulesets.list পদ্ধতিতে কল করতে পারেন, তাদের createTime কী-তে Ruleset অবজেক্টের JSON তালিকা পার্স করতে পারেন, তারপর ruleset_id দ্বারা সংশ্লিষ্ট নিয়মসেটগুলিতে project.rulesets.delete কল করতে পারেন .

REST দিয়ে আপনার আপডেট পরীক্ষা করুন

অবশেষে, ম্যানেজমেন্ট এপিআই আপনাকে আপনার প্রোডাকশন প্রোজেক্টে Cloud Firestore এবং Cloud Storage রিসোর্সে সিনট্যাকটিক এবং সিমেন্টিক পরীক্ষা চালানোর অনুমতি দেয়।

এপিআই-এর এই উপাদানটির সাথে টেস্টিং এর মধ্যে রয়েছে:

  1. TestCase অবজেক্টের একটি সেট প্রতিনিধিত্ব করার জন্য একটি TestSuite JSON অবজেক্ট সংজ্ঞায়িত করা
  2. TestSuite জমা দেওয়া হচ্ছে
  3. পার্সিং TestResult বস্তু ফেরত

আসুন testcase.json ফাইলে একটি TestCase সহ একটি TestSuite অবজেক্ট সংজ্ঞায়িত করি। এই উদাহরণে, আমরা সেই নিয়মগুলিতে চালানোর জন্য পরীক্ষার স্যুটের পাশাপাশি REST পেলোডের সাথে Rules ভাষার উৎস ইনলাইনে পাস করি। আমরা একটি নিয়ম মূল্যায়ন প্রত্যাশা, এবং ক্লায়েন্টের অনুরোধ উল্লেখ করি যার বিরুদ্ধে রুলসেট পরীক্ষা করা হবে। আপনি পরীক্ষার রিপোর্টটি কতটা সম্পূর্ণ তাও উল্লেখ করতে পারেন, "FULL" মান ব্যবহার করে ফলাফল নির্দেশ করতে সমস্ত Rules ভাষার অভিব্যক্তি প্রতিবেদনে অন্তর্ভুক্ত করা উচিত, অনুরোধের সাথে মেলেনি এমন অভিব্যক্তিগুলি সহ।

 {
  "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-তে অনুরোধ জানানো হবে।

আপনি যদি এই ধরনের ক্রস-সার্ভিস নিরাপত্তা অক্ষম করার সিদ্ধান্ত নেন:

  1. প্রথমত, বৈশিষ্ট্যটি নিষ্ক্রিয় করার আগে, Cloud Firestore অ্যাক্সেস করতে Rules ফাংশন ব্যবহার করে এমন সমস্ত বিবৃতি সরিয়ে আপনার নিয়মগুলি সম্পাদনা করুন৷ অন্যথায়, বৈশিষ্ট্যটি অক্ষম করার পরে, Rules মূল্যায়নের ফলে আপনার সঞ্চয়স্থানের অনুরোধগুলি ব্যর্থ হবে৷

  2. ভূমিকা প্রত্যাহার করার জন্য ক্লাউড নির্দেশিকা অনুসরণ করে "Firebase রুলস ফায়ারস্টোর সার্ভিস এজেন্ট" ভূমিকা মুছতে Google ক্লাউড কনসোলের IAM পৃষ্ঠাটি ব্যবহার করুন৷

পরের বার যখন আপনি Firebase CLI বা Firebase কনসোল থেকে ক্রস-সার্ভিস নিয়মগুলি সংরক্ষণ করবেন তখন আপনাকে বৈশিষ্ট্যটি পুনরায় সক্ষম করার জন্য অনুরোধ করা হবে৷

,

Firebase আপনাকে আপনার Rules পরিচালনা করার জন্য বেশ কয়েকটি সরঞ্জাম সরবরাহ করে, প্রতিটি নির্দিষ্ট ক্ষেত্রে কার্যকর এবং প্রত্যেকটি একই ব্যাকএন্ড Firebase নিরাপত্তা নিয়ম ব্যবস্থাপনা API ব্যবহার করে।

এটি চালু করার জন্য কোন টুল ব্যবহার করা হয় না কেন, ব্যবস্থাপনা API:

  • একটি নিয়মের উৎস ইনজেস্ট করে: নিয়মের একটি সেট, সাধারণত Firebase Security Rules বিবৃতি ধারণকারী একটি কোড ফাইল।
  • একটি অপরিবর্তনীয় রুলসেট হিসাবে গ্রহণ করা উৎস সংরক্ষণ করে।
  • একটি রিলিজে প্রতিটি নিয়ম সেটের স্থাপনা ট্র্যাক করে। ফায়ারবেস নিরাপত্তা বিধি-সক্ষম পরিষেবাগুলি একটি সুরক্ষিত সম্পদের জন্য প্রতিটি অনুরোধের মূল্যায়ন করার জন্য একটি প্রকল্পের জন্য রিলিজ সন্ধান করে।
  • একটি নিয়ম সেটের সিনট্যাকটিক এবং শব্দার্থিক পরীক্ষা চালানোর ক্ষমতা প্রদান করে।

Firebase CLI ব্যবহার করুন

Firebase CLI- এর সাহায্যে আপনি স্থানীয় উৎসগুলি আপলোড করতে এবং রিলিজগুলি স্থাপন করতে পারেন৷ CLI এর Firebase Local Emulator Suite আপনাকে উত্সগুলির সম্পূর্ণ স্থানীয় পরীক্ষা করতে দেয়৷

CLI ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশন কোড সহ আপনার নিয়মগুলিকে সংস্করণ নিয়ন্ত্রণে রাখতে পারবেন এবং আপনার বিদ্যমান স্থাপনার প্রক্রিয়ার অংশ হিসাবে নিয়মগুলি স্থাপন করতে পারবেন।

একটি কনফিগারেশন ফাইল তৈরি করুন

আপনি যখন Firebase CLI ব্যবহার করে আপনার Firebase প্রকল্প কনফিগার করেন, তখন আপনি আপনার প্রকল্প ডিরেক্টরিতে একটি .rules কনফিগারেশন ফাইল তৈরি করেন। আপনার ফায়ারবেস প্রকল্প কনফিগার করা শুরু করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

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 কনসোলে করা যেকোনো আপডেট ওভাররাইট করতে পারেন।

আপনার আপডেট পরীক্ষা করুন

Local Emulator Suite সমস্ত নিরাপত্তা নিয়ম-সক্ষম পণ্যের জন্য এমুলেটর প্রদান করে। প্রতিটি এমুলেটরের জন্য নিরাপত্তা বিধি ইঞ্জিন নিয়মের সিনট্যাকটিক এবং শব্দার্থিক মূল্যায়ন উভয়ই করে, এইভাবে নিরাপত্তা বিধি ব্যবস্থাপনা API অফার করে সিনট্যাকটিক পরীক্ষাকে অতিক্রম করে।

আপনি যদি CLI-এর সাথে কাজ করেন, তাহলে Firebase Security Rules পরীক্ষার জন্য স্যুট একটি চমৎকার টুল। স্থানীয়ভাবে আপনার আপডেটগুলি পরীক্ষা করার জন্য Local Emulator Suite ব্যবহার করুন এবং নিশ্চিত করুন যে আপনার অ্যাপের Rules আপনি যে আচরণটি চান তা প্রদর্শন করে৷

আপনার আপডেট স্থাপন করুন

একবার আপনি আপনার Rules আপডেট এবং পরীক্ষা করার পরে, উত্সগুলিকে উত্পাদনে স্থাপন করুন৷

Cloud Firestore Security Rules জন্য, আপনার firebase.json ফাইল পর্যালোচনা ও আপডেট করে আপনার ডিফল্ট এবং অতিরিক্ত নামকৃত ডাটাবেসের সাথে .rules ফাইলগুলিকে সংযুক্ত করুন৷

নির্বাচনীভাবে আপনার 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 কনসোল ব্যবহার করুন

এছাড়াও আপনি Rules উত্সগুলি সম্পাদনা করতে পারেন এবং সেগুলিকে Firebase কনসোল থেকে প্রকাশ হিসাবে স্থাপন করতে পারেন৷ আপনি Firebase কনসোল UI এ সম্পাদনা করার সাথে সাথে সিনট্যাকটিক পরীক্ষা করা হয় এবং Rules খেলার মাঠ ব্যবহার করে শব্দার্থিক পরীক্ষা উপলব্ধ।

আপনার নিয়মগুলি সম্পাদনা এবং আপডেট করুন

  1. Firebase কনসোল খুলুন এবং আপনার প্রকল্প নির্বাচন করুন.
  2. তারপর, পণ্য নেভিগেশন থেকে Realtime Database , Cloud Firestore বা স্টোরেজ নির্বাচন করুন, তারপর Rules সম্পাদকে নেভিগেট করতে নিয়মগুলিতে ক্লিক করুন৷
  3. সরাসরি সম্পাদকে আপনার নিয়ম সম্পাদনা করুন।

আপনার আপডেট পরীক্ষা করুন

সম্পাদক ইউআই -তে সিনট্যাক্স পরীক্ষা করার পাশাপাশি আপনি আপনার প্রকল্পের ডাটাবেস এবং স্টোরেজ রিসোর্সগুলি ব্যবহার করে সরাসরি Firebase কনসোলে, Rules খেলার মাঠ ব্যবহার করে শব্দার্থক Rules আচরণ পরীক্ষা করতে পারেন। Rules সম্পাদকটিতে বিধিগুলির খেলার মাঠের স্ক্রিনটি খুলুন, সেটিংসটি সংশোধন করুন এবং রান ক্লিক করুন। সম্পাদকের শীর্ষে নিশ্চিতকরণ বার্তাটি সন্ধান করুন।

আপনার আপডেটগুলি স্থাপন করুন

একবার আপনি সন্তুষ্ট হয়ে গেলে আপনার আপডেটগুলি আপনি যা প্রত্যাশা করেন তা প্রকাশ করুন।

অ্যাডমিন এসডিকে ব্যবহার করুন

আপনি নোড.জেএস রুলসেটের জন্য Admin SDK ব্যবহার করতে পারেন। এই প্রোগ্রাম্যাটিক অ্যাক্সেস সহ, আপনি পারেন:

  • নিয়ম পরিচালনার জন্য কাস্টম সরঞ্জাম, স্ক্রিপ্ট, ড্যাশবোর্ড এবং সিআই/সিডি পাইপলাইন প্রয়োগ করুন।
  • একাধিক ফায়ারবেস প্রকল্পগুলিতে আরও সহজেই নিয়মগুলি পরিচালনা করুন।

প্রোগ্রামগতভাবে নিয়ম আপডেট করার সময়, আপনার অ্যাপ্লিকেশনটির অ্যাক্সেস নিয়ন্ত্রণে অনিচ্ছাকৃত পরিবর্তনগুলি এড়ানো খুব গুরুত্বপূর্ণ। সুরক্ষা সর্বাধিক মাথায় রেখে আপনার Admin SDK কোড লিখুন, বিশেষত নিয়ম আপডেট বা স্থাপন করার সময়।

আরেকটি গুরুত্বপূর্ণ বিষয় মনে রাখবেন যে Firebase Security Rules পুরোপুরি প্রচার করতে কয়েক মিনিটের সময় নেয়। নিয়ম মোতায়েন করার জন্য Admin SDK ব্যবহার করার সময়, আপনার অ্যাপ্লিকেশনটি অবিলম্বে এমন বিধিগুলির উপর নির্ভর করে এমন জাতি পরিস্থিতি এড়াতে ভুলবেন না যার স্থাপনা এখনও সম্পূর্ণ হয়নি। যদি আপনার ব্যবহারের ক্ষেত্রে নিয়ন্ত্রণের নিয়মগুলি অ্যাক্সেসের জন্য ঘন ঘন আপডেটগুলির প্রয়োজন হয় তবে Cloud Firestore ব্যবহার করে সমাধানগুলি বিবেচনা করুন, যা ঘন ঘন আপডেট হওয়া সত্ত্বেও জাতি পরিস্থিতি হ্রাস করার জন্য ডিজাইন করা হয়েছে।

এই সীমাগুলিও নোট করুন:

  • সিরিয়ালাইজ করা হলে বিধিগুলি ইউটিএফ -8 এনকোডেড পাঠ্যের 256 কিবের চেয়ে ছোট হতে হবে।
  • একটি প্রকল্পে সর্বাধিক 2500 মোট মোতায়েন রুলসেট থাকতে পারে। এই সীমাটি পৌঁছে গেলে, নতুন তৈরি করার আগে আপনাকে অবশ্যই কিছু পুরানো রুলসেট মুছতে হবে।

Cloud Storage বা Cloud Firestore রুলসেটগুলি তৈরি করুন এবং স্থাপন করুন

Admin SDK দিয়ে সুরক্ষা বিধি পরিচালনার জন্য একটি সাধারণ ওয়ার্কফ্লোতে তিনটি পৃথক পদক্ষেপ অন্তর্ভুক্ত থাকতে পারে:

  1. একটি নিয়ম ফাইল উত্স তৈরি করুন (al চ্ছিক)
  2. একটি নিয়ম সেট তৈরি করুন
  3. নতুন রুলসেট প্রকাশ করুন বা মোতায়েন করুন

এসডিকে 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);

Realtime Database রুলসেট আপডেট করুন

Admin SDK সহ Realtime Database রুলসেটগুলি আপডেট করতে, 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;
      }
    }

সময়ের সাথে সাথে 2500 রুলসেটের সীমাতে পৌঁছানোর জন্য খুব বড় মোতায়েনের জন্য, আপনি একটি নির্দিষ্ট সময় চক্রের প্রাচীনতম নিয়মগুলি মুছতে যুক্তি তৈরি করতে পারেন। উদাহরণস্বরূপ, 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 Security Rules পরিচালন সহ বিভিন্ন ওয়ার্কফ্লোগুলির সাথে উপযুক্ত, তবে আপনি নিজেই ম্যানেজমেন্ট এপিআই ব্যবহার করে Firebase Security Rules পরিচালনা ও স্থাপন করতে চাইতে পারেন। ম্যানেজমেন্ট এপিআই আপনাকে সর্বাধিক নমনীয়তা দেয়।

এই সীমাগুলিও নোট করুন:

  • সিরিয়ালাইজ করা হলে বিধিগুলি ইউটিএফ -8 এনকোডেড পাঠ্যের 256 কিবের চেয়ে ছোট হতে হবে।
  • একটি প্রকল্পে সর্বাধিক 2500 মোট মোতায়েন রুলসেট থাকতে পারে। এই সীমাটি পৌঁছে গেলে, নতুন তৈরি করার আগে আপনাকে অবশ্যই কিছু পুরানো রুলসেট মুছতে হবে।

Cloud Firestore বা Cloud Storage রুলসেটগুলি বিশ্রামের সাথে তৈরি করুন এবং স্থাপন করুন

এই বিভাগের উদাহরণগুলি ফায়ারস্টোর Rules ব্যবহার করে, যদিও তারা Cloud Storage Rules প্রযোজ্য।

উদাহরণগুলি এপিআই কল করতে কার্লও ব্যবহার করে। প্রমাণীকরণ টোকেন সেট আপ এবং পাস করার পদক্ষেপগুলি বাদ দেওয়া হয়। রেফারেন্স ডকুমেন্টেশনের সাথে সংহত এপিআই এক্সপ্লোরার ব্যবহার করে আপনি এই এপিআই নিয়ে পরীক্ষা করতে পারেন।

ম্যানেজমেন্ট এপিআই ব্যবহার করে একটি রুলসেট তৈরি এবং স্থাপনের জন্য সাধারণ পদক্ষেপগুলি হ'ল:

  1. নিয়ম ফাইল উত্স তৈরি করুন
  2. একটি নিয়ম সেট তৈরি করুন
  3. নতুন রুলসেট প্রকাশ করুন (মোতায়েন)।

একটি উৎস তৈরি করুন

আসুন ধরে নেওয়া যাক আপনি আপনার secure_commerce ফায়ারবেস প্রকল্পে কাজ করছেন এবং east_store নামে আপনার প্রকল্পের একটি ডাটাবেসে লকড-ডাউন Cloud Firestore Rules স্থাপন করতে চান।

আপনি এই নিয়মগুলি firestore.rules ফাইলে প্রয়োগ করতে পারেন।

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

একটি নিয়ম সেট তৈরি করুন

এখন, এই ফাইলটির জন্য একটি বেস 64-এনকোডেড ফিঙ্গারপ্রিন্ট তৈরি করুন। তারপরে আপনি এই ফাইলের উত্সটি ব্যবহার করতে পারেন projects.rulesets.create সহ একটি রুলসেট তৈরি করতে প্রয়োজনীয় পে -লোড পপুলেট করতে। এখানে, firestore.rules সামগ্রীগুলি rest োকানোর জন্য cat কমান্ডটি ব্যবহার করুন rest

ট্র্যাকিংয়ের জন্য, এটি আপনার 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 প্রকাশ করে পুরোপুরি প্রচার করতে কয়েক মিনিটের সময় নেয়। মোতায়েনের জন্য ম্যানেজমেন্ট আরইএসটি এপিআই ব্যবহার করার সময়, আপনার অ্যাপ্লিকেশনটি অবিলম্বে এমন নিয়মের উপর নির্ভর করে এমন জাতি পরিস্থিতি এড়াতে ভুলবেন না যার মোতায়েন এখনও সম্পূর্ণ হয়নি।

বিশ্রাম সহ Realtime Database রুলসেট আপডেট করুন

Realtime Database Rules পরিচালনার জন্য তার নিজস্ব বিশ্রাম ইন্টারফেস সরবরাহ করে। বিশ্রামের মাধ্যমে ফায়ারবেস Realtime Database Rules পরিচালনা করা দেখুন।

বিশ্রামের সাথে রুলসেটগুলি পরিচালনা করুন

রুলসেট এবং রিলিজ তৈরির জন্য একটি বিশ্রাম পদ্ধতি ছাড়াও বড় নিয়ম মোতায়েন পরিচালনা করতে সহায়তা করতে, পরিচালনা এপিআই পদ্ধতি সরবরাহ করে:

  • রুলসেটগুলি তালিকা, পান এবং মুছুন
  • বিধি রিলিজগুলি তালিকা করুন, পান এবং মুছুন

সময়ের সাথে সাথে 2500 রুলসেটের সীমাতে পৌঁছানোর জন্য খুব বড় মোতায়েনের জন্য, আপনি একটি নির্দিষ্ট সময় চক্রের প্রাচীনতম নিয়মগুলি মুছতে যুক্তি তৈরি করতে পারেন। উদাহরণস্বরূপ, 30 দিনের বেশি সময় ruleset_id মোতায়েন করা সমস্ত রুলসেটগুলি মুছে ফেলার জন্য, আপনি projects.rulesets.list কল createTime project.rulesets.delete Ruleset .

বিশ্রামের সাথে আপনার আপডেটগুলি পরীক্ষা করুন

অবশেষে, ম্যানেজমেন্ট এপিআই আপনাকে আপনার উত্পাদন প্রকল্পগুলিতে Cloud Firestore এবং Cloud Storage সংস্থানগুলিতে সিনট্যাকটিক এবং শব্দার্থক পরীক্ষা চালানোর অনুমতি দেয়।

এপিআইয়ের এই উপাদানটির সাথে পরীক্ষা করা:

  1. একটি TestSuite জেএসএন অবজেক্টের সংজ্ঞা দেওয়া TestCase অবজেক্টগুলির একটি সেট উপস্থাপন করতে
  2. TestSuite জমা দেওয়া
  3. TestResult অবজেক্টগুলি পার্সিং

আসুন একটি testcase.json ফাইলে একক TestCase সহ একটি TestSuite অবজেক্টটি সংজ্ঞায়িত করি। এই উদাহরণে, আমরা সেই নিয়মগুলি চালানোর জন্য পরীক্ষার স্যুটের পাশাপাশি বাকি পে -লোডের সাথে Rules ভাষার উত্স ইনলাইনটি পাস করি। আমরা একটি বিধি মূল্যায়ন প্রত্যাশা এবং ক্লায়েন্টের অনুরোধ যার বিরুদ্ধে রুলসেটটি পরীক্ষা করতে হবে তা নির্দিষ্ট করি। আপনি পরীক্ষার প্রতিবেদনটি কতটা সম্পূর্ণ তাও নির্দিষ্ট করতে পারেন, সমস্ত Rules ফলাফলগুলি নির্দেশ করতে "পূর্ণ" মান ব্যবহার করে ভাষার অভিব্যক্তিগুলি প্রতিবেদনে অন্তর্ভুক্ত করা উচিত, যা অনুরোধের সাথে মেলে না এমন অভিব্যক্তি সহ।

 {
  "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 Security Rules জন্য অনুমতিগুলি পরিচালনা করুন

আপনি যদি Cloud Storage Security Rules তৈরি করেন যা Cloud Firestore ডকুমেন্টের সামগ্রীগুলি সুরক্ষা শর্তগুলি মূল্যায়নের জন্য ব্যবহার করে তবে আপনাকে দুটি পণ্য সংযোগের অনুমতি সক্ষম করতে Firebase কনসোল বা Firebase সিএলআইতে অনুরোধ জানানো হবে।

আপনি যদি এই জাতীয় ক্রস-পরিষেবা সুরক্ষা অক্ষম করার সিদ্ধান্ত নেন:

  1. প্রথমত, বৈশিষ্ট্যটি অক্ষম করার আগে, আপনার বিধিগুলি সম্পাদনা করুন, Cloud Firestore অ্যাক্সেস করতে Rules ফাংশন ব্যবহার করে এমন সমস্ত বিবৃতি অপসারণ করুন। অন্যথায়, বৈশিষ্ট্যটি অক্ষম হওয়ার পরে, Rules মূল্যায়নগুলি আপনার স্টোরেজ অনুরোধগুলি ব্যর্থ হতে পারে।

  2. ভূমিকা প্রত্যাহার করার জন্য ক্লাউড গাইড অনুসরণ করে "ফায়ারবেস বিধি ফায়ারস্টোর সার্ভিস এজেন্ট" ভূমিকা মুছতে গুগল ক্লাউড কনসোলে আইএএম পৃষ্ঠাটি ব্যবহার করুন।

পরের বার আপনি Firebase সিএলআই বা Firebase কনসোল থেকে ক্রস-পরিষেবা বিধিগুলি সংরক্ষণ করার পরে আপনাকে বৈশিষ্ট্যটি পুনরায় সক্ষম করার অনুরোধ জানানো হবে।