Firebase-এর Realtime Database এবং Firestore দুটি ডেটাবেস সেবা প্রদান করে, যেগুলোর নিরাপত্তা নিশ্চিত করতে Firebase Security Rules ব্যবহার করা হয়। Realtime Database এবং Firestore-এর জন্য নিরাপত্তা রুলস তৈরি করার সময় কিছু মৌলিক পার্থক্য রয়েছে, তবে তাদের মূল উদ্দেশ্য একই—ডেটাবেসের ডেটা অ্যাক্সেস এবং ম্যানিপুলেশন সঠিকভাবে নিয়ন্ত্রণ করা।
Realtime Database এর জন্য নিরাপত্তা নিয়ম
Realtime Database এর নিরাপত্তা নিয়মের মূল ধারণা
Realtime Database একটি হায়ারার্কিকাল ডেটাবেস, যেখানে আপনি ডেটার কাঠামো ট্রি ফরম্যাটে সংরক্ষণ করেন। এর নিরাপত্তা নিয়মে আপনি read এবং write অ্যাক্সেস কন্ট্রোল করতে পারেন।
Realtime Database এর জন্য নিরাপত্তা নিয়মের মৌলিক গঠন
- read এবং write:
.readরুল ব্যবহারকারীর জন্য ডেটা পড়ার অনুমতি দেয়।.writeরুল ডেটা লেখার অনুমতি দেয়।
- ভ্যালিডেশন:
newDataএবংdataপ্রোপার্টি ব্যবহার করে ডেটার মান যাচাই করা যায়।
উদাহরণ:
ব্যবহারকারী ডেটা অ্যাক্সেস নিয়ন্ত্রণ:
{
"rules": {
"users": {
"$userId": {
".read": "auth != null && auth.uid == $userId", // শুধুমাত্র সেই ব্যবহারকারী তার নিজের ডেটা পড়তে পারবে
".write": "auth != null && auth.uid == $userId" // ব্যবহারকারী শুধুমাত্র তার নিজের ডেটা লিখতে পারবে
}
}
}
}
পোস্টের জন্য নিরাপত্তা নিয়ম:
{
"rules": {
"posts": {
"$postId": {
".read": "auth != null", // লগইন করা ব্যবহারকারী পোস্ট পড়তে পারবে
".write": "auth != null && auth.uid == newData.child('authorId').val()", // কেবল পোস্টের লেখকই পোস্ট আপডেট বা ডিলিট করতে পারবে
".validate": "newData.child('title').val().length > 3" // পোস্টের শিরোনাম কমপক্ষে ৩ অক্ষরের হতে হবে
}
}
}
}
Firestore এর জন্য নিরাপত্তা নিয়ম
Firestore একটি ডকুমেন্ট-ভিত্তিক ডেটাবেস, যা আরও ফ্লেক্সিবল এবং স্কেলেবল। Firestore-এর নিরাপত্তা রুলস তৈরি করার সময় আপনি Collection এবং Document পর্যায়ে নিরাপত্তা নিয়ন্ত্রণ করতে পারেন।
Firestore এর নিরাপত্তা নিয়মের মূল গঠন
- read এবং write:
.readএবং.writeরুল ব্যবহার করে আপনি ডেটার অ্যাক্সেস কন্ট্রোল করতে পারেন।
- ভ্যালিডেশন:
newDataবাresourceব্যবহার করে ডেটার মান যাচাই করা যায়।
- অথেনটিকেশন এবং অথোরাইজেশন:
- Firebase Authentication ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে, শুধুমাত্র লগইন করা ব্যবহারকারীই অ্যাক্সেস করতে পারবে।
উদাহরণ:
ব্যবহারকারী ডেটার জন্য নিরাপত্তা নিয়ম:
{
"rules": {
"users": {
"$userId": {
".read": "auth != null && auth.uid == $userId", // ব্যবহারকারী শুধু তার নিজের ডেটা পড়তে পারবে
".write": "auth != null && auth.uid == $userId" // ব্যবহারকারী শুধু তার নিজের ডেটা লিখতে পারবে
}
}
}
}
পোস্টের জন্য নিরাপত্তা নিয়ম:
{
"rules": {
"posts": {
"$postId": {
".read": "auth != null", // লগইন করা ব্যবহারকারী পোস্ট পড়তে পারবে
".write": "auth != null && auth.uid == newData.child('authorId').val()", // শুধুমাত্র পোস্টের লেখকই লিখতে বা আপডেট করতে পারবে
".validate": "newData.child('content').val().length > 0" // পোস্টের কনটেন্ট অবশ্যই থাকতে হবে
}
}
}
}
Realtime Database এবং Firestore এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Realtime Database | Firestore |
|---|---|---|
| ডেটা কাঠামো | হায়ারার্কিকাল (JSON Tree) | ডকুমেন্ট এবং কোলেকশন ভিত্তিক (Documents and Collections) |
| ডেটা অ্যাক্সেস কন্ট্রোল | ডেটাবেসের সার্বিক অ্যাক্সেস নিয়ন্ত্রণ | ডকুমেন্ট এবং কোলেকশনের জন্য পৃথক রুল |
| ব্যবহারকারী ডেটা নিয়ন্ত্রণ | .read এবং .write | .read এবং .write |
| রুলস ফরম্যাট | JSON | JSON |
Firebase Security Rules সেটআপ করার ধাপ
১. Firebase Console থেকে রুলস কনফিগারেশন
Firebase Console-এ গিয়ে আপনার প্রজেক্ট নির্বাচন করুন। এরপর "Database" বা "Firestore" ট্যাবটি সিলেক্ট করুন এবং "Rules" সেকশনে গিয়ে আপনি আপনার নিরাপত্তা নিয়ম কনফিগার করতে পারবেন।
২. রুলস টেস্ট করা
Firebase Emulator Suite ব্যবহার করে আপনি আপনার সিকিউরিটি রুলস পরীক্ষা করতে পারেন, যাতে আপনি সঠিকভাবে নিশ্চিত হতে পারেন যে আপনার সিকিউরিটি রুলস যথাযথভাবে কাজ করছে।
সারাংশ
Realtime Database এবং Firestore-এর জন্য নিরাপত্তা নিয়ম Firebase Security Rules-এর মাধ্যমে অ্যাক্সেস নিয়ন্ত্রণ এবং ডেটার বৈধতা নিশ্চিত করা যায়। Realtime Database এ ডেটা ট্রি আকারে থাকে এবং Firestore এ ডকুমেন্ট ও কোলেকশনের ভিত্তিতে ডেটা সংগঠিত হয়। উভয় ডেটাবেসের জন্যই read এবং write রুলস কাস্টমাইজ করে নির্দিষ্ট ডেটা অ্যাক্সেস নিয়ন্ত্রণ করা সম্ভব। Firebase Console থেকে এই রুলস সেটআপ ও টেস্ট করা যায়, যা নিরাপত্তা নিশ্চিত করতে সাহায্য করে।
Read more