2011-12-13 23 views
21

the PostgreSQL docs से:PostgreSQL उपयोगकर्ताओं और समूहों को भूमिकाओं में क्यों मिला?

भूमिकाओं की अवधारणा "उन" और "समूह" की अवधारणाओं subsumes। 8.1 से पहले पोस्टग्रेएसक्यूएल संस्करण, उपयोगकर्ता और समूह अलग-अलग प्रकार के इकाइयां थे, लेकिन अब केवल भूमिकाएं हैं। कोई भी भूमिका उपयोगकर्ता के रूप में कार्य कर सकती है, एक समूह, या दोनों।

उन्होंने 8.1 में यह परिवर्तन क्यों किया?

शायद यह एक एकल भूमिका वर्ग (संरचना) के साथ सी कोडर्स दृष्टिकोण से आसान है?

More details:

CREATE USER is equivalent to CREATE ROLE except that CREATE USERउपयोगकर्ता/भूमिका के लिए लॉग इन अनुमति देता है।

manual से (मैं के बारे में मेरे webapp के लिए किसी अनुमति प्रणाली डिजाइन करने के लिए कर रहा हूँ, इसलिए मैं इस में दिलचस्पी रखता हूँ।)

उत्तर

27

मर्ज कई फायदे और कोई नुकसान है। उदाहरण के लिए, अब आप LOGIN विशेषाधिकार को जोड़कर/हटाकर "उपयोगकर्ता" को "समूह" में निर्बाध रूप से परिवर्तित कर सकते हैं और इसके विपरीत।

ALTER ROLE myrole LOGIN; 
ALTER ROLE myrole NOLOGIN; 

या आप कर सकते हैं किसी अन्य लॉगिन ("उपयोगकर्ता") या गैर लॉगिन भूमिका ("समूह") एक भूमिका करने के लिए GRANT सदस्यता:

GRANT joe TO sue; 

तुम अब भी कर सकते हैं:

CREATE USER james; 

यह अभी सिर्फ role with login privilege है। या:

CREATE GROUP workers; 

यह प्रभावी रूप से the same as CREATE ROLE है।

manual में यह सब कुछ है।

3

:

SQL मानक उपयोगकर्ताओं की अवधारणाओं को परिभाषित करता है और भूमिकाएं, लेकिन उन्हें अलग-अलग अवधारणाओं के रूप में मानती है और प्रत्येक डेटाबेस कार्यान्वयन द्वारा निर्दिष्ट उपयोगकर्ताओं को परिभाषित करने वाले सभी आदेशों को छोड़ देती है। PostgreSQL में हमने उपयोगकर्ताओं और भूमिकाओं को एक तरह की इकाई में एकीकृत करने के लिए चुना है। भूमिकाओं के कारण मानक में भूमिकाओं के मुकाबले कई और वैकल्पिक विशेषताएं हैं।

+2

यह वास्तव में उत्तर नहीं मिलता है करने के लिए बनाता है * क्यों * हालांकि ... –

+0

ऐसा कुछ है जो आपको हैकर्स से पूछना चाहिए, जिन्होंने ऐसा कुछ मंच नहीं किया है। –

+0

पर्याप्त मेला :) बस यह कह रहा है कि मैं इस सवाल को कैसे पढ़ता हूं। –

3

उपयोगकर्ताओं और समूहों के बीच भेद होने से आपको कुछ भी लाभ नहीं मिलता है।

  • एक उपयोगकर्ता किसी अन्य रूप में मुखौटा धारण कर लिया है, जैसे एक सुपर उपयोगकर्ता एक कम अनुमतियाँ उपयोगकर्ता अनुकरण:

    बदलते इसे पसंद का उपयोग करता है सरल करने के लिए था के लिए प्रेरणा AFAIK

    ।एकीकृत भूमिकाओं के साथ यह वर्तमान भूमिका का एक और परिवर्तन बन जाता है, प्राथमिक समूह को बदलने के लिए कोई अलग नहीं है।

  • समूह जो ग्रैनुलर एक्सेस अनुमतियों को लागू करने के लिए अन्य समूहों के सदस्य हैं।

आपको जानकारी चाहते हैं, हालांकि, आप की अवधि के लिए pgsql-हैकर्स सूची के अभिलेखागार बाहर की जाँच बंद सबसे अच्छा Git इतिहास (सीवीएस से परिवर्तित) कर रहे हैं, और।

+0

pgsql-hackers सूची के अभिलेखागार का सुझाव देने के लिए धन्यवाद। मुझे एक प्रासंगिक धागा मिला, और इस सवाल का एक और जवाब जोड़ा। – KajMagnus

5

मुझे 6 जून, 2003 से this thread in the PostgreSQL-Hackers list मिला, अंत में सुझाव दिया गया है कि उपयोगकर्ता और समूह और भूमिकाएं समेकित होंगी। (धन्यवाद क्रेग रिंगर यह सुझाव देने के लिए कि मैं pgsql-hackers सूची अभिलेखागार की जांच करता हूं।)

यहां कुछ लाभ दिए गए हैं (जिन्हें मैंने पाया)।

समूहों के सदस्यों

एसीएल कोड

GRANT सरलीकृत किया जाएगा के रूप में समूहों/है वाक्य रचना और एसीएल सूचियों के लिए प्रदर्शन स्वरूप रद्द हो सकता है , सरलीकृत के बाद से वहाँ कोई होगा करने की अनुमति के रूप में एक वाक्यविन्यास मार्कर की आवश्यकता है चाहे दिया गया नाम उपयोगकर्ता या समूह है।

कुछ परिस्थितियों मैं इसे समझ बनाने सीधे एक समूह/भूमिका/whatchacallit

यह भी समस्या यह है कि INFORMATION_SCHEMA विचारों केवल स्वामित्व वाली वस्तुओं

दिखाएगा का समाधान के रूप में में प्रवेश की अनुमति देने के देख सकते हैं में [ यह आसान] समूहों [ के बाद से आप बस भूमिका से संबंधित कोड का पुन: उपयोग के लिए दी गई होगी प्रतिनिधित्व करने विशेषाधिकार?]