Role-based Access Control (RBAC) in Elasticsearch

Role-based Access Control (RBAC) হল Elasticsearch-এর একটি নিরাপত্তা মডেল, যা ইউজারদের অ্যাক্সেস এবং প্রিভিলেজ কন্ট্রোল করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে প্রতিটি ইউজার বা সার্ভিস শুধুমাত্র তাদের নির্দিষ্ট রোল বা দায়িত্ব অনুযায়ী প্রয়োজনীয় ডেটা বা রিসোর্স অ্যাক্সেস করতে পারে। Elasticsearch-এর X-Pack সিকিউরিটি ফিচার RBAC সাপোর্ট করে, যা ইউজার ম্যানেজমেন্ট, ইনডেক্স লেভেল, ক্লাস্টার লেভেল, এবং ডকুমেন্ট বা ফিল্ড লেভেলে অ্যাক্সেস নিয়ন্ত্রণ করা যায়।

1. RBAC-এর মূল উপাদান

Elasticsearch-এর RBAC মডেল কয়েকটি গুরুত্বপূর্ণ উপাদানের উপর ভিত্তি করে তৈরি:

a) Roles

  • রোল নির্ধারণ করে দেয় ইউজাররা কোন কোন ইনডেক্স, API, বা রিসোর্সে কী ধরনের প্রিভিলেজ পাবে।
  • রোলের মাধ্যমে ক্লাস্টার এবং ইনডেক্স লেভেল পারমিশন সেট করা যায়। প্রতিটি রোল একাধিক ইনডেক্স বা ক্লাস্টারের উপর নির্দিষ্ট প্রিভিলেজ যেমন read, write, manage, ইত্যাদি নির্ধারণ করে।

b) Users

  • ইউজাররা হল কনফিগার করা ব্যক্তি বা সার্ভিস অ্যাকাউন্ট, যারা Elasticsearch-এ লগইন করে এবং ডেটা অ্যাক্সেস করে। প্রতিটি ইউজারের সাথে এক বা একাধিক রোল এসাইন করা যায়।

c) Privileges

  • প্রিভিলেজ নির্ধারণ করে ইউজাররা কী ধরনের অ্যাকশন নিতে পারে। এটি হতে পারে read, write, index, delete, বা manage (ক্লাস্টার ম্যানেজমেন্ট)।

d) API Keys

  • API Keys ব্যবহার করে নির্দিষ্ট ইউজার বা সার্ভিস অ্যাকাউন্টগুলোর জন্য অ্যাক্সেস প্রদান করা যায়, যেগুলো RBAC প্রিভিলেজ দ্বারা নিয়ন্ত্রিত হয়।

2. RBAC সেটআপ করার ধাপসমূহ

ধাপ ১: Role তৈরি করা

Elasticsearch-এ নতুন রোল তৈরি করতে নিচের API ব্যবহার করা হয়:

PUT /_security/role/sales_role
{
  "cluster": ["monitor"],
  "indices": [
    {
      "names": [ "sales-data-*"],
      "privileges": ["read", "write"]
    }
  ],
  "applications": [],
  "run_as": [],
  "metadata": {},
  "transient_metadata": {
    "enabled": true
  }
}
  • cluster: এটি ক্লাস্টার লেভেল প্রিভিলেজ নির্ধারণ করে, যেমন monitor (ক্লাস্টার মনিটরিং) বা manage (ক্লাস্টার ম্যানেজমেন্ট)।
  • indices: এখানে ইনডেক্সের নাম এবং প্রিভিলেজ (যেমন read, write) নির্ধারণ করা হয়। এটি নির্দিষ্ট ইনডেক্স বা ইনডেক্স প্যাটার্ন অনুযায়ী কনফিগার করা যায়।
  • run_as: এটি কনফিগার করা ইউজারকে অন্য ইউজারের প্রিভিলেজে রান করার অনুমতি দেয় (প্রয়োজন হলে)।

ধাপ ২: User তৈরি এবং Role অ্যাসাইন করা

একটি ইউজার তৈরি করতে এবং একটি রোল অ্যাসাইন করতে নিচের API ব্যবহার করা হয়:

POST /_security/user/john_doe
{
  "password": "password123",
  "roles": ["sales_role"],
  "full_name": "John Doe",
  "email": "john.doe@example.com"
}
  • এই ইউজারটির পাসওয়ার্ড, নাম, ইমেইল এবং নির্দিষ্ট রোল (এখানে "sales_role") সেট করা হলো।
  • ইউজারটি কনফিগার করা রোলের অধীনে থাকা সমস্ত ইনডেক্স এবং রিসোর্সে অ্যাক্সেস পাবে।

ধাপ ৩: API Key তৈরি করা (Optional)

API Key তৈরি করে নির্দিষ্ট প্রিভিলেজ দিয়ে সার্ভিস অ্যাক্সেস প্রদান করা যায়:

POST /_security/api_key
{
  "name": "service-api-key",
  "role_descriptors": {
    "service_role": {
      "cluster": ["monitor"],
      "index": [
        {
          "names": ["log-*"],
          "privileges": ["read", "write"]
        }
      ]
    }
  }
}
  • role_descriptors: এখানে API Key-এর জন্য নির্দিষ্ট রোল এবং প্রিভিলেজ ডিফাইন করা হয়েছে।

3. RBAC-এর বিভিন্ন লেভেলের পারমিশন

RBAC সিস্টেমে পারমিশন বিভিন্ন লেভেলে কনফিগার করা যায়:

a) Cluster Level Permissions

  • ক্লাস্টার লেভেল প্রিভিলেজ নির্ধারণ করে ইউজাররা ক্লাস্টারের কী ধরনের অ্যাকশন নিতে পারবে। উদাহরণ: manage (ক্লাস্টার পরিচালনা), monitor (ক্লাস্টার মনিটরিং)।

b) Index Level Permissions

  • ইনডেক্স লেভেলে নির্দিষ্ট ইনডেক্স বা ইনডেক্স প্যাটার্ন অনুযায়ী প্রিভিলেজ সেট করা যায়, যেমন read, write, index, বা delete
  • উদাহরণ:
{
 "indices": [
   {
     "names": [ "customer-index-*" ],
     "privileges": [ "read" ]
   }
 ]
}

c) Document এবং Field Level Security

  • ডকুমেন্ট বা ফিল্ড লেভেলে অ্যাক্সেস কন্ট্রোল সেট করা যায়, যা নির্দিষ্ট ইউজার বা রোলকে কেবল নির্দিষ্ট ডকুমেন্ট বা ফিল্ড অ্যাক্সেস করতে দেয়।
  • উদাহরণ:
{
 "indices": [
   {
     "names": ["finance-index"],
     "privileges": ["read"],
     "query": "{\"term\": {\"department\": \"finance\"}}"
   }
 ]
}

4. RBAC Best Practices

a) Least Privilege Principle অনুসরণ করা

  • ইউজারদের সর্বনিম্ন প্রয়োজনীয় প্রিভিলেজ প্রদান করুন।
  • উদাহরণ: শুধুমাত্র read প্রিভিলেজ অ্যাসাইন করুন যদি ইউজারের রাইট বা ম্যানেজ করার প্রয়োজন না থাকে।

b) Role-based Segmentation

  • প্রতিটি দলের জন্য পৃথক রোল তৈরি করুন (যেমন DevOps, Security, Sales) এবং সেই রোল অনুযায়ী তাদের প্রিভিলেজ সেট করুন।

c) Audit Logging Monitor করা

  • প্রতিটি ইউজারের এক্টিভিটি মনিটর করুন এবং অডিট লগ রেগুলারলি চেক করুন যাতে কোনো সন্দেহজনক অ্যাক্টিভিটি ডিটেক্ট করা যায়।

d) Use API Keys for Service Accounts

  • সার্ভিস অ্যাকাউন্ট বা API অ্যাক্সেসের জন্য API Key ব্যবহার করুন, যা নির্দিষ্ট প্রিভিলেজ এবং সেশন লিমিট দিয়ে কনফিগার করা যায়।

e) Role Hierarchies এবং Inheritance ব্যবহার

  • রোল হায়ারার্কি তৈরি করে ইনহেরিটেন্স ব্যবহার করতে পারেন, যেখানে একটি রোলের অধীনে অন্য রোলগুলোকে অন্তর্ভুক্ত করা হয়। এতে রোলগুলো সহজে ম্যানেজ করা যায় এবং ফ্লেক্সিবিলিটি থাকে।

উপসংহার

Elasticsearch-এর RBAC সিস্টেম একটি শক্তিশালী এবং কার্যকর উপায়, যা ইউজার এবং রিসোর্স অ্যাক্সেস সুরক্ষিত রাখতে সহায়ক। সঠিকভাবে RBAC কনফিগার করে আপনি সিস্টেমের ডেটা এবং রিসোর্সের উপর যথাযথ প্রিভিলেজ প্রদান করতে পারেন, যা সিকিউরিটি বাড়াতে এবং ঝুঁকি কমাতে সহায়ক।

Content added By

আরও দেখুন...

Promotion