Zookeeper একটি ডিস্ট্রিবিউটেড সিস্টেম যেখানে ডেটার নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল অত্যন্ত গুরুত্বপূর্ণ। Zookeeper এর ACL (Access Control List) এবং Permissions সিস্টেম ব্যবহার করে নোডগুলোতে নিরাপদ অ্যাক্সেস নিয়ন্ত্রণ করা হয়। এটি নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ক্লায়েন্টরা নির্দিষ্ট নোডের উপর বিভিন্ন অপারেশন করতে পারে, যেমন রিড, রাইট, বা ডিলিট করা। Zookeeper এর এই নিরাপত্তা বৈশিষ্ট্য ডিস্ট্রিবিউটেড সিস্টেমে ডেটার সুরক্ষা এবং গোপনীয়তা বজায় রাখতে সাহায্য করে।
Zookeeper এর Node ACL (Access Control List)
Zookeeper-এ ACL একটি তালিকা যা নির্দিষ্ট নোডে কী ধরনের অ্যাক্সেস করা যাবে তা নির্ধারণ করে। ACL ব্যবহার করে, আপনি একটি নির্দিষ্ট নোড বা ZNode এর উপর বিভিন্ন ধরণের অ্যাক্সেস কন্ট্রোল পলিসি সেট করতে পারেন। একটি ZNode এর জন্য ACL সেট করলে, আপনি এই নিয়ন্ত্রণ করতে পারবেন যে কোন ক্লায়েন্ট কোন ধরনের অ্যাক্সেস (যেমন, read, write, create, delete) করতে পারবে।
Zookeeper ACL সিস্টেমে প্রাথমিকভাবে দুটি মূল উপাদান থাকে:
- ডিরেক্ট এক্সেস কন্ট্রোল (Direct Access Control)
- বিশেষ ধরনের permissions (Specific Permissions)
Zookeeper ACL এর উপাদান
Zookeeper ACL সিস্টেমে তিনটি প্রধান উপাদান রয়েছে:
- প্রিন্সিপাল (Principal):
- এটি ক্লায়েন্টের পরিচয়। সাধারণত এটি একটি ব্যবহারকারী বা সার্ভিস একাউন্টের নাম হতে পারে।
- তিনটি প্রধান প্রিন্সিপাল টাইপ থাকতে পারে:
- world: এটি সবার জন্য অ্যাক্সেস কন্ট্রোল।
- auth: এটি অথেন্টিকেটেড ক্লায়েন্টদের জন্য অ্যাক্সেস কন্ট্রোল।
- ip: এটি একটি নির্দিষ্ট IP ঠিকানা ভিত্তিক অ্যাক্সেস কন্ট্রোল।
- অধিকার (Permissions):
- এটি নির্ধারণ করে যে কোন প্রিন্সিপাল (ব্যবহারকারী বা সার্ভিস) ZNode এ কী ধরনের অপারেশন করতে পারবে। Zookeeper এ পাঁচ ধরনের পারমিশন রয়েছে:
- READ: ZNode পড়তে পারে।
- WRITE: ZNode তে লিখতে পারে।
- CREATE: নতুন ZNode তৈরি করতে পারে।
- DELETE: ZNode মুছে ফেলতে পারে।
- ADMIN: ZNode এর ওপর প্রশাসনিক কাজ (যেমন ACL পরিবর্তন) করতে পারে।
- এটি নির্ধারণ করে যে কোন প্রিন্সিপাল (ব্যবহারকারী বা সার্ভিস) ZNode এ কী ধরনের অপারেশন করতে পারবে। Zookeeper এ পাঁচ ধরনের পারমিশন রয়েছে:
- অ্যাক্সেস টাইপ (Access Type):
- এটি নির্ধারণ করে যে কোন প্রিন্সিপালটি একটি নির্দিষ্ট ZNode এ নির্দিষ্ট পারমিশন পাবে। এটি তিনটি টাইপের হতে পারে:
- Allow: এটি অনুমতি দেয়।
- Deny: এটি নিষিদ্ধ করে।
- Open: এটি ক্লায়েন্টের জন্য যে কোন অ্যাক্সেস অনুমতি দেয়।
- এটি নির্ধারণ করে যে কোন প্রিন্সিপালটি একটি নির্দিষ্ট ZNode এ নির্দিষ্ট পারমিশন পাবে। এটি তিনটি টাইপের হতে পারে:
Zookeeper-এ Permissions Set করা
Zookeeper-এ নির্দিষ্ট ZNode-এর জন্য ACL এবং Permissions সেট করা খুবই গুরুত্বপূর্ণ। এটি ব্যবহার করে আপনি নির্ধারণ করতে পারবেন যে কোন ক্লায়েন্ট কোন ZNode-এর ওপর কী ধরনের অপারেশন করতে পারবে। নীচে Zookeeper-এ ACL সেট করার একটি উদাহরণ দেয়া হলো:
ACL Set করার উদাহরণ
ধরা যাক, আমরা একটি ZNode তৈরি করতে চাই যেখানে শুধুমাত্র একটি নির্দিষ্ট ইউজার রাইট (write) এবং রিড (read) অ্যাক্সেস পাবেন, এবং একটি নির্দিষ্ট আইপি অ্যাড্রেসের জন্য শুধুমাত্র রিড অ্যাক্সেস থাকবে।
Zookeeper-এ ACL সেট করার জন্য নিচের কোডের মতো ব্যবহার করা যেতে পারে:
# /app/config এই ZNode-এর জন্য ACL সেট করা হচ্ছে
zkCli.sh -server <ZookeeperServer> create /app/config "initialData"
zkCli.sh -server <ZookeeperServer> setAcl /app/config auth:admin:crdwa ip:192.168.0.1:cr
# "auth:admin:crdwa" - auth-based authentication, with create, read, delete, write, admin permissions for the user 'admin'.
# "ip:192.168.0.1:cr" - only read permission (cr) for IP '192.168.0.1'.
এই উদাহরণে:
auth:admin:crdwa: এখানেadminব্যবহারকারীকে create (c), read (r), delete (d), write (w), এবং admin (a) পারমিশন দেয়া হয়েছে।ip:192.168.0.1:cr: এটি IP ঠিকানা192.168.0.1কে শুধুমাত্র read (r) এবং create (c) পারমিশন দিয়েছে।
ACL এবং Permissions এর কার্যকারিতা
- অর্থপূর্ণ অ্যাক্সেস কন্ট্রোল: Zookeeper ACL ব্যবহারের মাধ্যমে, আপনি নির্দিষ্ট ক্লায়েন্ট বা সার্ভিসের জন্য বিভিন্ন ধরনের নিরাপত্তা স্তর তৈরি করতে পারেন। এটি ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে নিরাপত্তা এবং গোপনীয়তা নিশ্চিত করতে সাহায্য করে।
- ডিস্ট্রিবিউটেড সিস্টেমের নিরাপত্তা: ডিস্ট্রিবিউটেড সিস্টেমে, যেখানে একাধিক নোডে ডেটা থাকে এবং অ্যাক্সেসের জন্য একাধিক ক্লায়েন্ট কাজ করে, সেখানে ACL সেট করে নিশ্চিত করা যায় যে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা সংবেদনশীল ডেটা অ্যাক্সেস করতে পারে।
- ব্যবহারকারী এবং ক্লায়েন্ট ভিত্তিক কাস্টমাইজেশন: ACL এবং পারমিশন কাস্টমাইজ করে, আপনি একাধিক ব্যবহারকারী বা সার্ভিসের জন্য ভিন্ন ভিন্ন অ্যাক্সেস পলিসি তৈরি করতে পারেন, যেমন বিভিন্ন সার্ভিসের জন্য শুধুমাত্র রিড পারমিশন বা পুরোপুরি অ্যাডমিন অ্যাক্সেস।
সারাংশ
Zookeeper-এ Node ACL (Access Control List) এবং Permissions সেট করা অত্যন্ত গুরুত্বপূর্ণ একটি নিরাপত্তা ব্যবস্থা। এটি ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে অ্যাক্সেস কন্ট্রোল এবং নিরাপত্তা বজায় রাখতে সাহায্য করে। Zookeeper এর ACL সিস্টেমে আপনি বিভিন্ন প্রিন্সিপাল এবং পারমিশন সেট করে নির্দিষ্ট ZNode-এর জন্য নিরাপত্তা কনফিগারেশন তৈরি করতে পারেন। এটি ব্যবহারকারীদের এবং সার্ভিসগুলির জন্য উপযুক্ত এবং সুনির্দিষ্ট অ্যাক্সেস পলিসি তৈরি করতে সহায়ক, যার মাধ্যমে সিস্টেমের নিরাপত্তা নিশ্চিত করা যায়।
Read more