Elasticsearch একটি শক্তিশালী সার্চ এবং অ্যানালিটিক্স ইঞ্জিন, কিন্তু এটি সঠিকভাবে সুরক্ষিত না করলে ডেটা ব্রিচ, অননুমোদিত অ্যাক্সেস, এবং সিস্টেম ভলনারেবিলিটিজের ঝুঁকি থাকে। Elasticsearch সিকিউর করার জন্য কিছু গুরুত্বপূর্ণ কনফিগারেশন, টুলস, এবং বেস্ট প্র্যাকটিস ফলো করা উচিত। এখানে Elasticsearch সুরক্ষিত করার জন্য কিছু ধাপ এবং কনসেপ্টের ব্যাখ্যা দেওয়া হলো।
localhost
বা 127.0.0.1
) এ চলবে। তবে প্রোডাকশন এনভায়রনমেন্টে এটি শুধুমাত্র নির্দিষ্ট IP অ্যাড্রেসে বাউন্ড করতে হবে।elasticsearch.yml
ফাইলে network.host
প্যারামিটার কনফিগার করে শুধুমাত্র নির্দিষ্ট IP-এ বাউন্ড করতে পারেন:network.host: 192.168.1.10
network.publish_host
ব্যবহার করে সঠিক IP সেট করুন, যা ক্লাস্টার এবং নোডগুলোতে কমিউনিকেশন করবে।elasticsearch.yml
ফাইলে xpack.security.transport.filter
কনফিগার করে নির্দিষ্ট IP-র জন্য অ্যালাউ বা ডিনাই রুল সেট করুন।elastic
ইউজার এবং অন্যান্য অ্যাডমিনিস্ট্রেটর ইউজার তৈরি করুন। X-Pack সিকিউরিটি সক্রিয় করার পরে, ডিফল্ট অ্যাডমিন ইউজার (elastic
) এর পাসওয়ার্ড সেট করুন।{
"role": {
"indices": [
{
"names": [ "my-index" ],
"privileges": [ "read", "write" ]
}
]
}
}
elasticsearch.yml
ফাইলে সার্টিফিকেট এবং কী কনফিগার করুন:xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/keystore.p12
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
xpack.security.transport.ssl
সেটিংস সক্রিয় করুন।elasticsearch.yml
ফাইলে xpack.security.audit.enabled
সেটিংটি true
করুন:xpack.security.audit.enabled: true
logistics-index
পড়ার অনুমতি দেওয়া এবং শুধু ডেভেলপমেন্ট টিমকে development-index
এ রাইট করার অনুমতি দেওয়া।{
"role": {
"indices": [
{
"names": [ "finance-index" ],
"privileges": [ "read" ],
"query": "{\"term\": {\"department\": \"finance\"}}"
}
]
}
}
Elasticsearch সঠিকভাবে সুরক্ষিত না করলে ডেটা ব্রিচ এবং সিস্টেম ভলনারেবিলিটির ঝুঁকি বেড়ে যায়। সঠিক কনফিগারেশন, TLS/SSL এনক্রিপশন, ইউজার অথেন্টিকেশন, এবং মনিটরিং টুলস ব্যবহার করে Elasticsearch সিকিউর করা যায়। উপরের ধাপগুলো অনুসরণ করে আপনি একটি নিরাপদ, স্থিতিশীল, এবং পারফরম্যান্ট Elasticsearch সিস্টেম তৈরি করতে পারবেন।
Elasticsearch-এ ডেটা সুরক্ষা এবং অ্যাক্সেস নিয়ন্ত্রণ নিশ্চিত করার জন্য বিভিন্ন Security Features এবং User Authentication পদ্ধতি রয়েছে। এগুলো Elasticsearch-কে সুরক্ষিত করে এবং অনুমোদিত ইউজারদের ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় অথেন্টিকেশন এবং অথরাইজেশন নিয়ন্ত্রণে সহায়তা করে। Elasticsearch ৭.১০ এবং এর পরবর্তী ভার্সনে X-Pack সিকিউরিটি বিল্ট-ইন থাকে, যা ইউজার অথেন্টিকেশন, রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC), এবং ডেটা এনক্রিপশন সাপোর্ট করে।
elasticsearch.yml
ফাইল ব্যবহার করুন:xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/keystore.p12
{
"indices": [
{
"names": ["customer-index"],
"privileges": ["read", "write"]
}
]
}
elasticsearch.yml
ফাইলে সেটিংস যুক্ত করুন:xpack.security.audit.enabled: true
Elasticsearch-এ ইউজার অথেন্টিকেশন এবং অথরাইজেশন সিস্টেম সেটআপ করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এগুলো নিশ্চিত করে যে শুধুমাত্র অথেন্টিকেটেড এবং অথরাইজড ইউজাররাই ডেটা এবং সিস্টেম অ্যাক্সেস করতে পারে।
elastic
ইউজার অ্যাডমিনিস্ট্রেটর রোল নিয়ে আসে, যার পাসওয়ার্ড কনফিগার করার জন্য কমান্ড ব্যবহার করা হয়:bin/elasticsearch-setup-passwords interactive
{
"cluster": ["manage", "monitor"],
"indices": [
{
"names": ["sales-*"],
"privileges": ["read"]
}
]
}
POST /_security/user/sales_user
{
"password" : "password123",
"roles" : [ "sales_role" ]
}
elasticsearch.yml
ফাইলে কনফিগার করুন:xpack.security.authc.realms.ldap.ldap1:
order: 0
url: "ldap://ldap.example.com:389"
bind_dn: "cn=admin,dc=example,dc=com"
bind_password: "password"
user_search:
base_dn: "dc=example,dc=com"
POST /_security/api_key
{
"name": "my-api-key",
"role_descriptors": {
"my_role": {
"cluster": ["all"],
"index": [
{
"names": ["*"],
"privileges": ["read", "write"]
}
]
}
}
}
Elasticsearch-এ সিকিউরিটি ফিচার এবং ইউজার অথেন্টিকেশন পদ্ধতি সঠিকভাবে ব্যবহার করে আপনি সিস্টেম এবং ডেটাকে সুরক্ষিত রাখতে পারেন। সঠিক কনফিগারেশন, RBAC, TLS/SSL এনক্রিপশন, এবং এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার ইন্টিগ্রেশন ব্যবহার করে একটি শক্তিশালী এবং সিকিউর পরিবেশ তৈরি করা সম্ভব।
Role-based Access Control (RBAC) হল Elasticsearch-এর একটি নিরাপত্তা মডেল, যা ইউজারদের অ্যাক্সেস এবং প্রিভিলেজ কন্ট্রোল করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে প্রতিটি ইউজার বা সার্ভিস শুধুমাত্র তাদের নির্দিষ্ট রোল বা দায়িত্ব অনুযায়ী প্রয়োজনীয় ডেটা বা রিসোর্স অ্যাক্সেস করতে পারে। Elasticsearch-এর X-Pack সিকিউরিটি ফিচার RBAC সাপোর্ট করে, যা ইউজার ম্যানেজমেন্ট, ইনডেক্স লেভেল, ক্লাস্টার লেভেল, এবং ডকুমেন্ট বা ফিল্ড লেভেলে অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
Elasticsearch-এর RBAC মডেল কয়েকটি গুরুত্বপূর্ণ উপাদানের উপর ভিত্তি করে তৈরি:
read
, write
, manage
, ইত্যাদি নির্ধারণ করে।read
, write
, index
, delete
, বা manage
(ক্লাস্টার ম্যানেজমেন্ট)।Elasticsearch-এ নতুন রোল তৈরি করতে নিচের API ব্যবহার করা হয়:
PUT /_security/role/sales_role
{
"cluster": ["monitor"],
"indices": [
{
"names": [ "sales-data-*"],
"privileges": ["read", "write"]
}
],
"applications": [],
"run_as": [],
"metadata": {},
"transient_metadata": {
"enabled": true
}
}
monitor
(ক্লাস্টার মনিটরিং) বা manage
(ক্লাস্টার ম্যানেজমেন্ট)।read
, write
) নির্ধারণ করা হয়। এটি নির্দিষ্ট ইনডেক্স বা ইনডেক্স প্যাটার্ন অনুযায়ী কনফিগার করা যায়।একটি ইউজার তৈরি করতে এবং একটি রোল অ্যাসাইন করতে নিচের API ব্যবহার করা হয়:
POST /_security/user/john_doe
{
"password": "password123",
"roles": ["sales_role"],
"full_name": "John Doe",
"email": "john.doe@example.com"
}
"sales_role"
) সেট করা হলো।API Key তৈরি করে নির্দিষ্ট প্রিভিলেজ দিয়ে সার্ভিস অ্যাক্সেস প্রদান করা যায়:
POST /_security/api_key
{
"name": "service-api-key",
"role_descriptors": {
"service_role": {
"cluster": ["monitor"],
"index": [
{
"names": ["log-*"],
"privileges": ["read", "write"]
}
]
}
}
}
RBAC সিস্টেমে পারমিশন বিভিন্ন লেভেলে কনফিগার করা যায়:
manage
(ক্লাস্টার পরিচালনা), monitor
(ক্লাস্টার মনিটরিং)।read
, write
, index
, বা delete
।{
"indices": [
{
"names": [ "customer-index-*" ],
"privileges": [ "read" ]
}
]
}
{
"indices": [
{
"names": ["finance-index"],
"privileges": ["read"],
"query": "{\"term\": {\"department\": \"finance\"}}"
}
]
}
read
প্রিভিলেজ অ্যাসাইন করুন যদি ইউজারের রাইট বা ম্যানেজ করার প্রয়োজন না থাকে।Elasticsearch-এর RBAC সিস্টেম একটি শক্তিশালী এবং কার্যকর উপায়, যা ইউজার এবং রিসোর্স অ্যাক্সেস সুরক্ষিত রাখতে সহায়ক। সঠিকভাবে RBAC কনফিগার করে আপনি সিস্টেমের ডেটা এবং রিসোর্সের উপর যথাযথ প্রিভিলেজ প্রদান করতে পারেন, যা সিকিউরিটি বাড়াতে এবং ঝুঁকি কমাতে সহায়ক।
Transport Layer Security (TLS) Elasticsearch-এ নোডগুলির মধ্যে এবং ক্লায়েন্ট (যেমন Kibana) ও ক্লাস্টারের মধ্যে নিরাপদ যোগাযোগ নিশ্চিত করতে ব্যবহৃত হয়। TLS সক্রিয় করলে Elasticsearch ডেটা এনক্রিপ্টেড ফরম্যাটে আদান-প্রদান করে, যা ডেটা সুরক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ। TLS সক্রিয় করার মাধ্যমে আপনি নিশ্চিত করতে পারেন যে আপনার ক্লাস্টার সিকিউর এবং এনক্রিপ্টেড।
TLS সেটআপ করতে, আপনাকে সার্টিফিকেট তৈরি, Elasticsearch কনফিগারেশন, এবং নোডগুলির মধ্যে সঠিক সার্টিফিকেট ডিস্ট্রিবিউশন করতে হবে। নিচে ধাপে ধাপে প্রক্রিয়াটি ব্যাখ্যা করা হলো।
Elasticsearch TLS সার্টিফিকেট তৈরি করার জন্য elasticsearch-certutil
টুল ব্যবহার করতে পারেন। এটি Elasticsearch-এ অন্তর্ভুক্ত থাকে এবং সার্টিফিকেট জেনারেট করতে ব্যবহৃত হয়।
প্রথমে একটি Certificate Authority (CA) তৈরি করুন, যা TLS সার্টিফিকেট সাইন করবে:
bin/elasticsearch-certutil ca
elastic-stack-ca.p12
ফাইল তৈরি হবে। এটি আপনার CA সার্টিফিকেট।এবার, প্রতিটি নোডের জন্য সার্টিফিকেট তৈরি করতে elasticsearch-certutil
টুল ব্যবহার করুন:
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
elastic-stack-ca.p12
ফাইলের পাথ দিতে হবে এবং প্রতিটি নোডের জন্য সার্টিফিকেট তৈরি হবে।.p12
ফাইল (Keystore) তৈরি হবে, যা প্রতিটি নোডে TLS কনফিগারেশনের জন্য ব্যবহৃত হবে।Elasticsearch-এর elasticsearch.yml
কনফিগারেশন ফাইলে TLS কনফিগারেশন যোগ করতে হবে। প্রতিটি নোডে নিম্নলিখিত সেটিংস যুক্ত করুন:
# Transport Layer TLS Configuration
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /path/to/your/node-cert.p12
xpack.security.transport.ssl.truststore.path: /path/to/your/node-cert.p12
# HTTP Layer TLS Configuration (Optional: For HTTP/HTTPS)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/your/node-cert.p12
xpack.security.http.ssl.truststore.path: /path/to/your/node-cert.p12
keystore.path
এবং truststore.path
-এ যে .p12
ফাইলটি তৈরি করেছিলেন তার পাথ যুক্ত করুন।কনফিগারেশন পরিবর্তনের পরে প্রতিটি Elasticsearch নোড রিস্টার্ট করুন:
bin/elasticsearch
যদি Kibana ব্যবহার করে থাকেন, তাহলে Elasticsearch-এর সাথে সিকিউর কানেকশন কনফিগার করতে হবে। kibana.yml
ফাইলে TLS কনফিগারেশন যুক্ত করুন:
elasticsearch.hosts: ["https://your-elasticsearch-node:9200"]
elasticsearch.ssl.certificateAuthorities: ["/path/to/elastic-stack-ca.pem"]
elasticsearch.ssl.verificationMode: full
elasticsearch.hosts
: আপনার Elasticsearch নোডের HTTPS URL।elasticsearch.ssl.certificateAuthorities
: আপনার CA সার্টিফিকেট (elastic-stack-ca.pem
) এর পাথ, যা Kibana সার্ভারে রাখতে হবে।verificationMode
: full
সেট করুন, যাতে Kibana এবং Elasticsearch-এর মধ্যে TLS সার্টিফিকেট পুরোপুরি ভেরিফাই হয়।TLS সঠিকভাবে কাজ করছে কি না, তা যাচাই করতে:
elasticsearch.log
) যদি কোনো TLS সম্পর্কিত এরর বা ওয়ার্নিং থাকে।curl -u elastic:password --cacert /path/to/elastic-stack-ca.pem https://your-elasticsearch-node:9200
Elasticsearch-এ TLS সেটআপ করা ডেটা সিকিউরিটি নিশ্চিত করার একটি গুরুত্বপূর্ণ ধাপ। উপরের ধাপগুলো অনুসরণ করে, আপনি Elasticsearch নোডগুলোর মধ্যে এবং ক্লায়েন্ট ও সার্ভারের মধ্যে TLS এনক্রিপশন সক্রিয় করতে পারবেন, যা ক্লাস্টারকে সুরক্ষিত রাখবে এবং ডেটা লিকেজ বা অননুমোদিত অ্যাক্সেস প্রতিরোধ করবে।
Elasticsearch এর নিরাপত্তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন সংবেদনশীল বা মিশন-ক্রিটিকাল ডেটার সাথে কাজ করা হয়। নিচে Elasticsearch সুরক্ষার কিছু সেরা প্র্যাকটিস উল্লেখ করা হলো:
এই প্র্যাকটিসগুলো অনুসরণ করলে আপনার Elasticsearch ক্লাস্টারের সিকিউরিটি উল্লেখযোগ্যভাবে উন্নত হবে এবং ডেটা ও সার্ভিসগুলো সুরক্ষিত থাকবে।