Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

সঙ্গে Firebase CLI , স্থানীয় সূত্র ও প্রয়োগের রিলিজ আপলোড করতে পারেন। CLI এর Firebase স্থানীয় এমুলেটর সুইট আপনি উত্স সম্পূর্ণ স্থানীয় পরীক্ষামূলক সঞ্চালন করতে দেয়।

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 নিরাপত্তা বিধি পরীক্ষার জন্য একটি চমৎকার হাতিয়ার। ব্যবহার করুন স্থানীয় এমুলেটর সুইট স্থানীয়ভাবে এবং নিশ্চিত করেন যে আপনার অ্যাপ্লিকেশনের বিধি আচরণ যদি আপনি চান প্রদর্শন আপনার আপডেট পরীক্ষা করা হবে।

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

একবার আপনি আপনার নিয়মগুলি আপডেট এবং পরীক্ষা করলে, উত্পাদনের উত্সগুলি স্থাপন করুন। আপনার নিয়মগুলি এককভাবে বেছে নেওয়ার জন্য নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন বা আপনার সাধারণ স্থাপনার প্রক্রিয়ার অংশ হিসাবে সেগুলি স্থাপন করুন।

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

// 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 কনসোল ব্যবহার করুন

এছাড়াও আপনি সম্পাদন করা রুলস সূত্র করতে পারেন এবং তাদের Firebase কনসোল থেকে রিলিজ হিসাবে স্থাপন। অন্বিত পরীক্ষামূলক symantic পরীক্ষামূলক বিধি খেলার মাঠ ব্যবহার পাওয়া যায় যেমন Firebase কনসোল UI 'তে আপনি সম্পাদন করা সঞ্চালিত হয়, এবং।

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

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

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

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

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

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

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

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

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

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

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

এই সীমাগুলিও লক্ষ্য করুন:

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

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

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

  1. একটি নিয়ম ফাইল উৎস তৈরি করুন (alচ্ছিক)
  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);

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

এডমিন SDK এর সঙ্গে রিয়েলটাইম ডাটাবেস rulesets আপডেট করতে, ব্যবহার getRules() এবং setRules() পদ্ধতি admin.database । আপনি JSON ফর্ম্যাটে রুলসেট পুনরুদ্ধার করতে পারেন, অথবা মন্তব্য সহ একটি স্ট্রিং হিসাবে।

একটি নিয়ম সেট আপডেট করতে:

    const source = `{
      "rules": {
        "scores": {
          ".indexOn": "score",
          "$uid": {
            ".read": "$uid == auth.uid",
            ".write": "$uid == auth.uid"
          }
        }
      }
    }`;
    await admin.database().setRules(source);

রুলসেটগুলি পরিচালনা করুন

সাহায্যের বড় rulesets পরিচালনা করতে, এডমিন 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 দিনের জন্য মোতায়েন সব rulesets মুছে ফেলতে:

    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 নিরাপত্তা বিধিগুলি পরিচালনা এবং স্থাপন করতে চাইতে পারেন। ম্যানেজমেন্ট এপিআই আপনাকে সর্বাধিক নমনীয়তা দেয়।

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

এই সীমাগুলিও লক্ষ্য করুন:

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

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

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

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

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

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

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

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

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

curl -X POST -d '{
  "source": {
    {
      "files": [
        {
          "content": "' $(cat storage.rules) '",
          "name": "storage.rules",
          "fingerprint": <sha fingerprint>
        }
      ]
    }
  }
}' 'https://firebaserules.googleapis.com/v1/projects/secure_commerce/rulesets'

এপিআই একটি বৈধ করণ এবং একটি ruleset নাম, উদাহরণস্বরূপ ফেরৎ projects/secure_commerce/rulesets/uuid123 । যদি রুলসেট বৈধ হয়, চূড়ান্ত ধাপ হল একটি নামযুক্ত রিলিজে নতুন রুলসেট স্থাপন করা।

curl -X POST -d '{
  "name": "projects/secure_commerce/releases/prod/v23   "  ,
  "rulesetName": "projects/secure_commerce/rulesets/uuid123",
}' 'https://firebaserules.googleapis.com/v1/projects/secure_commerce/releases'

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

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

REST সহ রুলসেটগুলি পরিচালনা করুন

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

  • তালিকা, পেতে, এবং ডিলিট rulesets
  • তালিকা, পেতে, এবং ডিলিট নিয়ম রিলিজ

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

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

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

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

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

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

 {
  "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 সঙ্গে evalution জন্য projects.test পদ্ধতি।

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

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