ফায়ারবেস রিয়েলটাইম ডেটাবেস সুরক্ষা নিয়মগুলি নির্ধারণ করে যে কে আপনার ডেটাবেসে পড়ার এবং লেখার অ্যাক্সেস পেয়েছে, আপনার ডেটা কীভাবে গঠন করা হয়েছে এবং কোন সূচীগুলি বিদ্যমান। এই নিয়মগুলি Firebase সার্ভারে থাকে এবং সর্বদা স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। প্রতিটি পড়ার এবং লেখার অনুরোধ শুধুমাত্র তখনই সম্পূর্ণ হবে যদি আপনার নিয়ম এটির অনুমতি দেয়। ডিফল্টরূপে, আপনার নিয়মগুলি কাউকে আপনার ডাটাবেসে অ্যাক্সেসের অনুমতি দেয় না। আপনার নিয়ম কাস্টমাইজ করার বা প্রমাণীকরণ সেট আপ করার সময় না হওয়া পর্যন্ত এটি অপব্যবহার থেকে আপনার ডাটাবেসকে রক্ষা করার জন্য।
রিয়েলটাইম ডেটাবেস সুরক্ষা নিয়মগুলির একটি জাভাস্ক্রিপ্টের মতো সিনট্যাক্স রয়েছে এবং এটি চার প্রকারে আসে:
নিয়মের ধরন | |
---|---|
.পড়ুন | ব্যবহারকারীদের দ্বারা ডেটা পড়ার অনুমতি দেওয়া হয় কিনা তা বর্ণনা করে। |
.লিখুন | যদি এবং কখন ডেটা লেখার অনুমতি দেওয়া হয় তা বর্ণনা করে। |
যাচাই করুন | সঠিকভাবে ফরম্যাট করা মান কেমন হবে তা নির্ধারণ করে, এতে চাইল্ড অ্যাট্রিবিউট আছে কিনা এবং ডেটা টাইপ। |
.indexOn | ক্রম এবং অনুসন্ধান সমর্থন করার জন্য একটি শিশুকে সূচীতে নির্দিষ্ট করে৷ |
Realtime Database নিরাপত্তা ওভারভিউ
Firebase Realtime Database আপনার অ্যাপের নিরাপত্তা পরিচালনার জন্য টুলের একটি সম্পূর্ণ সেট প্রদান করে। এই সরঞ্জামগুলি আপনার ব্যবহারকারীদের প্রমাণীকরণ করা, ব্যবহারকারীর অনুমতিগুলি প্রয়োগ করা এবং ইনপুটগুলি যাচাই করা সহজ করে তোলে৷
ফায়ারবেস-চালিত অ্যাপ্লিকেশানগুলি অন্যান্য প্রযুক্তির স্ট্যাকগুলির তুলনায় বেশি ক্লায়েন্ট-সাইড কোড চালায়। অতএব, আমরা যেভাবে নিরাপত্তার সাথে যোগাযোগ করি তা আপনার অভ্যস্ততার থেকে কিছুটা ভিন্ন হতে পারে।
প্রমাণীকরণ
আপনার অ্যাপকে সুরক্ষিত করার একটি সাধারণ প্রথম ধাপ হল আপনার ব্যবহারকারীদের শনাক্ত করা। এই প্রক্রিয়াটিকে প্রমাণীকরণ বলা হয়। ব্যবহারকারীদের আপনার অ্যাপে সাইন ইন করার জন্য আপনি Firebase প্রমাণীকরণ ব্যবহার করতে পারেন। ফায়ারবেস প্রমাণীকরণে Google এবং Facebook এর মতো সাধারণ প্রমাণীকরণ পদ্ধতির পাশাপাশি ইমেল এবং পাসওয়ার্ড লগইন, বেনামী লগইন এবং আরও অনেক কিছুর জন্য ড্রপ-ইন সমর্থন অন্তর্ভুক্ত রয়েছে।
ব্যবহারকারীর পরিচয় একটি গুরুত্বপূর্ণ নিরাপত্তা ধারণা। বিভিন্ন ব্যবহারকারীর বিভিন্ন ডেটা থাকে এবং কখনও কখনও তাদের বিভিন্ন ক্ষমতা থাকে। উদাহরণস্বরূপ, একটি চ্যাট অ্যাপ্লিকেশনে, প্রতিটি বার্তা এটি তৈরি করা ব্যবহারকারীর সাথে যুক্ত থাকে। ব্যবহারকারীরা তাদের নিজস্ব বার্তাগুলি মুছতেও সক্ষম হতে পারে, তবে অন্য ব্যবহারকারীদের দ্বারা পোস্ট করা বার্তাগুলি নয়৷
অনুমোদন
আপনার ব্যবহারকারীকে শনাক্ত করা নিরাপত্তার অংশ মাত্র। একবার আপনি জানবেন যে তারা কারা, আপনার ডাটাবেসের ডেটাতে তাদের অ্যাক্সেস নিয়ন্ত্রণ করার একটি উপায় প্রয়োজন। রিয়েলটাইম ডেটাবেস নিরাপত্তা নিয়ম আপনাকে প্রতিটি ব্যবহারকারীর জন্য অ্যাক্সেস নিয়ন্ত্রণ করতে দেয়। উদাহরণস্বরূপ, এখানে নিরাপত্তা নিয়মের একটি সেট রয়েছে যা যে কাউকে পাথ /foo/
পড়তে দেয়, কিন্তু কেউ এতে লিখতে পারে না:
{ "rules": { "foo": { ".read": true, ".write": false } } }
.read
এবং .write
রুল ক্যাসকেড, তাই এই রুলসেট /foo/
পাথের যেকোন ডেটা এবং সেইসাথে /foo/bar/baz
মতো যেকোন গভীর পাথের রিড অ্যাক্সেস দেয়। মনে রাখবেন যে ডাটাবেসে .read
এবং .write
নিয়মগুলি আরও গভীর নিয়মগুলিকে ওভাররাইড করে, তাই /foo/bar/baz
এ পড়ার অ্যাক্সেস এখনও এই উদাহরণে মঞ্জুর করা হবে এমনকি যদি /foo/bar/baz
পাথের একটি নিয়ম মিথ্যাতে মূল্যায়ন করা হয়।
রিয়েলটাইম ডেটাবেস নিরাপত্তা নিয়মে অন্তর্নির্মিত ভেরিয়েবল এবং ফাংশন রয়েছে যা আপনাকে অন্যান্য পাথ, সার্ভার-সাইড টাইমস্ট্যাম্প, প্রমাণীকরণ তথ্য এবং আরও অনেক কিছু উল্লেখ করতে দেয়। এখানে এমন একটি নিয়মের উদাহরণ দেওয়া হল যা /users/<uid>/
কে প্রমাণীকৃত ব্যবহারকারীদের লেখার অ্যাক্সেস দেয়, যেখানে <uid> Firebase Authentication মাধ্যমে প্রাপ্ত ব্যবহারকারীর আইডি।
{ "rules": { "users": { "$uid": { ".write": "$uid === auth.uid" } } } }
ডেটা যাচাইকরণ
Firebase Realtime Database স্কিমলেস। এটি আপনার বিকাশের সাথে সাথে জিনিসগুলিকে পরিবর্তন করা সহজ করে, কিন্তু একবার আপনার অ্যাপ বিতরণের জন্য প্রস্তুত হয়ে গেলে, ডেটা সামঞ্জস্যপূর্ণ থাকা গুরুত্বপূর্ণ। নিয়মের ভাষাতে একটি .validate
নিয়ম রয়েছে যা আপনাকে .read
এবং .write
নিয়মের জন্য ব্যবহৃত একই অভিব্যক্তি ব্যবহার করে বৈধতা যুক্তি প্রয়োগ করতে দেয়। শুধুমাত্র পার্থক্য হল যে বৈধকরণের নিয়মগুলি ক্যাসকেড করে না , তাই সমস্ত প্রাসঙ্গিক বৈধতা নিয়মগুলিকে সত্য হিসাবে মূল্যায়ন করতে হবে যাতে লেখার অনুমতি দেওয়া যায়।
এই নিয়মগুলি প্রয়োগ করে যে /foo/
এ লেখা ডেটা অবশ্যই 100 অক্ষরের কম স্ট্রিং হতে হবে:
{ "rules": { "foo": { ".validate": "newData.isString() && newData.val().length < 100" } } }
বৈধকরণের নিয়মগুলির .read
এবং .write
নিয়মগুলির মতো একই অন্তর্নির্মিত ফাংশন এবং ভেরিয়েবলগুলির অ্যাক্সেস রয়েছে৷ আপনি এইগুলি ব্যবহার করতে পারেন বৈধতা নিয়ম তৈরি করতে যা আপনার ডাটাবেসের অন্য কোথাও ডেটা, আপনার ব্যবহারকারীর পরিচয়, সার্ভারের সময় এবং আরও অনেক কিছু সম্পর্কে সচেতন।
ডাটাবেস সূচক সংজ্ঞায়িত করা
Firebase Realtime Database ডেটা অর্ডার এবং অনুসন্ধানের অনুমতি দেয়। ছোট ডেটা আকারের জন্য, ডাটাবেস অ্যাডহক অনুসন্ধান সমর্থন করে, তাই সাধারণত বিকাশের সময় সূচীগুলির প্রয়োজন হয় না। যদিও আপনার অ্যাপ চালু করার আগে, আপনার অ্যাপের বৃদ্ধির সাথে সাথে সেগুলি কাজ চালিয়ে যাচ্ছে তা নিশ্চিত করার জন্য আপনার যেকোন প্রশ্নের জন্য সূচী নির্দিষ্ট করা গুরুত্বপূর্ণ।
সূচকগুলি .indexOn
নিয়ম ব্যবহার করে নির্দিষ্ট করা হয়। এখানে একটি উদাহরণ সূচক ঘোষণা যা ডাইনোসরের তালিকার জন্য উচ্চতা এবং দৈর্ঘ্যের ক্ষেত্রগুলিকে সূচী করবে:
{ "rules": { "dinosaurs": { ".indexOn": ["height", "length"] } } }