2013-01-01 18 views
5

मुझे सॉफ़्टवेयर सिस्टम के भीतर संसाधनों तक पहुंचने के लिए उपयोगकर्ताओं के लिए उन्नत पहुंच नियंत्रण करने में दिलचस्पी है। मैं हेल्थकेयर आईटी में काम करता हूं और एक छोटा सा मुझे अक्सर role-based access control in healthcare की जटिलता को कम करके आंका गया है। लेकिन यह सवाल जटिल एसीएल आवश्यकताओं वाले किसी भी व्यक्ति पर लागू होना चाहिए।उन्नत एक्सेस कंट्रोल लाइब्रेरी

काफी समय के लिए php gacl स्वास्थ्य आईटी सिस्टम के अंदर बहुत जटिल एसीएल नियंत्रण मुद्दों को संभालने के प्रयोजनों के लिए मेरी जाने-जाने वाली लाइब्रेरी रही है। लेकिन अब मैं आम तौर पर जावास्क्रिप्ट के साथ और विशेष रूप से नोड के साथ काम कर रहा हूं। मैंने पुस्तकालयों के लिए एक सामान्य तरीके से एक्सेस कंट्रोल करने के लिए एनपीएम खोजा है।

मैं केवल उपयोगकर्ताओं और संसाधनों (2 के बजाय 3-स्तर) के बजाय कार्यों को परिभाषित करने के लिए समर्थन करना चाहता हूं और मैं उपयोगकर्ता, क्रिया और संसाधन समूह रखना चाहता हूं, और निहितार्थ से मैं एसीएल विरासत प्राप्त करना चाहता हूं । कि पुस्तकालय के लिए the Star Wars themed manual से

क्लासिक उदाहरण की तरह नियम हैं:

  • चालक दल है के सभी सदस्य (यात्रा, कॉन्फ़िगर करें, और उपयोग) बंदूकें, इंजन, कॉकपिट और लाउंज का उपयोग, के लिए उम्मीद च्युई।
  • सभी droids में कॉकपिट तक पहुंच (विज़िट और उपयोग) है, लेकिन केवल R2D2 में इंजन तक पहुंच कॉन्फ़िगर करें।
  • हान के सभी प्रकार के संसाधनों तक सभी प्रकार की पहुंच है।

बुनियादी अवधारणाओं यहाँ, धारणा है कि आप नियमों है कि उपयोगकर्ताओं को दोनों में से किसी समूह (यानी चालक दल, यात्रियों या ड्रौयड) या व्यक्तियों के लिए लागू कर सकते हैं (हान, और च्युई) शामिल हैं आप का उपयोग के विभिन्न प्रकार के हो सकते हैं (विज़िट, कॉन्फ़िगर, उपयोग) या एक्सेस के समूह (रखरखाव एक्सेस = कॉन्फ़िगर + मरम्मत + उपयोग) विभिन्न संसाधनों (इंजन और कॉकपिट) को भी समूहित किया जा सकता है, (युद्ध-स्टेशन = कॉकपिट + बंदूकें)।

यह अपेक्षाकृत सरल समूह-आधारित प्रशासन के साथ असाधारण जटिल नियंत्रण नियंत्रण नियमों की कॉन्फ़िगरेशन की अनुमति देता है।

अब तक, मैंने php-gacl के बाहर ऐसा कुछ नहीं देखा है। मैंने अद्भुत जावास्क्रिप्ट आधारित एसीएल परियोजनाओं पर एक नज़र डाली है और उनमें से सभी सादगी और उपयोग की आसानी के बजाय उपयोग की आसानी का विज्ञापन करते हैं। यह अन्य सामान्य PHP एसीएल पुस्तकालयों (यानी Zend ACL)

क्या कोई भी नोड के लिए "उन्नत एसीएल" प्रोजेक्ट पर काम कर रहा है? क्या शायद कोई बेहतर दृष्टिकोण है कि मुझे कहीं और तलाश करनी चाहिए?

php-gacl तीन भागों के साथ आता है, एक एक PHP आधारित व्यवस्थापक जीयूआई (जो स्वीकार्य रूप से अधिक जटिल है), और नियमों पर सीआरयूडी के लिए एक एपीआई (जिसे आसानी से एक आरईएसटी इंटरफ़ेस में परिवर्तित किया जा सकता है) और एक बहुत छोटी फ़ाइल जो एसीएल जांच कार्यक्षमता प्रदान करती है।

तकनीकी रूप से, उस सॉफ़्टवेयर मॉडल के काम के लिए केवल अंतिम प्रकार को नोड पर पूरी तरह से पोर्ट किया जाना चाहिए?

एक गहरे स्तर पर, मैं समझना चाहता हूं कि इस समस्या को संभालने के लिए किस दृष्टिकोण का सफलतापूर्वक उपयोग किया गया है। यह समस्या आम तौर पर हल कैसे होती है? उन लोगों के लिए बोनस अंक जो नोड/जावास्क्रिप्ट के संदर्भ में प्रभावी रूप से इस समस्या पर चर्चा करते हैं और शायद एक विशेष डेटाबेस दृष्टिकोण (संबंध बनाम गैर-संबंधपरक)। मैं समझता हूं कि इस सही/गलत करने के लिए बहुत से सैद्धांतिक आधार हैं (यानी आरबीएसी, बनाम एसीएल पर बहुत सारी राय)। मैं जो चाहता हूं वह कुछ सैद्धांतिक रूप से ठोस है, या लगभग ठोस है जो अभी भी लाइब्रेरी दृष्टिकोण से "बस काम करता है"।मैं जावास्क्रिप्ट पर ध्यान केंद्रित कर रहा हूं, लेकिन यह समझना अच्छा होगा कि अन्य समस्याएं इस समस्या को कैसे हल कर रही हैं।

+0

इस ढेर अतिप्रवाह के लिए विषय बंद है। –

उत्तर

3

यदि आप किसी भी तरह के एसीएल का उपयोग करने से बच सकते हैं, तो आप आमतौर पर बेहतर होते हैं। वे प्रशासन करने के लिए जटिल हैं। आप से बेहतर मॉडलिंग सुरक्षा जांच के तीन स्तर होगा:

  1. यूआरएल/IP पता/या अन्य accesspoint सुरक्षा जांच
  2. विधि पर संसाधनों की जाँच करें। जो भी संस्थाएं आप संशोधित करना या छेड़छाड़ करना चाहते हैं, उस पर अनुमति जांच दें। अर्थात। व्यापार नियमों का उपयोग प्रकार।
  3. इकाई संसाधन जांच। उपयोगकर्ता/एपीआई/OAuth टोकन एक इकाई

को बिल्कुल पहुंच होने की यह एक RBAC का उपयोग कर पूरा किया जा सकता। आपके संगठन/साइट के लिए भूमिकाओं को प्रत्येक को एक्सेस/संशोधन/हेरफेर अनुमतियों का एक सेट सौंपा गया है। उपयोगकर्ताओं को एक भूमिका नियुक्त की जाती है, लेकिन चेक के तीन स्तर PERMISSIONS की जांच करते हैं, भूमिका नहीं।

मैं स्प्रिंग सिक्योरिटी और आरबीएसी को Google खोज के रूप में देखता हूं, और उस पर मॉडल। यहाँ कुछ लिंक है कि मैं उपयोगी पाया है कर रहे हैं:

http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/

http://www.xaprb.com/blog/2006/08/18/role-based-access-control-in-sql-part-2/

(क्योंकि वसंत सुरक्षा में सभी 'आदिम' उदाहरण और पागलपन से नामित चेक, आप लेखों को शामिल करते पढ़ने के लिए सलाह दी जाएगी वैकल्पिक नामों के उपयोग और स्प्रिंग की अनुमति के लिए उपयोग करता है 'hasRole()' जाँच करता है। निम्न आलेख जिसे RBAC के डिजाइन में इस पर चर्चा करता है)

http://springinpractice.com/2010/10/27/quick-tip-spring-security-role-based-authorization-and-permissions/

(स्प्रिंग सुरक्षा लचीला उपयोग करता है, RBAC सहित पर एक अच्छी प्रस्तुति)

http://www.infoq.com/presentations/Spring-Security-3

(निम्नलिखित RBAC समस्या और समाधान का अच्छा वर्णन देता है, और PHP के लिए डिज़ाइन किया गया है)

http://www.tonymarston.net/php-mysql/role-based-access-control.html

एक RBAC कार्यान्वयन के साथ

एक PHP ढांचे:

http://trac.symfony-project.org/wiki/UserRbac

और अंत में, वसंत सुरक्षा के लिए कक्षा आरेख। आप देखेंगे कि यह सुरक्षा जानकारी को संरक्षित इकाइयों को एक पैरालेल तालिका में रखने की अनुमति देता है। यह डिज़ाइन द्वारा है, ताकि वसंत सुरक्षा को बाद में जोड़ा जा सके, या बाहर निकाला जा सके, या आसानी से बदला जा सके। लेकिन इसका मतलब है कि अधिक टेबल।

http://code.google.com/p/uclm-esi-alarcos/source/browse/trunk/documentation/memoria-pfc/Figuras/Cap5/spring-security-class-diagram.png?r=295

संबंधित मुद्दे