Hive একটি ডিসট্রিবিউটেড ডেটাবেস সিস্টেম যা Hadoop এর ওপর তৈরি। Hive-এর মাধ্যমে বড় ডেটাসেট প্রসেস করা সম্ভব হলেও, নিরাপত্তা অত্যন্ত গুরুত্বপূর্ণ। Hive-এ Authentication এবং Authorization দুটি ভিন্ন বিষয়, কিন্তু তারা একে অপরের পরিপূরক। Authentication এর মাধ্যমে ব্যবহারকারীর পরিচয় নিশ্চিত করা হয় এবং Authorization এর মাধ্যমে অনুমতি দেয়া হয় যে, ওই ব্যবহারকারী কী কী কাজ করতে পারবে।
Authentication in Hive
Authentication হল সেই প্রক্রিয়া যার মাধ্যমে নিশ্চিত করা হয় যে, একজন ব্যবহারকারী প্রকৃতপক্ষে একজন অনুমোদিত ব্যক্তি, এবং সে সেই সার্ভিস বা সিস্টেমে অ্যাক্সেস পেতে যোগ্য কিনা। Hive-এ Authentication প্রক্রিয়া দুটি প্রধান পদ্ধতিতে পরিচালিত হয়:
১. Kerberos Authentication
Kerberos হলো একটি নিরাপদ এবং ইন্টিগ্রেটেড অথেনটিকেশন সিস্টেম যা Hive সহ Hadoop ইকোসিস্টেমের সমস্ত সার্ভিসে ব্যবহার করা হয়। এটি একটি centralized authentication পদ্ধতি প্রদান করে এবং নিশ্চিত করে যে ব্যবহারকারীরা প্রকৃতপক্ষে অনুমোদিত।
Kerberos Authentication ব্যবহারের পদ্ধতি:
- Hadoop-এর সমস্ত কম্পোনেন্ট যেমন Hive, HDFS, YARN, ইত্যাদি Kerberos এ ইন্টিগ্রেট করা যায়।
- Hive-এ Kerberos Authentication সক্রিয় করার জন্য
hive-site.xmlফাইলের মধ্যে Kerberos সম্পর্কিত কনফিগারেশন সেট করতে হবে।
উদাহরণ:
<property>
<name>hive.server2.authentication</name>
<value>KERBEROS</value>
</property>
<property>
<name>hive.server2.authentication.kerberos.keytab</name>
<value>/etc/security/keytabs/hive.keytab</value>
</property>
<property>
<name>hive.server2.authentication.kerberos.principal</name>
<value>hive/_HOST@YOUR-REALM.COM</value>
</property>
এই কনফিগারেশন Hive সার্ভারকে Kerberos Authentication ব্যবহার করতে নির্দেশ দেবে। এতে ব্যবহারকারীরা তাদের Kerberos টোকেনের মাধ্যমে Hive-এ লগ ইন করতে পারবেন।
২. LDAP Authentication
LDAP (Lightweight Directory Access Protocol) একটি ইন্টারনেট প্রোটোকল যা ডিরেক্টরি সার্ভিসের মাধ্যমে ব্যবহারকারীদের অথেনটিকেশন পরিচালনা করতে সাহায্য করে। Hive-এ LDAP Authentication ব্যবহার করে একটি Centralized User Directory থেকে ব্যবহারকারীর পরিচয় যাচাই করা হয়। এটি হাইভ ব্যবহারকারী পরিচালনার জন্য একটি আধুনিক পদ্ধতি।
LDAP Authentication কনফিগারেশন:
<property>
<name>hive.server2.authentication</name>
<value>LDAP</value>
</property>
<property>
<name>hive.server2.authentication.ldap.url</name>
<value>ldap://ldap.example.com:389</value>
</property>
<property>
<name>hive.server2.authentication.ldap.baseDN</name>
<value>ou=users,dc=example,dc=com</value>
</property>
<property>
<name>hive.server2.authentication.ldap.userSearch</name>
<value>(uid={0})</value>
</property>
এই কনফিগারেশন Hive কে LDAP সার্ভারের সাথে সংযুক্ত হতে এবং ব্যবহারকারীর নাম ও পাসওয়ার্ড যাচাই করতে বলে।
Authorization in Hive
Authorization হলো সেই প্রক্রিয়া যার মাধ্যমে নির্ধারণ করা হয় যে, কোন ব্যবহারকারী কোন রিসোর্সে অ্যাক্সেস পাবে এবং কোন কাজগুলো করতে পারবে। Hive-এ Authorization দুইটি প্রধান পদ্ধতিতে পরিচালিত হয়:
১. SQL Standard Based Authorization
SQL Standard Based Authorization হল Hive-এর জন্য একটি সাধারণ অনুমতিপ্রদান ব্যবস্থা। এটি HiveQL কুয়েরি ভাষার মাধ্যমে ডেটাবেস এবং টেবিল স্তরে অনুমতি দেয়।
SQL Standard Authorization কনফিগারেশন:
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.security.authorization.manager</name>
<value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SqlStdHiveAuthorizerFactory</value>
</property>
এই কনফিগারেশন Hive-এ SQL Standard Based Authorization সক্রিয় করে, যার মাধ্যমে ব্যবহারকারীকে ডেটাবেস বা টেবিলের ওপর অনুমতি দেওয়া হয়।
উদাহরণ:
GRANT SELECT ON TABLE employees TO user1;
REVOKE INSERT ON TABLE employees FROM user2;
এখানে, user1 কে employees টেবিল থেকে SELECT করার অনুমতি এবং user2 কে INSERT অপারেশন থেকে নিষিদ্ধ করা হয়েছে।
২. Ranger-based Authorization
Apache Ranger একটি ক্ষমতাশালী নিরাপত্তা এবং অনুমতি ব্যবস্থাপনা সিস্টেম, যা Hive-এর জন্য বিশেষভাবে ডিজাইন করা হয়েছে। Ranger ব্যবহার করে আপনি ডেটার fine-grained authorization প্রদান করতে পারেন, অর্থাৎ আপনি নির্দিষ্ট ব্যবহারকারীদের নির্দিষ্ট টেবিল, কলাম বা ডেটার অংশে অ্যাক্সেস দিতে বা নিষিদ্ধ করতে পারেন।
Ranger-এ Authorization কনফিগারেশন:
Ranger Hive-এর জন্য বিভিন্ন নিরাপত্তা প্রোফাইল তৈরি করতে সক্ষম। Hive-এর Ranger Plugin ইন্সটল করা হলে, আপনি ব্যবহারকারীদের নির্দিষ্ট policy এবং permissions সংজ্ঞায়িত করতে পারেন।
Ranger Policy উদাহরণ:
- Policy: "Allow user1 to read data from the employees table."
- Permissions:
SELECTon employees table for user1.
Ranger এর সুবিধা:
- Fine-grained Access Control: ব্যবহারকারীদের নির্দিষ্ট ডেটার অংশে অ্যাক্সেস দেওয়া বা নিষিদ্ধ করা যায়।
- Centralized Security Management: এক্সেস পলিসি কনফিগারেশন এবং পর্যবেক্ষণ একটি কেন্দ্রীয় কনসোল থেকে করা যায়।
- Audit Logs: সমস্ত অনুমতি এবং এক্সেস কন্ট্রোলের কার্যক্রমের জন্য অডিট লগ প্রদান করা হয়, যা নিরাপত্তা নিশ্চিত করে।
৩. Sentry-based Authorization
Apache Sentry Hive-এর জন্য একটি শক্তিশালী authorization এবং access control সিস্টেম। Sentry ব্যবহারকারীদের ডেটাবেস এবং টেবিল স্তরের বা ডেটা ফাইলের ওপর permissions নিয়ন্ত্রণ করতে সাহায্য করে। এটি Hive, Impala, এবং HBase-এর মতো বিভিন্ন Hadoop কম্পোনেন্টের জন্য authorization প্রদান করে।
Sentry Authorization কনফিগারেশন:
Sentry একটি Policy File ব্যবহার করে বিভিন্ন ব্যবহারকারীর জন্য অনুমতি সেট করে।
<property>
<name>hive.security.authorization.manager</name>
<value>org.apache.sentry.hive.AuthorizerFactory</value>
</property>
Sentry-based Authorization Hive-এ সহজে ব্যবহারকারী এবং গ্রুপের উপর নিরাপত্তা পলিসি এবং অনুমতি পরিচালনা করতে সহায়তা করে।
উপসংহার
Authentication এবং Authorization Hive-এর জন্য অত্যন্ত গুরুত্বপূর্ণ নিরাপত্তা প্রক্রিয়া। Hive-এ Kerberos Authentication, LDAP Authentication এবং SQL Standard Authorization সহ Ranger-based Authorization এবং Sentry-based Authorization ব্যবহৃত হয়, যা ডেটার নিরাপত্তা ও এক্সেস কন্ট্রোল নিশ্চিত করে। Kerberos Authentication একটি কেন্দ্রীয় অথেনটিকেশন পদ্ধতি হিসেবে কাজ করে, যেখানে Ranger এবং Sentry আরও উন্নত নিরাপত্তা ব্যবস্থা প্রদান করে এবং Hive-এর ডেটা এক্সেস কন্ট্রোলের জন্য কার্যকরী।
Read more