PostgreSQL 8.4 এ ট্রিগার ফাংশন সম্পাদন করার জন্য বিশেষাধিকারগুলি কী কী?


11

PostgreSQL 8.4 এ ট্রিগার ফাংশন সম্পাদন করার জন্য বিশেষাধিকারগুলি কী কী?

দেখে মনে হচ্ছে যে কোনও ভূমিকাটিতে সেট করা সুবিধাগুলি কোনও ট্রিগার ফাংশনটি কার্যকর করতে কোনও বিষয় নয়। আমি মনে করি যে আমি কোনও দিন দেখেছি যে ট্রিগার ফাংশনটি সম্পাদন করার জন্য প্রয়োজনীয় সুযোগগুলি হ'ল নিষ্ক্রিয় অধিকার তবে টেবিলের মালিকের জন্য, ট্রিগারটি আগুন দেয় এমন ক্রিয়া সম্পাদনকারী প্রকৃত ভূমিকা নয় যা ট্রিগার ফাংশন বলে calls

আমি সেই ডকুমেন্টেশনের অংশটি খুঁজে পাচ্ছি না যা সেই বিন্দুটির কোনও ব্যাখ্যা দেয়?

উত্তর:


10

ট্রিগার ফাংশন যেমন অন্যান্য সুবিধাগুলির সাথে সম্পর্কিত হয় তেমন আচরণ করে। সামান্য ব্যতিক্রম সহ:

কোনও টেবিলে ট্রিগার তৈরি করতে, ব্যবহারকারীর অবশ্যই 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) এটি এর মতো কাজ করে না।

1
@ ইটিয়েনরউক্সেল: ট্রিগার ফাংশন হ'ল অন্যান্য ফাংশনের মতো ফাংশন যেমন অধিকারের কথা। অন্যথায় আপনাকে কী ভাবায়?
এরউইন ব্র্যান্ডসটেটার

@ এটিয়েনরউক্সেল: আমি একটি ছোট ব্যতিক্রম দলিল করার জন্য ম্যানুয়ালটিতে একটি উদ্ধৃতি যুক্ত করেছি।
এরউইন ব্র্যান্ডসটেটার

1
পরীক্ষা: আমি একটি সাধারণ ট্রিগার ফাংশন তৈরি করেছি যা ক NOTICE। আমি ফাংশনের মালিক ALLথেকে PUBLICএবং কাছ থেকে সুযোগ-সুবিধা সরিয়েছি । তারপরে, আমি যদি সেই মালিক বা অন্য কোনও ভূমিকা ব্যবহার করি যা সম্পর্কে function ফাংশনটিতে কোনও বিশেষাধিকার নেই তবে সুযোগ সুবিধার অভাবে আমার একটি ত্রুটি আশা করা উচিত তবে সবকিছু সফলভাবে চলে।

2
@ এটিয়েনরউক্সেল: আকর্ষণীয়। আমিও পরীক্ষা করেছিলাম। ট্রিগার ফাংশনটির জন্য যদি আপনার এক্সিকিউটিভ সুবিধা না থাকে তবে আপনি ট্রিগারটি তৈরি করতে পারবেন না। তবে আপনি এখনও ট্রিগার তৈরি করার পরে সেই অধিকারটি কার্যকর করা বাতিল করতে পারেন এবং ট্রিগার কাজ বন্ধ করবে না। কিছু গবেষণা করেছি। প্রশ্নের লিঙ্ক যুক্ত করা হচ্ছে ...
এরউইন ব্র্যান্ডস্টেটর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.