एक 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
, ) इसे पीईपी को वापस भेज दिया जाता है जो संसाधन तक पहुंच प्रदान करने से इनकार करके या उस पर कार्य करता है। प्रतिक्रिया के साथ पीडीपी एक सूची भेज सकता है और यह कि पीईपी को प्रवर्तन प्रक्रिया में होना चाहिए या पूरा होना चाहिए। नियमों को कैसे संग्रहीत किया जाता है (पाठ फ़ाइलें या डेटाबेस) के आधार पर एक व्यवस्थापक एक मानक पाठ संपादक या एक कस्टम संपादन एप्लिकेशन का उपयोग कर सकता है ताकि वह उसे फिट देख सके। कीमतों प्रबंधक के लिए लेस्ली की पहुंच को फिर से शुरू करने की अनुमति को फिर से शुरू करनाdeny
not-applicable
obligations
advices
allow
deny
, पीईपी अपना काम करता है।
प्रवर्तन
यह आपकी प्रौद्योगिकी स्टैक पर अत्यधिक निर्भर है। कुछ वेब फ्रेमवर्क में प्राकृतिक प्रवर्तन बिंदु होते हैं (जैसे। ASP.NET MVC में विशेषता फ़िल्टर होते हैं)। आपकी व्यावसायिक परतों को ऐसे प्रवर्तन बिंदुओं को परिभाषित करना पड़ सकता है। मुझे सेवा में प्रवर्तन (माइक्रोसर्विस लगता है) एंडपॉइंट या यूआई स्तर पर लागू करना आसान लगा।
अन्य लाभ
इसे लागू करने का एक अच्छा दुष्प्रभाव यह है कि आप एक काफी समृद्ध ऑडिट ट्रेल के साथ समाप्त होते हैं जिसका उपयोग अन्य उद्देश्यों के लिए किया जा सकता है।