कुछ दिन पहले, मेरे कुछ सहकर्मियों ने मुझसे मकाउत बडी नामक एक ओपन सोर्स एप्लीकेशन से संबंधित समस्या के बारे में संपर्क किया। यह एप्लीकेशन हमारे विश्वविद्यालय के लिए बनाया गया एक नोट्स-शेयरिंग प्लेटफॉर्म है, जिसका उद्देश्य छात्रों को शीर्ष नोट्स, पिछले परीक्षा प्रश्नों और यूट्यूब ट्यूटोरियल को कुशलतापूर्वक साझा करने में मदद करना है।
यद्यपि उन्होंने संसाधनों को अपलोड करने के लिए एक प्रणाली सफलतापूर्वक विकसित कर ली थी, फिर भी उन्हें यह सुनिश्चित करने में चुनौती का सामना करना पड़ा कि केवल अधिकृत व्यक्ति ही सामग्री अपलोड कर सकें।
जैसा कि नीचे डेमो में दिखाया गया है, कोई भी उपयोगकर्ता साइन अप करने के बाद संसाधन बना सकता है। इससे एक बड़ी समस्या पैदा हुई क्योंकि हम यह नियंत्रित नहीं कर सकते थे कि उपयोगकर्ता क्या अपलोड करते हैं, कुछ ने हानिकारक या परेशान करने वाली सामग्री भी अपलोड की होगी।
शुरुआत में, उन्होंने एक एडमिन भूमिका परिभाषित की और कुछ चुनिंदा व्यक्तियों को प्रशासनिक विशेषाधिकार दिए। हालाँकि, जैसे-जैसे भूमिकाओं की संख्या बढ़ती गई, कोड अधिक जटिल होता गया और उसे प्रबंधित करना मुश्किल होता गया।
तभी मेरे मन में यह विचार आया कि परमिट जैसे तृतीय-पक्ष प्राधिकरण उपकरणों की सहायता से रोल-बेस्ड एक्सेस कंट्रोल (आरबीएसी) मॉडल का उपयोग करके प्राधिकरण के प्रबंधन के कुशल तरीकों के बारे में जागरूकता बढ़ाने के लिए यह लेख लिखा जाए।
आरबीएसी को लागू करने के अलावा, हमने एक अनुरोध पहुँच अनुमोदन प्रणाली भी शुरू की है। यह प्रणाली सुनिश्चित करती है कि कोई भी उपयोगकर्ता जो सामग्री अपलोड करना चाहता है, उसे पहले पहुँच का अनुरोध करना होगा, जिसे व्यवस्थापक फिर स्वीकृत या अस्वीकार कर सकता है। सुरक्षा की यह अतिरिक्त परत हमें माकौट बडी पर सामग्री की अखंडता बनाए रखने में मदद करती है।
इस लेख में, मैंने प्रोग्रामिंग भाषा के रूप में जावास्क्रिप्ट और फ्रेमवर्क के रूप में Next.js का उपयोग किया है। हालाँकि, यहाँ चर्चा की गई अवधारणाएँ भाषा-विशिष्ट नहीं हैं, और आप उन्हें अपनी पसंदीदा प्रोग्रामिंग भाषा में लागू कर सकते हैं।
इस लेख के अंत तक, आप अपने अनुप्रयोग में एक बुनियादी RBAC मॉडल को लागू करना सीख जाएंगे।
इतना कहने के बाद, आइये इसमें गोता लगाएँ!
क्या आपको सुबह-सुबह स्कूल जाने की जल्दी याद है? सुरक्षा गार्ड द्वारा आपकी पहचान की जाँच करना प्रमाणीकरण का एक आदर्श उदाहरण है। वे परिसर में प्रवेश की अनुमति प्राप्त छात्र के रूप में आपकी पहचान सत्यापित कर रहे हैं। लेकिन यह केवल पहला कदम है। पहचाने जाने के बाद भी, आप किसी भी कक्षा में यूँ ही नहीं जाएँगे, है न? यहीं पर प्राधिकरण की भूमिका आती है।
अपने क्लास शेड्यूल को अपने प्राधिकरण के रूप में सोचें। यह आपको आपकी भूमिका (उस कक्षा में नामांकित छात्र) के आधार पर विशिष्ट क्षेत्रों (कक्षाओं) तक पहुँच प्रदान करता है। आपको शिक्षक के लाउंज या लाइब्रेरी के प्रतिबंधित अनुभाग में प्रवेश करने की अनुमति नहीं होगी - भले ही आप एक छात्र (प्रमाणित) हों।
प्रमाणीकरण और प्राधिकरण के बीच का अंतर यह पूछने जैसा है कि “आप कौन हैं?” बनाम “आपको क्या करने की अनुमति है?”
हर संगठन में प्राधिकरण महत्वपूर्ण है क्योंकि यह व्यक्तियों को ऐसे कार्य करने से रोकता है जिसके लिए वे अधिकृत नहीं हैं। यह संगठन की सुरक्षा सुनिश्चित करता है और नुकसान को रोकने में मदद करता है।
आइये उपरोक्त कथन को एक उदाहरण से स्पष्ट करें:
किसी कंपनी में कुछ वरिष्ठ इंजीनियर होते हैं जिन्हें बहुत अनुभव होता है और कुछ इंटर्न अभी भी सीख रहे होते हैं। आप कल्पना कर सकते हैं कि अगर वरिष्ठ इंजीनियर और इंटर्न दोनों के पास समान स्तर की अनुमतियाँ हों तो इससे क्या नुकसान होगा। जो इंटर्न अभी भी सीख रहे हैं वे अनजाने में कुछ गलती कर सकते हैं जिसके लिए कंपनी को भुगतान करना होगा। ऐसी स्थितियों में, रोल आधारित एक्सेस कंट्रोल मॉडल सबसे अच्छा काम करता है क्योंकि अनुमतियाँ व्यक्तियों को नहीं सौंपी जाती हैं, बल्कि अनुमतियाँ भूमिकाओं को सौंपी जाती हैं। उदाहरण के लिए, केवल एक वरिष्ठ इंजीनियर या तकनीकी प्रमुख ही संसाधनों को हटा सकता है जबकि सभी इंटर्न केवल संसाधनों को देख और प्रबंधित कर सकते हैं।
आगे, आइए देखें कि हम किसी एप्लिकेशन में RBAC को कैसे लागू कर सकते हैं।
सबसे पहले, हमें भूमिकाएं परिभाषित करनी होंगी और प्रत्येक भूमिका के लिए अनुमतियां निर्दिष्ट करनी होंगी।
नोट: भूमिका वह स्थिति या उद्देश्य है जो किसी संगठन में किसी व्यक्ति के पास होता है, हमें भूमिकाओं की आवश्यकता होती है ताकि हम उस भूमिका को सौंपी गई अनुमतियों या विशेषाधिकारों के आधार पर व्यक्तियों के बीच अंतर कर सकें।
हमें एप्लिकेशन के प्रत्येक उपयोगकर्ता को एक भूमिका सौंपने का तरीका चाहिए। यह आम तौर पर उपयोगकर्ता के साइन अप करने के बाद किया जाता है।
हमें अपने बैकएंड में एक API की आवश्यकता है जो उपयोगकर्ता द्वारा किए जाने वाले ऑपरेशन को लेता है और उपयोगकर्ता के प्राधिकरण की जांच करता है। नीचे दिया गया आरेख आपको बेहतर समझ देगा:
हालाँकि, हम पूरे मॉडल को शुरू से लागू नहीं करने जा रहे हैं। इसके बजाय, हम परमिट नामक एक तृतीय-पक्ष प्राधिकरण उपकरण का उपयोग करने जा रहे हैं जो हमारे लिए प्राधिकरण स्थापित करने की पूरी प्रक्रिया को बहुत ही सहज और कुशल बना देगा, ताकि आप उन सुविधाओं पर काम कर सकें जो वास्तव में मायने रखती हैं।
नीचे दिया गया चित्र आपको दिखाता है कि हम अपने अनुप्रयोगों में RBAC को लागू करने के लिए Permit का लाभ कैसे उठाएंगे:
इस अनुभाग में, हम Permit का उपयोग करके भूमिका-आधारित पहुँच नियंत्रण (RBAC) को कार्यान्वित करने के चरणों पर चर्चा करेंगे।
चूंकि हम RBAC मॉडल स्थापित करने के लिए परमिट का उपयोग कर रहे हैं, इसलिए सबसे पहले हमें एक परमिट खाता और एक कार्यक्षेत्र बनाना होगा:
अब हमें एक संसाधन बनाने की आवश्यकता है जो वह इकाई है जिस तक हम अपने अनुप्रयोग में पहुंच को नियंत्रित करना चाहते हैं।
उदाहरण के लिए, नोट लेने वाले अनुप्रयोग में, संसाधन नोट्स होगा, और क्रियाएँ बनाएँ , पढ़ें, अपडेट करें और हटाएं हो सकती हैं।
संसाधन बनाने के लिए:
उपरोक्त उदाहरण में, संसाधन का नाम नोट्स है और उपयोगकर्ता को जो क्रियाएं करने की अनुमति है वे हैं: बनाना, पढ़ना, अद्यतन करना और हटाना।
संसाधन बनाने के बाद, हमें उन भूमिकाओं को परिभाषित करना होगा जो हमारे अनुप्रयोग में मौजूद रहेंगी।
इस मामले में, चूंकि आवेदन एक विश्वविद्यालय के लिए नोट-शेयरिंग आवेदन है, इसलिए भूमिकाएं इस प्रकार होंगी:
एक बार जब हम दोनों भूमिकाएँ बना लेते हैं, तो अब हमें अपने नीति संपादक से प्रत्येक भूमिका द्वारा निष्पादित की जाने वाली क्रियाओं को निर्दिष्ट करना होता है, जैसा कि नीचे दिखाया गया है:
अब जब आपका Permit खाता कॉन्फ़िगर हो गया है, तो आप Permit के साथ संचार करने के लिए बैकएंड API बनाना शुरू कर सकते हैं। हम Permit द्वारा प्रदान किए गए Node.js SDK का उपयोग करेंगे। आप Permit Documentation में अपनी पसंदीदा प्रोग्रामिंग भाषा के लिए SDK पा सकते हैं।
उपयोगकर्ताओं को सिंक करें और डिफ़ॉल्ट भूमिका असाइन करें
सबसे पहले, हमें यह सुनिश्चित करना होगा कि हमारे एप्लिकेशन में साइन अप करने वाला प्रत्येक उपयोगकर्ता परमिट निर्देशिका से समन्वयित हो तथा उसे विद्यार्थी की डिफ़ॉल्ट भूमिका सौंपी गई हो।
ऐसा करने के लिए हमें एक बैकएंड API बनाना होगा जैसा कि नीचे दिखाया गया है:
यह API 2 काम करता है:
createUser
API का उपयोग करके एक नया उपयोगकर्ता बनाता है.assignRole
एपीआई का उपयोग करके एक डिफ़ॉल्ट भूमिका असाइन करता है।
आप परमिट द्वारा उपलब्ध कराए गए सभी API के बारे में permit docs पर अधिक पढ़ सकते हैं
उपयोगकर्ता भूमिका प्राप्त करें
इसके बाद, हमें एक बैकएंड एपीआई बनाने की आवश्यकता है जो Permit.io से उपयोगकर्ता की भूमिका प्राप्त करता है और इसे फ्रंटएंड पर वापस भेजता है।
नीचे दिखाया गया API permit.api.users.get(user_key)
का उपयोग करके उपयोगकर्ता को प्राप्त करता है
यह एपीआई उपयोगकर्ता की भूमिका प्राप्त करता है जिसके साथ हम अपने फ्रंट-एंड घटकों में हेरफेर कर सकते हैं ताकि केवल विशेष भूमिका वाले लोग ही इसे देख सकें।
आप permit.check() फ़ंक्शन का उपयोग करके यह भी सत्यापित कर सकते हैं कि किसी निश्चित भूमिका वाले उपयोगकर्ता को कोई ऑपरेशन करने की अनुमति है या नहीं।
इसके साथ, हमने Permit का उपयोग करके RBAC मॉडल को सफलतापूर्वक लागू किया है। अब, हम सेटअप को पूरा करने के लिए बैकएंड रूट को आपके द्वारा चुने गए फ्रंटएंड फ्रेमवर्क या लाइब्रेरी के साथ एकीकृत कर सकते हैं।
अपना सेटअप पूरा करने के लिए, हमें एक ऐसे घटक की आवश्यकता है जो उपयोगकर्ताओं को भूमिका उन्नयन का अनुरोध करने की अनुमति दे:
परमिट एलिमेंट्स "परमिट शेयर-इफ" का एक हिस्सा हैं जो पहले से निर्मित, एम्बेड करने योग्य UI घटकों का एक सूट है जो अनुप्रयोगों में एक्सेस शेयरिंग को आसान बनाता है। पूरी तरह से कार्यात्मक एक्सेस नियंत्रण प्रदान करने के लिए डिज़ाइन किए गए, वे आपके उपयोगकर्ताओं को अनुमति प्रबंधन सौंपना सरल और सुरक्षित बनाते हैं।
बस, हमने तत्वों का निर्माण कर लिया है।
तत्वों का उपयोग करने से पहले, हमें उपयोगकर्ता को परमिट तत्व में लॉग इन करने के लिए एक बैकएंड एपीआई बनाने की आवश्यकता है,
नोट: उपयोगकर्ता के लिए यथाशीघ्र लॉग-इन करना महत्वपूर्ण है, अधिमानतः साइन-अप के तुरंत बाद।
अब, आइये कोड पर नजर डालें:
समापन बिंदु /api/v1/login_permit/?userkey=user_key
पर API कोड प्रस्तुत किया जा रहा है:
लॉगिन को कार्यान्वित करने के लिए फ्रंटएंड कोड इस प्रकार दिखाई देगा:
बस, हमने अपना कोड सेट कर लिया है।
अब, हमें बस परमिट डैशबोर्ड पर जाना होगा और उपयोगकर्ता प्रबंधन iframe और एक्सेस-अनुरोध iframe दोनों को कॉपी करना होगा, जैसा कि नीचे दिखाया गया है:
अब जब हमें कोड मिल गया है, तो हमें अपने फ्रंटएंड में iframe
जोड़ना होगा जहां हम अपने उपयोगकर्ताओं को तत्व दिखाना चाहते हैं, हमें यह करना होगा:
इसके साथ, हमने सफलतापूर्वक एक पहुँच अनुमोदन प्रणाली स्थापित की है जहाँ उपयोगकर्ता भूमिका उन्नयन का अनुरोध कर सकते हैं, और व्यवस्थापक इन अनुरोधों को स्वीकृत या अस्वीकार कर सकते हैं।
यह डेमो दिखाता है कि "एडमिन" भूमिका वाला उपयोगकर्ता अपलोड विजेट तक कैसे पहुंच सकता है
यह डेमो दिखाता है कि कैसे "छात्र" भूमिका वाला उपयोगकर्ता अपलोड विजेट नहीं देख सकता है और "व्यवस्थापक" भूमिका में अपग्रेड का अनुरोध कर सकता है:
यह डेमो दिखाता है कि विशेषाधिकार प्राप्त उपयोगकर्ता भूमिका उन्नयन अनुरोधों को कैसे स्वीकृत कर सकते हैं:
यह डेमो दर्शाता है कि कैसे एक उपयोगकर्ता, "छात्र" से "व्यवस्थापक" में अपग्रेड होने के बाद, अपलोड विजेट तक पहुंच प्राप्त करता है
इतना ही!
यहाँ तक पढ़ने के लिए धन्यवाद।
इस ट्यूटोरियल में, हमने प्राधिकरण के बारे में जाना और समझा कि किसी भी एप्लिकेशन में प्राधिकरण बहुत महत्वपूर्ण क्यों है। हमने यह भी देखा कि हम एप्लिकेशन को सुरक्षित करने और उपयोगकर्ता की भूमिकाओं के आधार पर उपयोगकर्ता की पहुँच को नियंत्रित करने के लिए परमिट को कैसे सेट अप और कॉन्फ़िगर कर सकते हैं।
यह लेख प्राधिकरण और RBAC मॉडल के बारे में सिर्फ़ एक झलक है। आप ABAC और ReBAC पर अधिक विस्तृत प्राधिकरण के बारे में जानकारी प्राप्त कर सकते हैं।