paint-brush
मैंने अपने ओपन सोर्स प्रोजेक्ट में एक्सेस स्वीकृति कैसे लागू कीद्वारा@hacker6428749
2,854 रीडिंग
2,854 रीडिंग

मैंने अपने ओपन सोर्स प्रोजेक्ट में एक्सेस स्वीकृति कैसे लागू की

द्वारा 9m2024/07/25
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

विश्वविद्यालय के छात्रों के लिए नोट्स-शेयरिंग प्लेटफ़ॉर्म, माकॉट बडी को उपयोगकर्ता अपलोड को सुरक्षित रूप से प्रबंधित करने में चुनौतियों का सामना करना पड़ा। यह लेख बताता है कि Permit.io का उपयोग करके रोल-बेस्ड एक्सेस कंट्रोल (RBAC) को लागू करने से समस्या का समाधान कैसे हुआ, यह सुनिश्चित करते हुए कि केवल अधिकृत उपयोगकर्ता ही सामग्री अपलोड कर सकते हैं, जिससे प्लेटफ़ॉर्म की सुरक्षा बढ़ जाती है।
featured image - मैंने अपने ओपन सोर्स प्रोजेक्ट में एक्सेस स्वीकृति कैसे लागू की
undefined HackerNoon profile picture
0-item
1-item


कुछ दिन पहले, मेरे कुछ सहकर्मियों ने मुझसे मकाउत बडी नामक एक ओपन सोर्स एप्लीकेशन से संबंधित समस्या के बारे में संपर्क किया। यह एप्लीकेशन हमारे विश्वविद्यालय के लिए बनाया गया एक नोट्स-शेयरिंग प्लेटफॉर्म है, जिसका उद्देश्य छात्रों को शीर्ष नोट्स, पिछले परीक्षा प्रश्नों और यूट्यूब ट्यूटोरियल को कुशलतापूर्वक साझा करने में मदद करना है।


यद्यपि उन्होंने संसाधनों को अपलोड करने के लिए एक प्रणाली सफलतापूर्वक विकसित कर ली थी, फिर भी उन्हें यह सुनिश्चित करने में चुनौती का सामना करना पड़ा कि केवल अधिकृत व्यक्ति ही सामग्री अपलोड कर सकें।


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

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


तभी मेरे मन में यह विचार आया कि परमिट जैसे तृतीय-पक्ष प्राधिकरण उपकरणों की सहायता से रोल-बेस्ड एक्सेस कंट्रोल (आरबीएसी) मॉडल का उपयोग करके प्राधिकरण के प्रबंधन के कुशल तरीकों के बारे में जागरूकता बढ़ाने के लिए यह लेख लिखा जाए।


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


इस लेख में, मैंने प्रोग्रामिंग भाषा के रूप में जावास्क्रिप्ट और फ्रेमवर्क के रूप में Next.js का उपयोग किया है। हालाँकि, यहाँ चर्चा की गई अवधारणाएँ भाषा-विशिष्ट नहीं हैं, और आप उन्हें अपनी पसंदीदा प्रोग्रामिंग भाषा में लागू कर सकते हैं।


इस लेख के अंत तक, आप अपने अनुप्रयोग में एक बुनियादी RBAC मॉडल को लागू करना सीख जाएंगे।


इतना कहने के बाद, आइये इसमें गोता लगाएँ!


प्राधिकरण क्या है?

क्या आपको सुबह-सुबह स्कूल जाने की जल्दी याद है? सुरक्षा गार्ड द्वारा आपकी पहचान की जाँच करना प्रमाणीकरण का एक आदर्श उदाहरण है। वे परिसर में प्रवेश की अनुमति प्राप्त छात्र के रूप में आपकी पहचान सत्यापित कर रहे हैं। लेकिन यह केवल पहला कदम है। पहचाने जाने के बाद भी, आप किसी भी कक्षा में यूँ ही नहीं जाएँगे, है न? यहीं पर प्राधिकरण की भूमिका आती है।


अपने क्लास शेड्यूल को अपने प्राधिकरण के रूप में सोचें। यह आपको आपकी भूमिका (उस कक्षा में नामांकित छात्र) के आधार पर विशिष्ट क्षेत्रों (कक्षाओं) तक पहुँच प्रदान करता है। आपको शिक्षक के लाउंज या लाइब्रेरी के प्रतिबंधित अनुभाग में प्रवेश करने की अनुमति नहीं होगी - भले ही आप एक छात्र (प्रमाणित) हों।


प्रमाणीकरण और प्राधिकरण के बीच का अंतर यह पूछने जैसा है कि “आप कौन हैं?” बनाम “आपको क्या करने की अनुमति है?”

हमें प्राधिकरण के लिए RBAC मॉडल की आवश्यकता क्यों है?

हर संगठन में प्राधिकरण महत्वपूर्ण है क्योंकि यह व्यक्तियों को ऐसे कार्य करने से रोकता है जिसके लिए वे अधिकृत नहीं हैं। यह संगठन की सुरक्षा सुनिश्चित करता है और नुकसान को रोकने में मदद करता है।


आइये उपरोक्त कथन को एक उदाहरण से स्पष्ट करें:

किसी कंपनी में कुछ वरिष्ठ इंजीनियर होते हैं जिन्हें बहुत अनुभव होता है और कुछ इंटर्न अभी भी सीख रहे होते हैं। आप कल्पना कर सकते हैं कि अगर वरिष्ठ इंजीनियर और इंटर्न दोनों के पास समान स्तर की अनुमतियाँ हों तो इससे क्या नुकसान होगा। जो इंटर्न अभी भी सीख रहे हैं वे अनजाने में कुछ गलती कर सकते हैं जिसके लिए कंपनी को भुगतान करना होगा। ऐसी स्थितियों में, रोल आधारित एक्सेस कंट्रोल मॉडल सबसे अच्छा काम करता है क्योंकि अनुमतियाँ व्यक्तियों को नहीं सौंपी जाती हैं, बल्कि अनुमतियाँ भूमिकाओं को सौंपी जाती हैं। उदाहरण के लिए, केवल एक वरिष्ठ इंजीनियर या तकनीकी प्रमुख ही संसाधनों को हटा सकता है जबकि सभी इंटर्न केवल संसाधनों को देख और प्रबंधित कर सकते हैं।


आगे, आइए देखें कि हम किसी एप्लिकेशन में RBAC को कैसे लागू कर सकते हैं।

किसी ऐप में RBAC कैसे लागू करें:

1. भूमिकाएँ और अनुमतियाँ परिभाषित करें

सबसे पहले, हमें भूमिकाएं परिभाषित करनी होंगी और प्रत्येक भूमिका के लिए अनुमतियां निर्दिष्ट करनी होंगी।

नोट: भूमिका वह स्थिति या उद्देश्य है जो किसी संगठन में किसी व्यक्ति के पास होता है, हमें भूमिकाओं की आवश्यकता होती है ताकि हम उस भूमिका को सौंपी गई अनुमतियों या विशेषाधिकारों के आधार पर व्यक्तियों के बीच अंतर कर सकें।

2. उपयोगकर्ताओं को भूमिकाएँ सौंपें

हमें एप्लिकेशन के प्रत्येक उपयोगकर्ता को एक भूमिका सौंपने का तरीका चाहिए। यह आम तौर पर उपयोगकर्ता के साइन अप करने के बाद किया जाता है।

3. एक प्राधिकरण एपीआई बनाएं

हमें अपने बैकएंड में एक API की आवश्यकता है जो उपयोगकर्ता द्वारा किए जाने वाले ऑपरेशन को लेता है और उपयोगकर्ता के प्राधिकरण की जांच करता है। नीचे दिया गया आरेख आपको बेहतर समझ देगा:



हालाँकि, हम पूरे मॉडल को शुरू से लागू नहीं करने जा रहे हैं। इसके बजाय, हम परमिट नामक एक तृतीय-पक्ष प्राधिकरण उपकरण का उपयोग करने जा रहे हैं जो हमारे लिए प्राधिकरण स्थापित करने की पूरी प्रक्रिया को बहुत ही सहज और कुशल बना देगा, ताकि आप उन सुविधाओं पर काम कर सकें जो वास्तव में मायने रखती हैं।


नीचे दिया गया चित्र आपको दिखाता है कि हम अपने अनुप्रयोगों में RBAC को लागू करने के लिए Permit का लाभ कैसे उठाएंगे:


आरबीएसी मॉडल का कार्यान्वयन

इस अनुभाग में, हम Permit का उपयोग करके भूमिका-आधारित पहुँच नियंत्रण (RBAC) को कार्यान्वित करने के चरणों पर चर्चा करेंगे।


चरण 1: परमिट खाता और कार्यक्षेत्र बनाएँ

चूंकि हम RBAC मॉडल स्थापित करने के लिए परमिट का उपयोग कर रहे हैं, इसलिए सबसे पहले हमें एक परमिट खाता और एक कार्यक्षेत्र बनाना होगा:


चरण 2: संसाधन बनाएँ

अब हमें एक संसाधन बनाने की आवश्यकता है जो वह इकाई है जिस तक हम अपने अनुप्रयोग में पहुंच को नियंत्रित करना चाहते हैं।

उदाहरण के लिए, नोट लेने वाले अनुप्रयोग में, संसाधन नोट्स होगा, और क्रियाएँ बनाएँ , पढ़ें, अपडेट करें और हटाएं हो सकती हैं।


संसाधन बनाने के लिए:

  1. नीति अनुभाग पर जाएँ.
  2. संसाधन टैब पर जाएँ.
  3. आवश्यक विवरण भरकर एक नया संसाधन बनाएं।



उपरोक्त उदाहरण में, संसाधन का नाम नोट्स है और उपयोगकर्ता को जो क्रियाएं करने की अनुमति है वे हैं: बनाना, पढ़ना, अद्यतन करना और हटाना।

चरण 3: भूमिकाएँ परिभाषित करें

संसाधन बनाने के बाद, हमें उन भूमिकाओं को परिभाषित करना होगा जो हमारे अनुप्रयोग में मौजूद रहेंगी।


इस मामले में, चूंकि आवेदन एक विश्वविद्यालय के लिए नोट-शेयरिंग आवेदन है, इसलिए भूमिकाएं इस प्रकार होंगी:

  • व्यवस्थापक: संसाधन बना और पढ़ सकते हैं।
  • छात्र: संसाधन पढ़ सकते हैं।




चरण 4: भूमिकाओं को क्रियाएँ असाइन करें

एक बार जब हम दोनों भूमिकाएँ बना लेते हैं, तो अब हमें अपने नीति संपादक से प्रत्येक भूमिका द्वारा निष्पादित की जाने वाली क्रियाओं को निर्दिष्ट करना होता है, जैसा कि नीचे दिखाया गया है:


चरण 5: बैकएंड API कॉन्फ़िगर करें

अब जब आपका 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 मॉडल को सफलतापूर्वक लागू किया है। अब, हम सेटअप को पूरा करने के लिए बैकएंड रूट को आपके द्वारा चुने गए फ्रंटएंड फ्रेमवर्क या लाइब्रेरी के साथ एकीकृत कर सकते हैं।

पहुँच अनुमोदन प्रणाली का कार्यान्वयन:

अपना सेटअप पूरा करने के लिए, हमें एक ऐसे घटक की आवश्यकता है जो उपयोगकर्ताओं को भूमिका उन्नयन का अनुरोध करने की अनुमति दे:

  • व्यवस्थापकीय विशेषाधिकारों के बिना एक सामान्य उपयोगकर्ता अनुमति तत्व को देख सकता है और व्यवस्थापकीय विशेषाधिकारों का अनुरोध कर सकता है।



  • एक व्यवस्थापक उपयोगकर्ता अन्य उपयोगकर्ताओं से आने वाले भूमिका उन्नयन अनुरोधों को स्वीकृत या अस्वीकृत कर सकता है।


चरण 1: परमिट तत्व बनाएँ

परमिट एलिमेंट्स "परमिट शेयर-इफ" का एक हिस्सा हैं जो पहले से निर्मित, एम्बेड करने योग्य UI घटकों का एक सूट है जो अनुप्रयोगों में एक्सेस शेयरिंग को आसान बनाता है। पूरी तरह से कार्यात्मक एक्सेस नियंत्रण प्रदान करने के लिए डिज़ाइन किए गए, वे आपके उपयोगकर्ताओं को अनुमति प्रबंधन सौंपना सरल और सुरक्षित बनाते हैं।


  • इसे क्रियान्वित करने के लिए, सबसे पहले, हमें एक परमिट तत्व बनाना होगा:
    • परमिट डैशबोर्ड में एलिमेंट्स टैब पर जाएं।
    • उपयोगकर्ता प्रबंधन अनुभाग के अंतर्गत क्रिएट एलिमेंट पर क्लिक करें।



  • फिर हमें नीचे दिखाए अनुसार आवश्यक जानकारी के साथ फॉर्म भरना होगा
    • व्यवस्थापक भूमिका को कार्यस्थान स्वामी बनाएं.
    • दर्शक अनुभाग को विद्यार्थी भूमिका सौंपें.
    • डिफ़ॉल्ट भूमिका को विद्यार्थी के रूप में सेट करें.



  • तत्व को सहेजें और एक्सेस अनुरोध के अंतर्गत एक नया तत्व बनाएं:


  • फिर एक्सेस अनुरोध के लिए जानकारी भरें
    • अपने पहुँच-अनुरोध तत्व को कनेक्ट करने के लिए उपयोगकर्ता प्रबंधन तत्व का चयन करें।
    • तत्व को अंतिम रूप देने के लिए Create पर क्लिक करें।



  • इसके बाद, हम उपयोगकर्ता प्रबंधन तत्व को संपादित करेंगे
    • उपयोगकर्ता प्रबंधन तत्व पर वापस जाएं और उसे संपादित करें.
    • उपयोगकर्ता प्रबंधन में अनुमोदन घटक के रूप में पहुँच-अनुरोध तत्व का चयन करें.



बस, हमने तत्वों का निर्माण कर लिया है।

चरण 2: उपयोगकर्ता लॉगिन के लिए बैकएंड API बनाएं

तत्वों का उपयोग करने से पहले, हमें उपयोगकर्ता को परमिट तत्व में लॉग इन करने के लिए एक बैकएंड एपीआई बनाने की आवश्यकता है,

नोट: उपयोगकर्ता के लिए यथाशीघ्र लॉग-इन करना महत्वपूर्ण है, अधिमानतः साइन-अप के तुरंत बाद।


अब, आइये कोड पर नजर डालें:

समापन बिंदु /api/v1/login_permit/?userkey=user_key पर API कोड प्रस्तुत किया जा रहा है:



चरण 3: लॉगिन कार्यान्वयन के लिए फ्रंटएंड कोड

लॉगिन को कार्यान्वित करने के लिए फ्रंटएंड कोड इस प्रकार दिखाई देगा:



बस, हमने अपना कोड सेट कर लिया है।

चरण 4: Iframes को फ्रंटएंड में एकीकृत करें

अब, हमें बस परमिट डैशबोर्ड पर जाना होगा और उपयोगकर्ता प्रबंधन iframe और एक्सेस-अनुरोध iframe दोनों को कॉपी करना होगा, जैसा कि नीचे दिखाया गया है:



अब जब हमें कोड मिल गया है, तो हमें अपने फ्रंटएंड में iframe जोड़ना होगा जहां हम अपने उपयोगकर्ताओं को तत्व दिखाना चाहते हैं, हमें यह करना होगा:

  • व्यवस्थापक भूमिका वाले उपयोगकर्ताओं को उपयोगकर्ता प्रबंधन तत्व दिखाएँ.
  • विद्यार्थी भूमिका वाले उपयोगकर्ताओं को पहुँच अनुरोध तत्व दिखाएँ.


इसके साथ, हमने सफलतापूर्वक एक पहुँच अनुमोदन प्रणाली स्थापित की है जहाँ उपयोगकर्ता भूमिका उन्नयन का अनुरोध कर सकते हैं, और व्यवस्थापक इन अनुरोधों को स्वीकृत या अस्वीकार कर सकते हैं।


नोट्स-शेयरिंग एप्लीकेशन में RBAC का डेमो

  • डेमो: अपलोड विजेट तक एडमिन एक्सेस

यह डेमो दिखाता है कि "एडमिन" भूमिका वाला उपयोगकर्ता अपलोड विजेट तक कैसे पहुंच सकता है



  • डेमो: छात्र भूमिका प्रतिबंध और पहुँच अनुरोध

यह डेमो दिखाता है कि कैसे "छात्र" भूमिका वाला उपयोगकर्ता अपलोड विजेट नहीं देख सकता है और "व्यवस्थापक" भूमिका में अपग्रेड का अनुरोध कर सकता है:


  • डेमो: भूमिका उन्नयन को मंजूरी देना

यह डेमो दिखाता है कि विशेषाधिकार प्राप्त उपयोगकर्ता भूमिका उन्नयन अनुरोधों को कैसे स्वीकृत कर सकते हैं:


  • डेमो: अपलोड विजेट तक उन्नत भूमिका पहुंच

यह डेमो दर्शाता है कि कैसे एक उपयोगकर्ता, "छात्र" से "व्यवस्थापक" में अपग्रेड होने के बाद, अपलोड विजेट तक पहुंच प्राप्त करता है

निष्कर्ष

इतना ही!


यहाँ तक पढ़ने के लिए धन्यवाद।


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


यह लेख प्राधिकरण और RBAC मॉडल के बारे में सिर्फ़ एक झलक है। आप ABAC और ReBAC पर अधिक विस्तृत प्राधिकरण के बारे में जानकारी प्राप्त कर सकते हैं।