लोग,
मैं अपने पोस्टग्रेज उपयोगकर्ता अभिगम नियंत्रण डिजाइन को बेहतर बनाने और सर्वोत्तम प्रथाओं के साथ गठबंधन करने में आपकी सहायता का उपयोग कर सकता हूं। मैं एक छोटे से प्रोडक्शन पोस्टग्रेज सर्वर को रोल आउट करने में मदद कर रहा हूं, लेकिन मैं डीबी एडमिन नहीं हूं, इसलिए मुझे पता है कि खतरनाक होना ही काफी है।
Postgres v9.2 की एक इंस्टॉल के साथ एक सर्वर है। यह कई डेटाबेस होस्ट करता है, प्रत्येक पूरी तरह से एक अलग "ग्राहक" की सेवा करता है। दूसरे शब्दों में, customer1, database2 और इसके आगे का उपयोग नहीं करना चाहिए। सामान्य संचालन के दौरान, डेटाबेस को CakePHP के मिलान उदाहरण द्वारा एक्सेस किया जाता है, सभी पोस्टग्रेज के समान सर्वर पर सह-स्थित होते हैं। हालांकि इस तैनाती पर संभावित अनुकूलन हो सकता है, मैं ज्यादातर Psql भूमिकाओं में रुचि रखता हूं।
मैंने जो पढ़ा, उसके आधार पर, यह लगता है कि तीन प्रकार की भूमिकाएँ समझ में आएंगी:
- सुपरयुसर नॉन डिफॉल्ट पासवर्ड के साथ पोस्टग्रेट करता है
- एक व्यवस्थापक भूमिका जिसमें नियमित रखरखाव, डीबी निर्माण, बैकअप, पुनर्स्थापना के लिए सुपरसुसर विशेषाधिकार नहीं हैं। सभी ग्राहक डेटाबेस के साथ कुछ भी करने में सक्षम होना चाहिए।
- अपने संबंधित डेटाबेस में CRUD की क्षमता के साथ उपयोगकर्ता भूमिकाएं। यदि इसे लागू किया जाता है, तो अपने स्वयं के DB पर अधिक अधिकारों को सहन किया जा सकता है।
उस डिज़ाइन को लागू करना जहाँ मुझे बहुत कम विश्वास है। डीबी बनाम तालिका का स्वामित्व और साथ ही जो कि थोड़ा मैला होना चाहिए से विरासत में मिला है। नीचे मेरे डेटाबेस और मेरे उपयोगकर्ता हैं। क्या कार्यान्वयन का मूल्यांकन करने के लिए यह पर्याप्त जानकारी है?
Role name | Attributes | Member of
-----------+------------------------------------------------+-------------------
admin | Create role, Create DB | {user1, user2}
postgres | Superuser, Create role, Create DB | {}
user1 | | {}
user2 | | {}
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
admin | postgres | UTF8 | en_US | en_US | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | admin=CTc/postgres
postgres | postgres | UTF8 | en_US | en_US |
template0 | postgres | UTF8 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
user1 | admin | UTF8 | en_US | en_US | =Tc/admin +
| | | | | admin=CTc/admin +
| | | | | user1=CTc/admin
user2 | admin | UTF8 | en_US | en_US | =Tc/admin +
| | | | | admin=CTc/admin +
| | | | | user2=CTc/admin
स्पष्ट में बाहरी कनेक्शन और पासवर्ड को रोकने के लिए, pg_hba.conf इस प्रकार है:
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5