PostgreSQL पर आसानी से एकल-तालिका पहुंच के लिए न्यूनतम अनुदान


10

निम्नलिखित कमांड की एक सूची है जो नए उपयोगकर्ता (लॉगिन) बनाने के लिए काम करती है और PostgreSQL पर एक निर्दिष्ट तालिका के लिए आसानी से पहुंच प्रदान करती है।

मान लेते हैं कि इन आदेशों को पर्याप्त विशेषाधिकार (यानी postgresडिफ़ॉल्ट रूप से लॉगिन में लॉगिन) के साथ लॉगिन पर निष्पादित किया जाता है ।

CREATE ROLE user_name NOSUPERUSER NOCREATEDB 
NOCREATEROLE NOINHERIT LOGIN PASSWORD 'pwd' VALID UNTIL 'infinity';

अब मैं डेटाबेस selectपर तालिका देना चाहता हूं , इसलिए यहां यह जाता है (डेटाबेस PgAdmin के माध्यम से वर्तमान के रूप में चुना जाता है या ऐसा कुछ):tab_abcdb_xyzdb_xyz

grant select on tab_abc to user_name;

सवाल यह है: क्या यह पर्याप्त है या अधिक अनुदान (डेटाबेस connect, usageशायद) होना चाहिए ?

ये आदेश मेरे लिए काम करते हैं, लेकिन मेरी डिफ़ॉल्ट स्थापना में डिफ़ॉल्ट सुरक्षा सेटिंग्स हैं। यदि सर्वर व्यवस्थापक ने मजबूत सुरक्षा को कॉन्फ़िगर किया है तो मुझे क्या अतिरिक्त अनुदान जोड़ना चाहिए?

ऐसा लगता है कि मुझे न तो अनुदान देने की आवश्यकता है connectऔर न ही अनुदान usageदेते समय उस इंपीटाइट की select? क्या ऐसा हमेशा होता है?

जवाबों:


12

सवाल यह है: यह पर्याप्त है या अधिक अनुदान (डेटाबेस कनेक्ट, उपयोग हो सकता है) होना चाहिए?

इन बिंदुओं पर मुख्य रूप से डिफ़ॉल्ट से सुरक्षा को कठोर किया जा सकता है:

  • pg_hba.confफ़ाइल। किसी भी डेटाबेस विशेषाधिकार पर विचार करने से पहले यह कनेक्शन को फ़िल्टर करता है। डिफ़ॉल्ट स्थानीय कनेक्शन के लिए अपेक्षाकृत खुला है, लेकिन यह डेटाबेस, उपयोगकर्ता नाम और नेटवर्क उत्पत्ति की एक स्पष्ट सूची तक सीमित हो सकता है।

  • जनता के लिए अनुमति , छद्म भूमिका जो किसी के पास है। एक उपयोगकर्ता केवल तभी कनेक्ट कर सकता है जब कनेक्ट विशेषाधिकार प्रदान किया जाता है PUBLIC। देखें बनाया गया उपयोगकर्ता PostgreSQL के सभी डेटाबेसों को बिना किसी अनुदान के एक्सेस कर सकता है । एक डेटाबेस में सभी विशेषाधिकार जनता से निरस्त हो सकते हैं। आप उपयोग कर रहे प्रमुख PostgreSQL संस्करण के लिए डॉक्टर में REVOKE देखें ।

  • publicस्कीमा का अस्तित्व । यह सुविधा के लिए डिफ़ॉल्ट रूप से डेटाबेस के साथ बनाया गया है लेकिन यह अनिवार्य नहीं है। publicस्कीमा से सार्वजनिक अनुमतियों को हटाने के बजाय , यह डीबीए के लिए सिर्फ publicस्कीमा छोड़ने के लिए समझ में आ सकता है जब नए उपयोगकर्ताओं को कोई अंतर्निहित अनुमति नहीं होनी चाहिए।

उस मामले में जब इन चूक को हटा दिया गया है, एक तालिका को पढ़ने के लिए एक नया उपयोगकर्ता प्रदान किया जाना चाहिए:

GRANT CONNECT ON DATABASE dbname TO username;

डेटाबेस स्तर पर:

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