एक सरल गुण-आधारित अभिगम नियंत्रण (ABAC) के कार्यान्वयन के लिए एक सुझाया गया रोडमैप क्या है?


12

एसीएल और आरबीएसी के बारे में पढ़ते समय मुझे यह आसानी से समझ में आता है - या तो उपयोगकर्ता नाम या भूमिकाएं हैं जो किसी संपत्ति तक पहुंच दी जाती हैं। मैं यह भी देख सकता हूं कि मैं उन पर कैसे अमल कर सकता हूं।

यानी यह छवि मेरे लिए एसीएल और आरबीएसी का स्पष्ट दृष्टिकोण देती है (जैसा कि मैं ऊपर जा सकता हूं और ऊपर आधारित डेटाबेस टेबल डिजाइन कर सकता हूं): यहां छवि विवरण दर्ज करें ( प्रेसबुक की छवि शिष्टाचार )

मैं एबीएसी से संघर्ष कर रहा हूं। अब तक मुझे मिली विभिन्न छवियां हाथ से लहराती हैं या अत्यधिक जटिल हैं, या किसी तीसरे पक्ष की बाहरी इकाई का उपयोग करने का सुझाव देती हैं। या अजीब विशेषता उदाहरण दें मैं उपयोग करने के लिए पूरी तरह से निश्चित नहीं हूं।

प्रारंभिक उदाहरण

तो मुझे वास्तविक जीवन में कुछ के साथ शुरू करते हैं। कहते हैं कि मेरे पास 70-200 लोग हैं। और रक्षा करने के लिए मेरी संपत्ति कई विभिन्न पृष्ठों वाली एक वेबसाइट है। मैं कुछ लोगों को कुछ संपत्तियों तक पहुंचने की अनुमति देना चाहता हूं।

उदाहरण के लिए, मैं चाहता हूं कि किसी व्यक्ति Leslieके पास नाम के वेब पेज तक पहुंच हो Price Manager, और उसे केवल Travelउस पृष्ठ पर मूल्य समूह के लिए कीमतों का प्रबंधन करने की अनुमति दे , लेकिन Productएक ही पृष्ठ पर समूह के लिए कीमतों का प्रबंधन करने में सक्षम न हो । मैं ABAC का उपयोग करके इसे कैसे लागू करूंगा?

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

अगर लेस्ली बाद में अपनी स्थिति बदल लेता है और किसी को उसकी पहुंच बदलने की आवश्यकता होती है तो क्या होगा? यदि उसे पहुँच से Productऔर उसके लिए निरस्त होने की आवश्यकता हो, तो यह कैसा दिखेगा Travel? यदि उसे Price Managerपृष्ठ तक पूरी तरह से निरस्त करने की आवश्यकता है और इसलिए अब न तो एक्सेस की आवश्यकता है Travel, न ही इसे कैसे कोडित किया जाएगा Product?

मेरे मामले में संपत्ति, बस इसे पुनर्स्थापित करना है Price Manager, और एक उपयोगकर्ता उस पृष्ठ पर विभिन्न मूल्य समूहों, जैसे Travelमूल्य निर्धारण, का उपयोग कर सकता है।Product मूल्य निर्धारण, आदि का उपयोग कर सकता है।

मैं जिस चीज की तलाश कर रहा हूं, वह विवरणों को स्पष्ट करने और जहां तक ​​मैं जा सकता हूं, उसे लागू करने की दिशा में और स्पष्टीकरण के बिना इसे लागू करने की दिशा में एक पूरा पूरा रोडमैप है। यानी इसे वैचारिक रूप से पूरा किया जा सकता है और / या मेरे पास एक विशिष्ट उदाहरण है जहां मैं डेटाबेस संरचना आदि की कल्पना कर सकता हूं।

बोनस: क्या ABAC अपेक्षाकृत छोटी अनुमति की जरूरतों के लिए एक उचित तरीका है यानी 70-200 लोगों का प्रबंधन और कुछ 150 - 450 संपत्तियों तक पहुंच? क्या इसके बजाय ACL / RBAC से रहना बेहतर होगा?

जवाबों:


18

एक ABAC कार्यान्वयन ACL / RBAC से अधिक जटिल है। कुछ चौखटे आपको बाद वाले से निपटने के लिए बुनियादी ढांचे के टुकड़े भी देती हैं। यदि लोगों और परिसंपत्तियों को अपेक्षाकृत छोटी और निश्चित भूमिकाओं / श्रेणियों के तहत वर्गीकृत किया जा सकता है, तो शायद एसीएल / बीबीएसी के साथ रहना सबसे अच्छा है। यदि अनुमतियाँ व्यक्ति से दूसरे व्यक्ति में बहुत भिन्न हैं तो ABAC एक बेहतर और अधिक लचीला समाधान प्रदान कर सकता है।

यदि आप ABAC पथ पर जाना चाहते हैं, तो आपको सबसे पहले XACML मानक को पढ़ने और समझने में कुछ समय लगाना होगा । दस्तावेज़ में दिए गए उदाहरण XACML संगत वाक्यविन्यास का उपयोग करते हैं और वे पहले चबाने के लिए थोड़ा कठिन हैं। मुझे लगता है कि आप एक मानक संगत समाधान को लागू नहीं करना चाहते हैं, इसलिए आपको केवल सामान्य विचारों की आवश्यकता है।

अवधारणाओं

XACML 4 अवधारणाओं और उनकी विशेषताओं के आसपास घूमती है: विषय , कार्य , संसाधन और पर्यावरण । कुछ और भी हैं, लेकिन ये सबसे महत्वपूर्ण हैं। बाकी सब कुछ उनके ऊपर बनाया गया है। अगर मुझे इन अवधारणाओं के साथ एक वाक्य बनाना था, तो इसकी तर्ज पर कुछ हो सकता है: विषय एक निश्चित वातावरण में संसाधनों पर कार्रवाई करते हैं । इसे अपने परिदृश्य पर लागू करना कुछ इस तरह से अनुवाद करेगा:

  • लेस्ली मूल्य प्रबंधक वेब पेज खोलता है।
  • लेसली मूल्य प्रबंधक वेब पेज का उपयोग करके एक यात्रा मूल्य बनाता है।

संग्रह का गुण

पहली चीज़ जो हमें करने की ज़रूरत है, वह ऊपर बताई गई अवधारणाओं की प्रासंगिक विशेषताओं को इकट्ठा करना है। आदर्श रूप से, आपको किसी विशिष्ट विशेषता को निर्दिष्ट नहीं करना चाहिए क्योंकि एक्सएसीएमएल विनीत होने की कोशिश करता है और केवल उस पर भरोसा करता है जो सिस्टम स्वाभाविक रूप से प्रदान करता है। और इसलिए हमारे पास है:

विषय

कोई भी अभिनेता, चाहे वह व्यक्ति हो या सेवा, आपके सिस्टम में हो। हमारा विषय लेस्ली है। विशिष्ट रूप से लेस्ली की पहचान करने के लिए किन विशेषताओं की आवश्यकता होती है? संभवतः निम्नलिखित में से कुछ:first name , last name, e-mail, ssn, company id, position(s)

कार्य

विषयों द्वारा किया गया कोई भी कार्य। सीआरयूडी मानक या कुछ और जटिल हो सकता है। हमारे कार्यों हैं open/viewऔर create। आपके द्वारा उपयोग किए जा रहे वेब एप्लिकेशन फ्रेमवर्क के आधार पर इन क्रियाओं की विशेषताएँ भिन्न हो सकती हैं। संसाधन मिलने पर हम इस बारे में अधिक बात करेंगे।

संसाधन

सुंदर आत्म व्याख्यात्मक। हमारे संसाधन हैंprice manager page , travel pricesऔर the newly created price। यदि आप वास्तव में चाहते हैं तो और भी कुछ हो सकता है। आप उन कार्यों को छुपाना चाह सकते हैं जो उपयोगकर्ता प्रदर्शन नहीं कर सकते। उदाहरण के लिए। create price buttonएक संसाधन है कि दिखाया जा सकता है / उपयोगकर्ता कीमतों बनाने की अनुमति है या नहीं के आधार पर छिपा हो सकता है। चूंकि एक उपयोगकर्ता के लिए कीमतों की एक सूची देखने का एकमात्र तरीका इस पृष्ठ के माध्यम से हो सकता है, यह संभवतः इस स्तर पर प्राधिकरण को लागू करने के लिए एक अच्छा विचार होगा, बजाय स्टैक के नीचे।

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

वातावरण

मैं इसे ठीक से परिभाषित नहीं कर सकता (एक्सएसीएमएल की भी उचित परिभाषा नहीं है) लेकिन मान लीजिए कि यह "बुलबुला" है जिसमें यह सब होता है। इसमें शामिल हैं: web application, web server, operating system, browser, office। आप जैसी विशेषताओं निकाल सकते: ip address, time of day, user locale,user agent , operating system version। आप इनका उपयोग उन परिवेशों से भी कर सकते हैं, जो आपके एप्लिकेशन (जैसे पुराने ब्राउज़र, पुराने ऑपरेटिंग सिस्टम, आपके नेटवर्क के बाहर के कंप्यूटर, व्यावसायिक घंटों के बाहर पहुंच) द्वारा समर्थित नहीं हैं।

प्राधिकरण का अनुरोध

एक बार जब हम सभी आवश्यक विशेषताओं को इकट्ठा कर लेते हैं, तो हम उन्हें प्राधिकरण अनुरोध में बाँध लेते हैं और इसे एक इकाई के लिए अग्रेषित करते हैं, जो इन विशेषताओं के मूल्यों के आधार पर प्राधिकरण निर्णय ले सकता है। XACML भाषा में वह स्थान जहां आप इन विशेषताओं को एकत्र करते हैं और तब किए गए निर्णयों को लागू करते हैं, उन्हें नीति प्रवर्तन बिंदु (PEP) कहा जाता है और बिंदु बनाने के निर्णयों को नीति निर्णय बिंदु (PDP) कहा जाता है । जिन स्थानों से विशेषता मान प्राप्त किए जाते हैं, उन्हें नीति सूचना बिंदु s (PIP) कहा जाता है । पीईपी, पीडीपी और पीआईपी आपके आवेदन का एक हिस्सा हो सकते हैं, वे बाहरी सिस्टम हो सकते हैं। आप XACML मानक में एक दूसरे के साथ कैसे संवाद करते हैं, इसका एक चित्र पा सकते हैं।

निर्णय प्रक्रिया

निर्णय लेने की प्रक्रिया नियमों पर आधारित है । नियमों को नीतियों में वर्गीकृत किया जा सकता है जिन्हें आगे नीतिगत सेटों में वर्गीकृत किया जा सकता है । इनमें से प्रत्येक का लक्ष्य है । लक्ष्य का उपयोग यह तय करने के लिए किया जाता है कि क्या प्राधिकरण अनुरोध पर कोई नियम लागू होता है। इसे एक फिल्टर के रूप में सोचें। लक्ष्य में विशेषताओं के नाम और मूल्यों का उपयोग करके निर्मित स्थितियां शामिल हैं। उदाहरण के लिए, आपके आवेदन के नियमों को कुछ इस तरह से वर्गीकृत किया जा सकता है:

वेब एप्लिकेशन (नीति सेट)
| - लक्ष्य: आवेदन-नाम == "वेब अनुप्रयोग"
`- संस्करण 1.0 (पॉलिसी सेट)
    | - लक्ष्य: आवेदन-संस्करण == "1.0"
    `- मूल्य प्रबंधक देखें (नीति)
        | - लक्ष्य: वेब-पेज-नाम == "मूल्य प्रबंधक" और& क्रिया-नाम == "दृश्य"
        `- लेस्ली कीमतों प्रबंधक (नियम) देख सकते हैं
            | - लक्ष्य: विषय-नाम == "लेस्ली"
            `- अनुमति: अनुमति

पीडीपी प्राधिकरण अनुरोध में विशेषता मूल्यों के खिलाफ उपरोक्त सेट में सब कुछ मेल खाएगा। यदि ऐसा कोई नियम नहीं है जो कि मेल खाता है तो यह आपके पीडीपी के कार्यान्वयन पर निर्भर करता है। एक बार जब पीडीपी ने कोई निर्णय लिया ( या allow, ) इसे पीईपी को वापस भेज दिया जाता है जो संसाधन तक पहुंच प्रदान करने से इनकार करके या उस पर कार्य करता है। प्रतिक्रिया के साथ पीडीपी एक सूची भेज सकता है और यह कि पीईपी को प्रवर्तन प्रक्रिया में होना चाहिए या पूरा होना चाहिए। नियमों को कैसे संग्रहीत किया जाता है (पाठ फ़ाइलें या डेटाबेस) के आधार पर एक व्यवस्थापक एक मानक पाठ संपादक या एक कस्टम संपादन एप्लिकेशन का उपयोग कर सकता है ताकि वह उसे फिट देख सके। कीमतों प्रबंधक के लिए लेस्ली की पहुंच को फिर से शुरू करने की अनुमति को फिर से शुरू करनाdenynot-applicableobligationsadvicesallowdeny, पीईपी अपना काम करता है।

प्रवर्तन

यह आपकी प्रौद्योगिकी स्टैक पर अत्यधिक निर्भर है। कुछ वेब फ्रेमवर्क में प्राकृतिक प्रवर्तन बिंदु होते हैं (जैसे। ASP.NET MVC में विशेषता फ़िल्टर होते हैं)। आपकी व्यावसायिक परतों को ऐसे प्रवर्तन बिंदुओं को परिभाषित करना पड़ सकता है। मुझे सेवा में प्रवर्तन (माइक्रोसर्विस लगता है) एंडपॉइंट या यूआई स्तर पर लागू करना आसान लगा।

अन्य लाभ

इसे लागू करने का एक अच्छा दुष्प्रभाव यह है कि आप एक काफी समृद्ध ऑडिट ट्रेल के साथ समाप्त होते हैं जिसका उपयोग अन्य उद्देश्यों के लिए किया जा सकता है।


बहुत उपयोगी उत्तर
despuestambien
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.