Access Control Lists & Rule Engines
ইউজার আইডেন্টিটি ভেরিফাই হওয়ার পর (Authentication), সিস্টেমকে সিদ্ধান্ত নিতে হয় ইউজারের সেই নির্দিষ্ট রিসোর্সটি এক্সেস করার ক্ষমতা আছে কিনা। একে বলা হয় Authorization। এটি করার দুটি জনপ্রিয় পদ্ধতি হলো ACL এবং Rule Engines।
1. Access Control Lists (ACL)
ACL হলো একটি সাধারণ টেবিল বা লিশ্ট যেখানে বলা থাকে কোন ইউজারের কোন রিসোর্সের ওপর কি কি পারমিশন (Read, Write, Delete) আছে।
- বিমূর্ততা (Abstraction): সাধারণত এটি ফাইল সিস্টেম বা নেটওয়ার্ক ডিভাইসে বেশি দেখা যায়।
- উদাহরণ: "Ripon has permission to Read 'config.json'"।
- সুবিধা: ডিজাইন করা সহজ।
- অসুবিধা: যখন ইউজার এবং রিসোর্সের সংখ্যা অনেক বেড়ে যায়, তখন এটি মেইনটেইন করা কঠিন হয়ে পড়ে। (এর বদলে তখন RBAC - Role Based Access Control ব্যবহার করা হয়)।
2. Rule Engines
Rule Engines হলো একটি সিস্টেম যা ডিনামিকাল লজিক বা নিয়মের (Rules) ওপর ভিত্তি করে সিদ্ধান্ত নেয়। এটি শুধুমাত্র ইউজার বা রোল নয়, বরং বর্তমান পরিস্থিতি (Context) অনুযায়ী এক্সেস দেয়।
- কেন প্রয়োজন: যখন আপনার পারমিশন লজিক খুব কমপ্লেক্স হয়ে যায় এবং তা হার্ড-কোড করা সম্ভব নয়।
- কিভাবে কাজ করে: এতে কিছু "If-Then" নিয়ম থাকে। যেমন: "IF (User location is Bangladesh) AND (Transaction amount > 50,000) THEN (Require OTP)"।
- উপকারিতা: কোড পরিবর্তন না করেই বিজনেস রুলস পরিবর্তন করা যায়।
3. ABAC (Attribute-Based Access Control)
রুল ইঞ্জিনের একটি বড় প্রয়োগ হলো ABAC। এটি তিনটি জিনিসের ওপর ভিত্তি করে কাজ করে:
- Subject: কে রিকোয়েস্ট করছে (যেমন: তার ডিপার্টমেন্ট কি?)।
- Resource: কি এক্সেস করতে চায় (যেমন: ফাইলটি কি কনফিডেনশিয়াল?)।
- Environment: কোন অবস্থায় (যেমন: অফিস আওয়ারের বাইরে কি এক্সেস করা যাবে?)।
TIP
ছোট প্রজেক্টের জন্য RBAC (Roles) যথেষ্ট। কিন্তু বড় এন্টারপ্রাইজ সিস্টেমে যেখানে অনেক জটিলে রুলস থাকে, সেখানে Rule Engine বা ABAC ব্যবহার করাই শ্রেয়।