हम वर्तमान में एक परियोजना प्रबंधन सॉफ्टवेयर विकसित कर रहे हैं। और हमें सुरक्षा लागू करने के लिए सही दृष्टिकोण पर निर्णय लेने में परेशानी हो रही है। हमने एसीएल और आरबीएसी दोनों को देखा है और पहले से ही निश्चित हैं कि हमें विशिष्ट कारणों से कम से कम एक संयोजन की आवश्यकता है। लेकिन ऐसी कुछ समस्याएं हैं जिनके पास किसी भी दुनिया में अच्छा समाधान नहीं है। मुझे स्पष्ट करने दें:कॉम्प्लेक्स राइट सिस्टम: एसीएल, आरबीएसी और अधिक क्या?
मान लीजिए कि आप निम्नलिखित संस्थाओं करते हैं:
- उपयोगकर्ता, अलग-अलग भूमिकाओं के साथ, यानी
- परियोजना का नेतृत्व
- कार्यकर्ता
- व्यवस्थापक
- परियोजनाओं
- सौंपे गए उपयोगकर्ता
- परियोजना में कार्य
अब निम्नलिखित नियम व्यक्त किया जाना चाहिए: भूमिका के साथ एक उपयोगकर्ताकार्यकर्ता केवल है कार्य देखने की अनुमति , जो कि एक परियोजना से संबंधित हैं जो उन्हें सौंपा गया है।
यह परिणाम है कि एक उपयोगकर्ता केवल पूरी सूची में कुछ कार्य देखने की अनुमति है।
हम RBAC का उपयोग भूमिकाओं वास्तव में कार्य पढ़ने की अनुमति देने के लिए होगा। लेकिन स्थिति लागू नहीं है क्योंकि इसमें विशिष्ट संस्थाएं शामिल हैं। एसीएल इस्तेमाल किया जा सकता है, लेकिन हम डर एसीएल रखने का बुरा सपना आवश्यकताओं (साथ consitent प्रविष्टियां उपयोगकर्ता बदल सकते हैं, भूमिकाओं बदल सकते हैं, नई कार्य पेश किया जा सकता है एक जो सही प्रविष्टियां प्राप्त करने के लिए, के लिए होता है बस जटिल के रूप में)।
जब एक विशेष परियोजना (WHERE project_id = 123
) को देखने बेशक वहाँ विशिष्ट प्रश्न हो सकता है, लेकिन यह है, जहां मूल रूप से हर काम के प्रदर्शन के लिए माना जा सकता है एक "मेरे सभी मौजूदा कार्य के दृश्य" के लिए मदद नहीं करता है, लेकिन प्रत्येक एकल प्रवेश के लिए एसीएल की जांच करनी होगी।
और मैं डीबी से सभी कार्यों को लोड किए बिना और फिर एसीएल के आधार पर फ़िल्टरिंग के बिना "वर्तमान उपयोगकर्ता को देखने के लिए पहले 25 कार्य प्राप्त करने" की अनुमति कैसे प्राप्त करूं, यानी पेजिंग को संभालना।
अपने जवाब के लिए धन्यवाद "रिकॉर्ड कहां स्थान = 'सीए' से चयन *"। मेरी समझ से उन व्यवसाय नियमों को मैं "एप्लिकेशन कोड में फ़िल्टरिंग" कहूंगा, जो मेरी समस्या का समाधान नहीं करता है। मैं कार्यों को पुनर्प्राप्त करने के लिए एक प्रश्न पूछूंगा (25) और फिर कुछ परिणाम व्यापार नियम द्वारा फ़िल्टर किए गए हैं। तब मुझे डीबी को एक और कॉल करने की आवश्यकता होगी और जब तक मैं 25 परिणाम वापस नहीं कर सकता तब तक फ़िल्टर करें। यह मेरी राय में बहुत अच्छा नहीं है।मेरे दिमाग में मैं एसक्यूएल क्वेरी में व्यवसाय नियमों को लागू करना चाहता हूं और तुरंत 25 परिणाम पुनर्प्राप्त करना चाहता हूं। – pdobrigkeit
यह प्रश्न PHP के साथ टैग किया गया है। क्या आप तय कर सकते हैं कि क्या फ्रेमवर्क/लाइब्रेरी आप शीर्ष पर बना रहे हैं, यदि कोई है, तो फैसला किया है? यह चर्चा को और अधिक उपयोगी बना सकता है ...। –
हम ZF2 का उपयोग करेंगे। मॉड्यूल के रूप में जेडएफ 2/एसीएल और जेएफसीआरबीएसी। लेकिन मुझे लगता है कि PHP गलत टैग हो सकता है? – pdobrigkeit