অ্যাপাচি সলর (Apache Solr) একটি শক্তিশালী সার্চ প্ল্যাটফর্ম যা ডিস্ট্রিবিউটেড সার্চ সিস্টেম হিসেবে ব্যবহৃত হয়। সলর যখন প্রোডাকশন এনভায়রনমেন্টে ব্যবহৃত হয়, তখন সুরক্ষা খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন সলরের মাধ্যমে সংবেদনশীল ডেটা অনুসন্ধান বা অ্যাক্সেস করা হয়। সলরের Basic Authentication এবং Authorization কনফিগারেশন আপনাকে অ্যাপ্লিকেশনের সুরক্ষা বাড়াতে সহায়তা করবে, যাতে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা সিস্টেমে অ্যাক্সেস পেতে পারে।
এই টিউটোরিয়ালে, আমরা Basic Authentication এবং Authorization কিভাবে সলরে কনফিগার করা যায় তা বিস্তারিতভাবে আলোচনা করব।
Basic Authentication in Solr
Basic Authentication হল একটি সাধারণ অথেনটিকেশন স্কিমা যা ইউজারনেম এবং পাসওয়ার্ড দিয়ে অ্যাক্সেস কন্ট্রোল প্রদান করে। এটি সাধারণত ওয়েব অ্যাপ্লিকেশনের সাথে সুরক্ষিত যোগাযোগ করতে ব্যবহৃত হয়।
Basic Authentication কনফিগারেশন Steps:
সলরের মধ্যে Basic Authentication কনফিগার করার জন্য আপনাকে সলরের solr.xml ফাইল এবং Jetty Authentication কনফিগার করতে হবে।
1. Jetty Authentication কনফিগার করা:
সলর Jetty সার্ভার ব্যবহার করে ওয়েব অ্যাপ্লিকেশন পরিচালনা করে, এবং Jetty এর মাধ্যমে Basic Authentication পরিচালনা করা হয়। সলরের Jetty সার্ভারের জন্য realm.properties ফাইল তৈরি করতে হবে, যেখানে ইউজারনেম এবং পাসওয়ার্ড নির্ধারণ করা হবে।
Step-by-Step Configuration:
realm.propertiesফাইল তৈরি করুন:
এই ফাইলটি সলরেরserver/ডিরেক্টরিতে রাখতে হবে।realm.propertiesএর উদাহরণ:# Format: username=password,role admin=admin123,admin user=user123,readএখানে, admin এবং user ইউজারনেম তৈরি করা হয়েছে এবং তাদের জন্য পাসওয়ার্ড এবং রোল নির্ধারণ করা হয়েছে।
web.xmlফাইলে Basic Authentication কনফিগার করা:
সলরেরweb.xmlফাইলে Jetty Basic Authentication কনফিগার করা হয়। এই ফাইলটি সলরেরserver/solr-webapp/webapp/WEB-INF/web.xmlপাথে অবস্থিত।web.xmlএ Authentication Realm কনফিগারেশন:<security-constraint> <web-resource-collection> <web-resource-name>Solr Data</web-resource-name> <url-pattern>/solr/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>Jetty</realm-name> </login-config>- Jetty Server কে Restart করা:
Jetty সার্ভার পুনরায় চালু করতে হবে যাতে নতুন কনফিগারেশন কার্যকর হয়।
bin/solr restart
এখন, যখন আপনি সলরের UI বা API এ এক্সেস করবেন, তখন আপনাকে ইউজারনেম এবং পাসওয়ার্ড প্রদান করতে হবে।
Basic Authentication উদাহরণ:
এখন, আপনি সলরের Admin UI বা API অ্যাক্সেস করতে গেলে, আপনাকে Basic Authentication পাসওয়ার্ড প্রদান করতে হবে।
http://localhost:8983/solr
এটি ইউজারনেম এবং পাসওয়ার্ড চেয়ে একটি প্রম্পট দেখাবে, যেখান থেকে আপনি admin ইউজারনেম এবং admin123 পাসওয়ার্ড দিয়ে লগইন করতে পারবেন।
Authorization in Solr
Authorization হল একটি প্রক্রিয়া যার মাধ্যমে নির্দিষ্ট ব্যবহারকারীদের নির্দিষ্ট রিসোর্স বা কনফিগারেশনে অ্যাক্সেস দেওয়া হয়। সলরের authorization কনফিগারেশন আপনাকে role-based access control (RBAC) তৈরি করতে সাহায্য করে, যার মাধ্যমে আপনি বিভিন্ন রোল অনুযায়ী ব্যবহারকারীদের অ্যাক্সেস সীমাবদ্ধ করতে পারেন।
Authorization কনফিগারেশন Steps:
সলরে authorization কনফিগার করার জন্য আপনাকে solrconfig.xml ফাইল এবং security.json ফাইল কনফিগার করতে হবে। এতে আপনি বিভিন্ন রোল এবং পারমিশন নির্ধারণ করতে পারবেন।
1. security.json ফাইল কনফিগার করা:
সলরের security.json ফাইল ব্যবহার করে আপনি role-based authorization কনফিগার করতে পারেন।
security.json ফাইলের উদাহরণ:
{
"authentication": {
"class": "BasicAuthenticationPlugin",
"blockUnknown": true,
"credentials": {
"admin": "admin123",
"user": "user123"
}
},
"authorization": {
"class": "solr.RuleBasedAuthorizationPlugin",
"permissions": [
{
"name": "admin",
"role": "admin",
"collections": "*",
"permissions": ["all"]
},
{
"name": "user",
"role": "read",
"collections": "*",
"permissions": ["read"]
}
]
}
}
এখানে:
- authentication: ইউজারদের পাসওয়ার্ড যাচাই করার জন্য BasicAuthenticationPlugin ব্যবহার করা হয়েছে।
- authorization: রোল এবং পারমিশন সুনির্দিষ্ট করা হয়েছে, যেখানে admin রোলের ইউজার সব ধরনের পারমিশন পেয়েছে এবং read রোলের ইউজার শুধুমাত্র রিড পারমিশন পেয়েছে।
2. solrconfig.xml ফাইলে Authorization Plugin কনফিগার করা:
সলরের solrconfig.xml ফাইলে authorization plugin কনফিগার করতে হবে, যাতে security.json ফাইলটি সঠিকভাবে কাজ করে।
solrconfig.xml এ Authorization Plugin কনফিগারেশন:
<config>
<security>
<authorization class="solr.RuleBasedAuthorizationPlugin">
<file>security.json</file>
</authorization>
</security>
</config>
এখানে, সলরের security.json ফাইলটি যেখানে কনফিগার করা হয়েছে, সেখানে authorization প্লাগইন যুক্ত করা হয়েছে।
3. Solr Restart:
সলরের কনফিগারেশন ফাইল পরিবর্তন করার পর সলর সার্ভার পুনরায় চালু করতে হবে।
bin/solr restart
এখন, সলর authorization কনফিগারেশনের মাধ্যমে আপনি নির্দিষ্ট ইউজারদের রোল এবং পারমিশন অনুযায়ী অ্যাক্সেস নিয়ন্ত্রণ করতে পারবেন।
Basic Authentication এবং Authorization এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Basic Authentication | Authorization |
|---|---|---|
| কাজের উদ্দেশ্য | ইউজারনেম এবং পাসওয়ার্ড যাচাই করে অ্যাক্সেস প্রদান | ইউজারদের নির্দিষ্ট রোল এবং পারমিশনের মাধ্যমে অ্যাক্সেস নিয়ন্ত্রণ |
| উপাদান | ইউজারনেম এবং পাসওয়ার্ড যাচাই | রোল এবং পারমিশন ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ |
| ব্যবহার | সাধারণ অথেনটিকেশন স্কিমা, সলরের UI বা API অ্যাক্সেসে ব্যবহৃত | নির্দিষ্ট রোল অনুযায়ী সার্চ বা কনফিগারেশন অ্যাক্সেস নিয়ন্ত্রণ |
| কনফিগারেশন | realm.properties এবং web.xml ফাইল ব্যবহার | security.json এবং solrconfig.xml ফাইল ব্যবহার |
সারাংশ
Basic Authentication এবং Authorization সলরে সুরক্ষা নিয়ন্ত্রণের দুটি গুরুত্বপূর্ণ অংশ। Basic Authentication সলরের UI এবং API অ্যাক্সেসে ইউজারনেম এবং পাসওয়ার্ড যাচাই করার মাধ্যমে অ্যাক্সেস কন্ট্রোল তৈরি করে, যখন Authorization রোল এবং পারমিশন নির্ধারণ করে, যা ব্যবহারকারীদের সলরের নির্দিষ্ট ফিচার বা ডেটায় অ্যাক্সেস প্রদান করে। এই দুটি বৈশিষ্ট্য সলরের নিরাপত্তা ব্যবস্থাকে শক্তিশালী করে এবং সিস্টেমের সুরক্ষা নিশ্চিত করে।