Role-Based Access Control (RBAC) কি?
Role-Based Access Control (RBAC) হল একটি নিরাপত্তা পদ্ধতি যা ব্যবহারকারীদের নির্দিষ্ট ভূমিকা (role) অনুযায়ী তাদের অ্যাক্সেস অনুমতি নিয়ন্ত্রণ করে। এটি একটি জনপ্রিয় মডেল যা ব্যবহারকারীদের বিভিন্ন গ্রুপে ভাগ করে, এবং প্রতি গ্রুপের জন্য নির্দিষ্ট অনুমতি নির্ধারণ করে। RBAC এর মাধ্যমে সহজেই অ্যাপ্লিকেশন বা সিস্টেমে কনফিডেনশিয়াল ডেটা বা ফিচারের অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
RBAC সাধারণত তিনটি প্রধান উপাদান নিয়ে গঠিত:
- Roles (ভূমিকা): ব্যবহারকারীকে যে ভূমিকা দেয়া হয়, যেমন অ্যাডমিন, ইউজার, ম্যানেজার ইত্যাদি।
- Permissions (অনুমতি): ভূমিকা অনুযায়ী ব্যবহারকারীকে কি অপারেশন (যেমন পড়া, লেখা, ডিলিট করা) করার অনুমতি দেয়া হয়েছে।
- Users (ব্যবহারকারী): সিস্টেমে নিবন্ধিত ব্যবহারকারী, যারা নির্দিষ্ট ভূমিকার অধিকারী।
RBAC এর মাধ্যমে Authorization কিভাবে কাজ করে?
Authorization হল সেই প্রক্রিয়া যার মাধ্যমে নির্ধারণ করা হয় যে একটি নির্দিষ্ট ব্যবহারকারী বা গ্রুপ কোন রিসোর্স বা ফিচারের অ্যাক্সেস করতে পারবে কি না। RBAC-এর মধ্যে Authorization ব্যবহৃত হয় ভূমিকা এবং অনুমতির মধ্যে সম্পর্ক স্থাপন করার জন্য।
এখানে, একটি ব্যবহারকারী যখন লগইন করবে, তখন তার ভূমিকাটি যাচাই করা হবে এবং ভূমিকাটি অনুযায়ী সে কী ধরনের অ্যাক্সেস পাবেন তা নির্ধারণ করা হবে। উদাহরণস্বরূপ:
- Admin: সমস্ত রিসোর্স এবং অপারেশন এক্সেস করতে পারবেন।
- User: শুধুমাত্র কিছু নির্দিষ্ট রিসোর্স বা অপারেশন এক্সেস করতে পারবেন।
- Guest: খুব সীমিত রিসোর্স এক্সেস করতে পারবেন।
RESTful Web Services-এ RBAC এবং Authorization প্রয়োগ করা
RESTful Web Services এ RBAC এবং Authorization ব্যবহারের জন্য সাধারণত JWT (JSON Web Token) বা OAuth এর মতো টোকেন বেসড অথেন্টিকেশন ব্যবহার করা হয়। এর মাধ্যমে প্রতিটি API কলের সাথে একটি টোকেন পাস করা হয়, যা ব্যবহারকারীর ভূমিকা এবং অনুমতি যাচাই করতে ব্যবহৃত হয়।
১. JWT (JSON Web Token) এবং RBAC
JWT হল একটি ওপেন স্ট্যান্ডার্ড যা তথ্য পরিবহন করতে ব্যবহৃত হয়। এটি প্রমাণীকরণ (authentication) এবং অনুমোদন (authorization) জন্য খুবই কার্যকরী। JWT-তে ব্যবহারকারীর ভূমিকা এবং অনুমতি তথ্য সংরক্ষিত থাকতে পারে, যা সিস্টেমের বিভিন্ন অংশে ব্যবহার করা হয়।
উদাহরণ: JWT-এ RBAC
- ব্যবহারকারী লগইন এবং JWT তৈরি করা: যখন ব্যবহারকারী লগইন করে, তখন তার Role সহ JWT তৈরি করা হয়, যা পরবর্তী API রিকোয়েস্টে পাঠানো হয়।
const jwt = require('jsonwebtoken');
function login(req, res) {
const user = { id: 1, username: 'john', role: 'admin' }; // ব্যবহারকারী ভূমিকা
const token = jwt.sign(user, 'your_secret_key', { expiresIn: '1h' });
res.json({ token });
}
- API Endpoint-এ Authorization চেক করা: API রিকোয়েস্টে JWT টোকেন পাঠানো হয় এবং টোকেনের ভিতরে থাকা role যাচাই করে যে ব্যবহারকারী সেই রিসোর্সে অ্যাক্সেস করতে পারবে কিনা।
const jwt = require('jsonwebtoken');
function authorizeRole(role) {
return function(req, res, next) {
const token = req.headers['authorization'];
if (!token) return res.status(403).send('Token required');
jwt.verify(token, 'your_secret_key', (err, decoded) => {
if (err) return res.status(403).send('Invalid token');
if (decoded.role !== role) {
return res.status(403).send('You do not have access to this resource');
}
req.user = decoded;
next();
});
};
}
// Admin-only route
app.get('/admin-dashboard', authorizeRole('admin'), (req, res) => {
res.send('Welcome to Admin Dashboard');
});
এখানে, authorizeRole('admin') হল একটি middleware যা শুধুমাত্র admin ভূমিকার ব্যবহারকারীকে অ্যাক্সেস দেয়। অন্যান্য ভূমিকা বা টোকেন ভুল হলে অ্যাক্সেস নিষিদ্ধ হয়।
২. OAuth এবং RBAC
OAuth হল একটি অথেন্টিকেশন এবং অথরাইজেশন প্রোটোকল যা তৃতীয় পক্ষের সিস্টেমে অ্যাক্সেস নিয়ন্ত্রণ করতে ব্যবহৃত হয়। RBAC-এর সাথে OAuth ব্যবহারের মাধ্যমে আপনি আরও শক্তিশালী নিরাপত্তা ব্যবস্থা গঠন করতে পারেন, যেখানে আপনার অ্যাপ্লিকেশনকে তৃতীয় পক্ষের সেবা বা অ্যাপ্লিকেশন (যেমন Google, Facebook) দিয়ে অ্যাক্সেস অনুমতি দেয়া হয় এবং অ্যাক্সেস টোকেনের ভিত্তিতে অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
RBAC ব্যবহারের সুবিধা
- সিস্টেমের নিরাপত্তা উন্নত করে: RBAC ব্যবহার করার মাধ্যমে আপনি সিস্টেমের নিরাপত্তা নিশ্চিত করতে পারেন, কারণ এটি প্রতিটি ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করে।
- সহজ ভূমিকা ভিত্তিক নিয়ন্ত্রণ: এটি সহজেই পরিচালনা করা যায় কারণ আপনি শুধুমাত্র নির্দিষ্ট ভূমিকা সেট করে দেয়ার মাধ্যমে একাধিক ব্যবহারকারীর জন্য অনুমতি প্রদান করতে পারেন।
- ডেটার সুরক্ষা: RBAC এর মাধ্যমে আপনি ডেটাবেস এবং সিস্টেমের অন্যান্য সংবেদনশীল রিসোর্সগুলোর অ্যাক্সেস কেবলমাত্র নির্দিষ্ট ব্যবহারকারী বা গ্রুপের জন্য সীমাবদ্ধ রাখতে পারেন।
- স্কেলেবিলিটি: বড় সিস্টেমে, যেখানে হাজার হাজার ব্যবহারকারী এবং একাধিক ভুমিকা থাকতে পারে, RBAC আপনাকে সহজে ব্যবহারকারীর ভূমিকা নির্ধারণ এবং অনুমতি নিয়ন্ত্রণ করতে সাহায্য করে।
সারাংশ
Role-Based Access Control (RBAC) এবং Authorization হল নিরাপত্তার গুরুত্বপূর্ণ উপাদান যা RESTful Web Services-এ ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করতে ব্যবহৃত হয়। RBAC ব্যবহার করে আপনি ব্যবহারকারীদের ভূমিকা অনুযায়ী তাদের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন এবং JWT বা OAuth ব্যবহারের মাধ্যমে তাদের অনুমতি যাচাই করতে পারেন। এটি নিরাপত্তা, স্কেলেবিলিটি এবং ব্যবস্থাপনা সহজ করে তোলে।
Read more