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

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

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

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

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

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

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

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

আপনি যখন 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 ব্যবহার করে ধারাবাহিকভাবে আপডেট করছেন কিনা তা নিশ্চিত করুন। অন্যথায়, আপনি Firebase কনসোলে করা যেকোনো আপডেট ওভাররাইট করতে পারেন।

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

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

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

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

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

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

নির্বাচনীভাবে আপনার নিয়মগুলিকে একা স্থাপন করতে বা আপনার স্বাভাবিক স্থাপনার প্রক্রিয়ার অংশ হিসাবে সেগুলি স্থাপন করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন৷

ক্লাউড ফায়ারস্টোর

// 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>

রিয়েলটাইম ডাটাবেস

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

মেঘ স্টোরেজ

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

ফায়ারবেস কনসোল ব্যবহার করুন

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ক্লাউড স্টোরেজ বা ক্লাউড ফায়ারস্টোর নিয়ম সেট তৈরি করুন এবং স্থাপন করুন

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

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

SDK ক্লাউড স্টোরেজ এবং ক্লাউড ফায়ারস্টোর নিরাপত্তা নিয়মের জন্য এই ধাপগুলিকে একক 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);

এই একই প্যাটার্ন ক্লাউড স্টোরেজ নিয়মের জন্য releaseFirestoreRulesetFromSource() এর সাথে কাজ করে।

বিকল্পভাবে, আপনি একটি ইন-মেমরি অবজেক্ট হিসাবে নিয়ম ফাইল তৈরি করতে পারেন, নিয়ম সেট তৈরি করতে পারেন এবং এই ইভেন্টগুলির ঘনিষ্ঠ নিয়ন্ত্রণের জন্য আলাদাভাবে নিয়ম সেট স্থাপন করতে পারেন। উদাহরণ স্বরূপ:

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

সময়ের সাথে 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 ব্যবহার করুন

উপরে বর্ণিত টুলগুলি আপনার প্রোজেক্টে একাধিক ক্লাউড ফায়ারস্টোর ডাটাবেসের জন্য ফায়ারবেস নিরাপত্তা বিধি ব্যবস্থাপনা সহ বিভিন্ন কর্মপ্রবাহের জন্য উপযুক্ত, কিন্তু আপনি নিজেই ব্যবস্থাপনা API ব্যবহার করে Firebase নিরাপত্তা নিয়মগুলি পরিচালনা এবং স্থাপন করতে চাইতে পারেন। ব্যবস্থাপনা API আপনাকে সর্বাধিক নমনীয়তা দেয়।

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

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

REST এর সাথে ক্লাউড ফায়ারস্টোর বা ক্লাউড স্টোরেজ নিয়ম সেট তৈরি করুন এবং স্থাপন করুন

এই বিভাগের উদাহরণগুলি Firestore নিয়মগুলি ব্যবহার করে, যদিও সেগুলি ক্লাউড স্টোরেজ নিয়মগুলিতেও প্রযোজ্য৷

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

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

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

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

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

আপনি একটি 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'

সচেতন থাকুন যে ফায়ারবেস নিরাপত্তা বিধি প্রকাশগুলি সম্পূর্ণরূপে প্রচারিত হতে কয়েক মিনিট সময় নেয়৷ পরিচালনার জন্য REST API ব্যবহার করার সময়, রেস পরিস্থিতি এড়াতে নিশ্চিত করুন যেখানে আপনার অ্যাপ অবিলম্বে সেই নিয়মগুলির উপর নির্ভর করে যার স্থাপনা এখনও সম্পূর্ণ হয়নি৷

REST এর সাথে রিয়েলটাইম ডাটাবেস রুলসেট আপডেট করুন

রিয়েলটাইম ডেটাবেস নিয়ম পরিচালনার জন্য নিজস্ব REST ইন্টারফেস প্রদান করে। REST এর মাধ্যমে ফায়ারবেস রিয়েলটাইম ডাটাবেস নিয়ম পরিচালনা দেখুন।

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

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

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

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

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

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

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

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

তারপর আমরা projects.test পদ্ধতিতে মূল্যায়নের জন্য এই TestSuite জমা দিতে পারি।

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

ফিরে আসা TestReport (পরীক্ষার সাফল্য/ব্যর্থতার স্থিতি, ডিবাগ বার্তাগুলির তালিকা, পরিদর্শন করা নিয়মের অভিব্যক্তির তালিকা এবং তাদের মূল্যায়ন রিপোর্ট) স্থিতি সাফল্যের সাথে নিশ্চিত করবে যে অ্যাক্সেস সঠিকভাবে অনুমোদিত।

ক্রস-সার্ভিস ক্লাউড স্টোরেজ নিরাপত্তা নিয়মের জন্য অনুমতিগুলি পরিচালনা করুন

আপনি যদি ক্লাউড স্টোরেজ সুরক্ষা নিয়ম তৈরি করেন যা নিরাপত্তা পরিস্থিতি মূল্যায়ন করতে ক্লাউড ফায়ারস্টোর নথির বিষয়বস্তু ব্যবহার করে, তাহলে আপনাকে দুটি পণ্য সংযোগ করার অনুমতি সক্ষম করার জন্য Firebase কনসোল বা Firebase CLI-তে অনুরোধ জানানো হবে।

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

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

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

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