ট্রিগার ফাংশন যেমন অন্যান্য সুবিধাগুলির সাথে সম্পর্কিত হয় তেমন আচরণ করে। সামান্য ব্যতিক্রম সহ:
কোনও টেবিলে ট্রিগার তৈরি করতে, ব্যবহারকারীর অবশ্যই TRIGGER
টেবিলে বিশেষাধিকার থাকা উচিত । ব্যবহারকারীর EXECUTE
ট্রিগার ফাংশনেও অধিকার থাকতে হবে ।
আপডেট আপডেটে
মতামত পরে আমি কিছু গবেষণা করেছি। পোস্টগ্রিস উইকিতে একটি খোলা TODO আইটেম রয়েছে:
ট্রিগার অনুমতি চেক শক্ত করুন
পোস্টগ্রিস হ্যাকারগুলিতে এই থ্রেডের সাথে সংযুক্ত । বর্তমানে, EXECUTE
ট্রিগার ফাংশনটিতে সুবিধাগুলি কেবল ট্রিগার তৈরির সময় পরীক্ষা করা হয় , তবে রানটাইমে নয়। সুতরাং ট্রিগার ফাংশনে EXECUTE বাতিল করা একবার তৈরি হওয়ার পরে কোনও প্রভাব ফেলবে না। আপনার পর্যবেক্ষণটি সঠিক বলে মনে হচ্ছে।
এটি অবজেক্টগুলি চালিত করার জন্য কোনও অতিরিক্ত সুযোগ-সুবিধা দেয় না। যদি কলিং রোলটিতে ফাংশন বডি (অংশগুলি) কার্যকর করার জন্য প্রয়োজনীয় সুযোগ-সুবিধাগুলি না থাকে তবে স্বাভাবিক ব্যতিক্রম উত্থাপিত হয়। পথ প্রশস্ত করার জন্য, আপনি OWNER
ফাংশনটির একটি বিশেষাধিকারী ব্যবহারকারী তৈরি করতে এবং এটি ব্যবহার করতে পারেন
SECURITY DEFINER
ধারা, এখানে ম্যানুয়ালটিতে নথিযুক্ত । এটা তোলে ফাংশনের অনুমতিসহ চালানো যাবে ঘটায় মালিক পরিবর্তে invoker (ডিফল্ট)।
মালিক যদি সুপারইউজার হয় তবে আপনি কাকে EXECUTE
বিশেষাধিকার প্রদান করেন এবং অপব্যবহার এড়াতে ফাংশনটি কী করতে পারে সে সম্পর্কে আপনাকে অতিরিক্ত সতর্কতা অবলম্বন করা উচিত । আপনি চান করতে পারেন
REVOKE ALL ON FUNCTION foo() FROM public;
SET search_path
ফাংশন দিয়ে শুরু এবং ব্যবহার করতে। ফাংশনগুলি নিরাপদে লেখার
উপর অধ্যায়টি পড়তে ভুলবেন না ।SECURITY DEFINER
এসও সম্পর্কিত এই সম্পর্কিত একটি কোডের উদাহরণ সন্ধান করুন।
SECURITY DEFINER
, আমি একটি চাইSECURITY INVOKER
। তবে এটি (ট্রিগার ফাংশনের জন্য, নিয়মিত ফাংশনের জন্য নয়) মনে হয় যে ডিফল্ট বিকল্পটি ব্যবহার করে (SECURITY INVOKER
) এটি এর মতো কাজ করে না।