Cloud Firestore Security Rules সাহায্যে, আপনি ইনফ্রাস্ট্রাকচার পরিচালনা করা বা সার্ভার-সাইড অথেনটিকেশন ও অথরাইজেশন কোড লেখার ঝামেলা ছাড়াই একটি চমৎকার ইউজার এক্সপেরিয়েন্স তৈরিতে মনোযোগ দিতে পারেন।
নিরাপত্তা নিয়মাবলী একটি সহজ অথচ সুস্পষ্ট বিন্যাসে অ্যাক্সেস নিয়ন্ত্রণ এবং ডেটা যাচাইকরণ প্রদান করে। আপনার ব্যবহারকারীদের ডেটা সুরক্ষিত রাখে এমন ব্যবহারকারী-ভিত্তিক এবং ভূমিকা-ভিত্তিক অ্যাক্সেস সিস্টেম তৈরি করতে, আপনাকে Cloud Firestore Security Rules সাথে ফায়ারবেস অথেনটিকেশন ব্যবহার করতে হবে।
নিরাপত্তা বিধি সংস্করণ ২
মে ২০১৯ থেকে, Cloud Firestore নিরাপত্তা নিয়মের সংস্করণ ২ এখন উপলব্ধ। নিয়মের সংস্করণ ২ রিকার্সিভ ওয়াইল্ডকার্ড {name=**} এর আচরণ পরিবর্তন করে। আপনি যদি কালেকশন গ্রুপ কোয়েরি ব্যবহার করার পরিকল্পনা করেন, তবে আপনাকে অবশ্যই সংস্করণ ২ ব্যবহার করতে হবে। আপনার নিরাপত্তা নিয়মের প্রথম লাইনে rules_version = '2'; লিখে আপনাকে অবশ্যই সংস্করণ ২ বেছে নিতে হবে।
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
লেখার নিয়ম
আপনি আপনার প্রোজেক্টের ডিফল্ট ডেটাবেস এবং প্রতিটি অতিরিক্ত ডেটাবেসের জন্য তৈরি করা ডেটা মডেল অনুযায়ী Cloud Firestore Security Rules লিখবেন এবং পরিচালনা করবেন।
সমস্ত Cloud Firestore Security Rules match স্টেটমেন্ট থাকে, যা আপনার ডেটাবেসের ডকুমেন্টগুলো শনাক্ত করে, এবং allow এক্সপ্রেশন থাকে, যা সেই ডকুমেন্টগুলোতে অ্যাক্সেস নিয়ন্ত্রণ করে:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Cloud Firestore মোবাইল/ওয়েব ক্লায়েন্ট লাইব্রেরি থেকে করা প্রতিটি ডাটাবেস অনুরোধ, কোনো ডেটা পড়া বা লেখার আগে আপনার নিরাপত্তা নিয়ম অনুসারে মূল্যায়ন করা হয়। যদি নিয়মগুলো নির্দিষ্ট ডকুমেন্ট পাথগুলোর কোনোটিতে অ্যাক্সেস প্রত্যাখ্যান করে, তাহলে সম্পূর্ণ অনুরোধটি ব্যর্থ হয়।
নিম্নে কিছু মৌলিক নিয়মাবলীর উদাহরণ দেওয়া হলো। যদিও এই নিয়মগুলো বৈধ, তবে প্রোডাকশন অ্যাপ্লিকেশনের জন্য এগুলো সুপারিশ করা হয় না:
প্রমাণীকরণ প্রয়োজন
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
সব অস্বীকার করুন
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
সব অনুমতি দিন
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
উপরের উদাহরণগুলিতে ব্যবহৃত {document=**} পাথটি সম্পূর্ণ ডাটাবেসের যেকোনো ডকুমেন্টের সাথে মেলে। নির্দিষ্ট ডেটা পাথ কীভাবে মেলাতে হয় এবং হায়ারারকিক্যাল ডেটা নিয়ে কীভাবে কাজ করতে হয় তা শিখতে সিকিউরিটি রুলস গঠনের গাইডটি পড়ুন।
পরীক্ষার নিয়ম
Cloud Firestore একটি রুলস সিমুলেটর প্রদান করে যা আপনি আপনার রুলসেট পরীক্ষা করার জন্য ব্যবহার করতে পারেন। আপনি ফায়ারবেস কনসোলের Cloud Firestore বিভাগের রুলস ট্যাব থেকে সিমুলেটরটি অ্যাক্সেস করতে পারবেন।
রুলস সিমুলেটর আপনাকে অথেনটিকেটেড এবং আনঅথেনটিকেটেড রিড, রাইট এবং ডিলিট সিমুলেট করতে দেয়। যখন আপনি একটি অথেনটিকেটেড রিকোয়েস্ট সিমুলেট করেন, তখন আপনি বিভিন্ন প্রোভাইডার থেকে অথেনটিকেশন টোকেন তৈরি এবং প্রিভিউ করতে পারেন। সিমুলেটেড রিকোয়েস্টগুলো আপনার এডিটরে থাকা রুলসেটের বিপরীতে চলে, আপনার বর্তমানে ডেপ্লয় করা রুলসেটের বিপরীতে নয়।
নিয়ম প্রয়োগ করা
আপনার মোবাইল অ্যাপ থেকে Cloud Firestore ব্যবহার শুরু করার আগে, আপনাকে সিকিউরিটি রুলস ডিপ্লয় করতে হবে। আপনি ফায়ারবেস কনসোলে, ফায়ারবেস সিএলআই (CLI) ব্যবহার করে, অথবা Cloud Firestore ম্যানেজমেন্ট রেস্ট এপিআই (REST API) দিয়ে রুলস ডিপ্লয় করতে পারেন।
Cloud Firestore Security Rules আপডেটগুলি নতুন কোয়েরি এবং লিসেনারগুলিকে প্রভাবিত করতে এক মিনিট পর্যন্ত সময় নিতে পারে। তবে, পরিবর্তনগুলি সম্পূর্ণরূপে ছড়িয়ে পড়তে এবং যেকোনো সক্রিয় লিসেনারকে প্রভাবিত করতে ১০ মিনিট পর্যন্ত সময় লাগতে পারে।
ফায়ারবেস কনসোল ব্যবহার করুন
আপনার প্রোজেক্টের ডিফল্ট ডেটাবেসের জন্য প্রথম সেট নিয়ম তৈরি ও প্রয়োগ করতে, Firebase কনসোলের Cloud Firestore বিভাগের Rules ট্যাবটি খুলুন।
অনলাইন এডিটরে আপনার নিয়মগুলো লিখুন, তারপর পাবলিশ-এ ক্লিক করুন।
ফায়ারবেস সিএলআই ব্যবহার করুন
আপনি Firebase CLI ব্যবহার করেও রুলগুলো ডিপ্লয় করতে পারেন। CLI ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশন কোডের সাথে রুলগুলোকে ভার্সন কন্ট্রোলের অধীনে রাখতে পারেন এবং আপনার বিদ্যমান ডিপ্লয়মেন্ট প্রক্রিয়ার অংশ হিসেবে রুলগুলো ডিপ্লয় করতে পারেন।
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
Cloud Storage নিরাপত্তা জোরদার করুন
আপনার অ্যাপগুলো Cloud Firestore শক্তিশালী ডাটাবেস ফিচার এবং Cloud Storage ফাইল স্টোরেজ ও ম্যানেজমেন্ট ফিচার থেকে উপকৃত হবে। এই প্রোডাক্টগুলো একসাথে ব্যবহার করলে অ্যাপের নিরাপত্তাও আরও জোরদার হয়, কারণ Cloud Firestore উভয় প্রোডাক্টের জন্যই ফায়ারবেস সিকিউরিটি রুলস দ্বারা ব্যবহারযোগ্য অথরাইজেশন রিকোয়ারমেন্টগুলো ক্যাপচার করতে পারে। আরও বিস্তারিত জানতে, Cloud Storage গাইডটি দেখুন।
পরবর্তী পদক্ষেপ
- নিরাপত্তা বিধি কীভাবে গঠন করতে হয় তা শিখুন।
- নিজস্ব নিরাপত্তা নিয়মের শর্তাবলী লিখুন।
- নিরাপত্তা বিধি নির্দেশিকাটি পড়ুন।