Definer এবং Invoker Rights

PL/SQL Security - পিএল/এসকিউএল (PL/SQL) - Database Tutorials

334

PL/SQL এর মধ্যে Definer Rights এবং Invoker Rights দুটি গুরুত্বপূর্ণ ধারণা, যা Stored Procedures, Functions, এবং Triggers এর অধিকার (permissions) নির্ধারণে ব্যবহৃত হয়। এই অধিকারগুলি নিশ্চিত করে যে, কোন ইউজার কে কোন অ্যাকশন সম্পাদন করতে পারবে, এবং এর ফলে অ্যাপ্লিকেশন সিকিউরিটি এবং এক্সেস কন্ট্রোল নিশ্চিত করা যায়।

Definer Rights:

Definer Rights হল সেই অধিকার যেখানে কোনো Procedure, Function, অথবা Trigger যেই ইউজার দ্বারা তৈরি করা হবে, সেই ইউজারের অধিকার অনুযায়ী অ্যাকশন সম্পাদিত হয়। অর্থাৎ, যখন একটি Procedure বা Function চালানো হয়, তখন সেই ইউজারের অনুমতি অনুসারে প্রয়োজনীয় অপারেশন সম্পাদিত হয়, যিনি এই কোডটি তৈরি করেছেন (definer)।

  • Definer Rights পদ্ধতিতে, কোডের অধিকার এবং প্রিভিলেজগুলি অথর (definer) এর ওপর নির্ভর করে, যা সাধারণত সেই ইউজার যিনি সেই কোড তৈরি করেছেন।
  • এটি নিরাপদ হতে পারে, কারণ এটি কোডের নিরাপত্তা নিয়ন্ত্রণকে সুসংহত করে রাখে, বিশেষত যদি কোডে অনেক ধরনের ডেটাবেস অ্যাকসেস প্রয়োজন হয়।

Definer Rights উদাহরণ:

ধরা যাক, একটি ইউজার user_a একটি Procedure তৈরি করেছে যা অন্য একটি ইউজারের ডেটা অ্যাক্সেস করতে পারে। user_a যদি Procedure-টি Definer Rights-এ তৈরি করে, তাহলে যেই ইউজার এই Procedure চালাবে (যেমন user_b), তার ডেটাবেস অ্যাক্সেসের জন্য user_a এর অনুমতি লাগবে, কারণ কোডটি user_a দ্বারা তৈরি হয়েছে।

CREATE OR REPLACE PROCEDURE get_employee_salary
   IS
   v_salary NUMBER;
BEGIN
   -- Definer rights: user_a will have access to the data
   SELECT salary INTO v_salary FROM employees WHERE employee_id = 100;
   DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;

এখানে, get_employee_salary পদ্ধতি user_a দ্বারা তৈরি হয়েছে, তাই কোডটি চালানোর জন্য user_a এর অনুমতি প্রয়োজন।


Invoker Rights:

Invoker Rights হল সেই অধিকার যেখানে Procedure, Function, অথবা Trigger যেই ইউজার দ্বারা কল করা হয়, তার অধিকার অনুসারে অ্যাকশন সম্পাদিত হয়। অর্থাৎ, যদি কোন ইউজার একটি Procedure বা Function কল করে, তবে সেই ইউজারের ডেটাবেস অ্যাক্সেসের অনুমতি অনুসারে অপারেশন সম্পাদিত হবে, এবং কোডটি তৈরি করা ইউজারের (definer) অনুমতির সাথে সম্পর্কিত হবে না।

  • Invoker Rights পদ্ধতিতে, যেই ইউজার কোডটি কল করবে, তার অনুমতি অনুসারে কার্যক্রম হবে।
  • এটি সুরক্ষিত হতে পারে, কারণ এটি ব্যবহারকারীর নিজস্ব অধিকার এবং প্যারামিটার অনুসারে কাজ করে, তবে সাবধানতা অবলম্বন করা উচিত, যাতে ভুল বা অননুমোদিত অ্যাক্সেস না ঘটে।

Invoker Rights উদাহরণ:

ধরা যাক, user_a একটি Procedure তৈরি করেছে এবং সেই Procedure-টি Invoker Rights-এ তৈরি করা হয়েছে। এখন, যদি user_b এই Procedure কল করে, তবে user_b এর অনুমতি অনুযায়ী ডেটাবেস অ্যাক্সেস হবে, না যে user_a এর।

CREATE OR REPLACE PROCEDURE get_employee_salary
   IS
   v_salary NUMBER;
BEGIN
   -- Invoker rights: user_b's permissions will be used to access data
   SELECT salary INTO v_salary FROM employees WHERE employee_id = 100;
   DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;

এখানে, যদি user_b get_employee_salary কল করে, তাহলে সেই user_b এর অনুমতি অনুসারে ডেটাবেস অ্যাক্সেস হবে।


Definer Rights এবং Invoker Rights এর মধ্যে পার্থক্য:

AttributeDefiner RightsInvoker Rights
Who controls access?Code is executed with the privileges of the definer (creator).Code is executed with the privileges of the invoker (caller).
Use caseWhen a procedure requires higher-level permissions.When a procedure should use the caller's permissions.
SecurityMore secure, since only the definer’s privileges are required.More flexible, but might expose security risks if not handled carefully.
ExampleA stored procedure by a privileged user allows access for others.The procedure uses the privileges of the user who calls it.
Typical UsageUse when the procedure must access resources that the caller may not have access to.Use when the procedure should respect the caller's privileges.

কেন Definer Rights এবং Invoker Rights ব্যবহার করবেন?

  1. Definer Rights ব্যবহারের সুবিধা:
    • নিরাপদ, কারণ শুধুমাত্র কোডের নির্মাতা (definer) এর অনুমতি প্রয়োজন।
    • ডেটাবেসের নিরাপত্তা এবং অনুমতি নিয়ন্ত্রণ শক্তিশালী হয়।
    • প্রয়োজনে অধিক অনুমতি দেয়া যেতে পারে, যেমন ডেটাবেস অ্যাডমিনিস্ট্রেটর বা অন্য উচ্চ স্তরের ব্যবহারকারী দ্বারা তৈরি কোড।
  2. Invoker Rights ব্যবহারের সুবিধা:
    • প্রয়োগকারী (invoker) ব্যবহারকারীর অধিকার অনুসারে কোড চলতে পারে, যা একটি ডেটাবেস অ্যাপ্লিকেশনের ভিন্ন ভিন্ন ব্যবহারকারীকে স্বতন্ত্রভাবে কাজ করতে দেয়।
    • ইউজারদের নিজস্ব অনুমতি অনুসারে ডেটা অ্যাক্সেস এবং অ্যাকশন পরিচালিত হয়।

উপসংহার:

  • Definer Rights এবং Invoker Rights PL/SQL এর মধ্যে Security এবং Privilege ব্যবস্থাপনার গুরুত্বপূর্ণ অংশ।
  • আপনি যেই ধরনের অ্যাপ্লিকেশন তৈরি করছেন তার উপর ভিত্তি করে আপনি কোন ধরনের অধিকার ব্যবহার করবেন তা নির্ধারণ করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...