सुपर उपयोगकर्ता के बिना pg_stat_activity में दूसरे सत्र की क्वेरी को कैसे देखें?


13

मेरे पास Postgresql 9.2 डेटाबेस है। इस डेटाबेस पर दो उपयोगकर्ता बनाए गए हैं। जब मैं निम्नलिखित क्वेरी को सुपरयूज़र के रूप में करता हूं, तो मैं सब कुछ देख सकता हूं।

select * from pg_stat_activity

हालांकि, क्या सुपरयूजर के रूप में जुड़े बिना एक ही परिणाम को प्राप्त करना संभव है?

मुझे कौन से विशेषाधिकार / भूमिका प्रदान करनी चाहिए / बनाने के लिए परिणाम चाहिए जो एक सुपरयुसर देख सकता है?


इस बिंदु पर, अनुदान देने का कोई अधिकार नहीं है, यह सुपरयुसर के लिए हार्डकोड है। मेलिंग सूची में हाल ही में इस पर चर्चा की गई है, और अगर कोई इस पर काम करने का समय पाता है तो 9.5 में बदल सकता है।
क्रेग रिंगर

जवाबों:


21

इस बिंदु पर, अनुदान देने का कोई अधिकार नहीं है, यह सुपरयुसर के लिए हार्डकोड है। मेलिंग सूची में हाल ही में इस पर चर्चा की गई है, और अगर कोई इस पर काम करने का समय पाता है तो 9.5 में बदल सकता है।

एक वर्कअराउंड के रूप में, आप एक SECURITY DEFINERफ़ंक्शन बना सकते हैं जो सुपरयुसर के स्वामित्व में है, और आपके द्वारा इच्छित क्वेरी चलाता है। यह गैर-सुपरयुवर्स को pg_stat_activityफ़ंक्शन को कॉल करके सामग्री को देखने की अनुमति देगा ।

जैसे, सुपरयुजर के रूप में दौड़ें:

CREATE FUNCTION get_sa() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;

CREATE VIEW pg_stat_activity_allusers AS SELECT * FROM get_sa();

GRANT SELECT ON pg_stat_activity_allusers TO public;

ध्यान दें कि नि: शुल्क प्रवेश pg_stat_activityएक कारण के लिए प्रतिबंधित है। अन्य लोगों के प्रश्नों से संवेदनशील जानकारी को टटोलना संभव है - उदाहरण के लिए कल्पना करें कि क्या कोई अन्य उपयोगकर्ता pgcrypto का उपयोग कर रहा था। publicआपको अधिकार देने के बजाय उन्हें केवल एक विशिष्ट उपयोगकर्ता या भूमिका के लिए अनुदान देना चाहिए जो निगरानी के लिए सरोगेट उपयोगकर्ता के रूप में कार्य करना है।


धन्यवाद! बस यह पता लगाने की कोशिश कर रहा था कि सुपरसूसर दिए बिना pg_stat_activity से पढ़ने के लिए मॉनिटर अकाउंट की अनुमति कैसे दी जाए।
महाकाव्य_फिल

3

pg_read_all_statsवांछित परिणाम प्राप्त करने के लिए आप पोस्टग्रेसीक्यू 10 के साथ शुरुआत कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.