न्यूनतम विशेषाधिकार का सिद्धांत

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

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

उपयोगकर्ता (कंप्यूटिंग) पर लागू होने पर, कम से कम उपयोगकर्ता पहुंच या कम से कम विशेषाधिकार प्राप्त उपयोगकर्ता (कंप्यूटिंग) खाता (एलयूए) का भी उपयोग किया जाता है, इस अवधारणा का जिक्र करते हुए कि सभी उपयोगकर्ता खातों को यथासंभव कुछ विशेषाधिकार (कंप्यूटर विज्ञान) के साथ चलना चाहिए।, और संभव के रूप में कुछ विशेषाधिकारों के साथ एप्लिकेशन लॉन्च करें।

कम से कम विशेषाधिकार के सिद्धांत को व्यापक रूप से दोषों (दोष सहिष्णुता) और कंप्यूटर सुरक्षा से डेटा और कार्यक्षमता की सुरक्षा बढ़ाने में एक महत्वपूर्ण डिजाइन विचार के रूप में मान्यता प्राप्त है।

सिद्धांत के लाभों में शामिल हैं:


 * बेहतर प्रणाली स्थिरता। जब कोड परिवर्तनों के दायरे में सीमित होता है तो यह सिस्टम में कर सकता है, इसके संभावित कार्यों और अन्य अनुप्रयोगों के साथ बातचीत का परीक्षण करना आसान होता है। व्यवहार में उदाहरण के लिए, प्रतिबंधित अधिकारों के साथ चल रहे एप्लिकेशन के पास ऐसे ऑपरेशन करने की पहुंच नहीं होगी जो मशीन को क्रैश कर सकते हैं, या उसी सिस्टम पर चल रहे अन्य एप्लिकेशन को प्रतिकूल रूप से प्रभावित कर सकते हैं।
 * बेहतर प्रणाली सुरक्षा। जब कोड सिस्टम-वाइड क्रियाओं में सीमित होता है, तो यह प्रदर्शन कर सकता है, एक आवेदन में भेद्यता का उपयोग बाकी मशीन का फायदा उठाने के लिए नहीं किया जा सकता है। उदाहरण के लिए, माइक्रोसॉफ्ट का कहना है कि "मानक उपयोगकर्ता मोड में चलने से ग्राहकों को सुरक्षा हैकिंग की घटनाओं और मैलवेयर, जैसे रूट किट, स्पाइवेयर और ज्ञानी कंप्यूटर वायरस की सूची के कारण होने वाली अनजाने सिस्टम-स्तरीय क्षति के खिलाफ सुरक्षा में वृद्धि होती है"।

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

जब उपयोगकर्ताओं पर लागू किया जाता है, तो कम से कम उपयोगकर्ता पहुंच या कम से कम विशेषाधिकार प्राप्त उपयोगकर्ता खाता (एलयूए) का भी उपयोग किया जाता है, इस अवधारणा का जिक्र करते हुए कि सभी उपयोगकर्ता खातों को यथासंभव कुछ विशेषाधिकारों के साथ चलना चाहिए, और यथासंभव कुछ विशेषाधिकारों के साथ एप्लिकेशन लॉन्च करना चाहिए।

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

सिद्धांत के लाभों में सम्मिलित हैं:


 * बेहतर प्रणाली स्थिरता। जब कोड परिवर्तनों के दायरे में सीमित होता है तो यह सिस्टम में कर सकता है, इसके संभावित कार्यों और अन्य अनुप्रयोगों के साथ बातचीत का परीक्षण करना आसान होता है। व्यवहार में, उदाहरण के लिए, प्रतिबंधित अधिकारों के साथ चल रहे एप्लिकेशन के पास ऐसे ऑपरेशन करने की पहुंच नहीं होगी जो मशीन को क्रैश कर सकते हैं, या उसी सिस्टम पर चल रहे अन्य एप्लिकेशन को प्रतिकूल रूप से प्रभावित कर सकते हैं।
 * बेहतर सिस्टम सुरक्षा। जब कोड सिस्टम-वाइड क्रियाओं में सीमित होता है, तो वह कर सकता है, किसी एप्लिकेशन में भेद्यता का उपयोग बाकी मशीन का फायदा उठाने के लिए नहीं किया जा सकता है। उदाहरण के लिए, माइक्रोसॉफ्ट का कहना है कि "मानक उपयोगकर्ता मोड में चलने से ग्राहकों को "चकनाचूर हमलों (शैटर अटैक)" और मैलवेयर, जैसे रूटकिट्स, स्पाइवेयर और अनभिज्ञेय वायरस के कारण अनजाने में सिस्टम-स्तर की क्षति से सुरक्षा मिलती है।
 * परिनियोजन में आसानी। सामान्य तौर पर, किसी एप्लिकेशन को जितने कम विशेषाधिकारों की आवश्यकता होती है, उसे एक बड़े वातावरण में परिनियोजित करना उतना ही आसान होता है। यह आमतौर पर पहले दो लाभों से उत्पन्न होता है, एप्लिकेशन जो डिवाइस ड्राइवर स्थापित करते हैं या उन्नत सुरक्षा विशेषाधिकारों की आवश्यकता होती है, उनके परिनियोजन में आमतौर पर अतिरिक्त चरण सम्मिलित होते हैं। उदाहरण के लिए, विंडोज पर बिना किसी इंस्टॉलेशन के बिना किसी डिवाइस ड्राइवर के समाधान को सीधे चलाया जा सकता है, जबकि ड्राइवर को उन्नत विशेषाधिकार प्रदान करने के लिए डिवाइस ड्राइवरों को विंडोज इंस्टालर सेवा का उपयोग करके अलग से स्थापित किया जाना चाहिए।

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

एक और सीमा नियंत्रण की ग्रैन्युलैरिटी है जो ऑपरेटिंग वातावरण में एक व्यक्तिगत प्रक्रिया के लिए विशेषाधिकारों पर है। व्यवहार में, स्मृति, प्रसंस्करण समय, I/O डिवाइस एड्रेस या मोड तक किसी प्रक्रिया की पहुंच को नियंत्रित करना संभवतया ही कभी संभव होता है, केवल विशेषाधिकारों के सटीक सेट की सुविधा के लिए आवश्यक सटीकता के साथ एक प्रक्रिया की आवश्यकता होगी।

मूल सूत्रीकरण जेरोम साल्टज़र से लिया गया है:

"प्रत्येक प्रोग्राम और सिस्टम के प्रत्येक विशेषाधिकार प्राप्त उपयोगकर्ता को कार्य को पूरा करने के लिए आवश्यक कम से कम विशेषाधिकार का उपयोग करके संचालन करना चाहिए।"

पीटर जे. डेनिंग ने अपने पेपर "फॉल्ट टॉलरेंट ऑपरेटिंग सिस्टम्स" में इसे दोष सहिष्णुता के चार मूलभूत सिद्धांतों के बीच व्यापक परिप्रेक्ष्य में स्थापित किया।

विशेषाधिकारों के गतिशील समनुदेशन पर पहले 1972 में रोजर नीधम द्वारा चर्चा की गई थी।

ऐतिहासिक रूप से, कम से कम विशेषाधिकार का सबसे पुराना उदाहरण शायद लॉगिन.सी (login.c) का स्रोत (सोर्स ) कोड है, जो सुपर-यूजर अनुमतियों के साथ निष्पादन शुरू करता है और तत्काल उनकी आवश्यकता नहीं होती है- उन्हें एक गैर-शून्य तर्क के साथ सेटयूआईडी (setuid)। माध्यम से प्रदर्शित किया गया। संस्करण 6 यूनिक्स सोर्स कोड में।

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

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

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

समान सिद्धांत
ट्रस्टेड कंप्यूटिंग बेस (टीसीबी) न्यूनीकरण की ट्रस्टेड कंप्यूटर सिस्टम इवैल्यूएशन क्राइटेरिया (टीसीएसईसी) अवधारणा कहीं अधिक कठोर आवश्यकता है जो केवल कार्यात्मक रूप से सबसे मजबूत आश्वासन वर्गों, अर्थात बी3 और ए1 (जो स्पष्ट रूप से भिन्न हैं लेकिन कार्यात्मक रूप से समान हैं) पर लागू होती हैं।.

कम से कम विशेषाधिकार अक्सर विशेषाधिकार ब्रैकेटिंग से जुड़ा होता है: यानी, अंतिम संभव क्षण में आवश्यक विशेषाधिकारों को मानना और उन्हें जल्द से जल्द खारिज करना, जो अब कड़ाई से आवश्यक नहीं है, इसलिए स्पष्ट रूप से गलत कोड से नतीजे को कम करना है जो अनजाने में योग्यता से अधिक विशेषाधिकार का शोषण करता है। विवेकाधीन अभिगम नियंत्रण (डीएसी) अनुमतियों के वितरण के संदर्भ में कम से कम विशेषाधिकार की भी व्याख्या की गई है, उदाहरण के लिए यह दावा करना कि उपयोगकर्ता U को फ़ाइल F पढ़ने/लिखने की पहुँच देना कम से कम विशेषाधिकार का उल्लंघन करता है यदि U केवल पढ़ने की अनुमति के साथ अपने अधिकृत कार्यों को पूरा कर सकता है।

यह भी देखें

 * यूजर अकाउंट कंट्रोल
 * क्षमता-आधारित सुरक्षा
 * कंपार्टमेंटलाइज़ेशन (इंटेलिजेंस)
 * कन्फ्यूज्ड डेपुटी प्रॉब्लम
 * एनकैप्सुलेशन (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
 * नीड टू नो (पता करने की जरूरत)
 * विशेषाधिकार ब्रैकेटिंग
 * विशेषाधिकार वृद्धि
 * विशेषाधिकार निरस्तीकरण (कम्प्यूटिंग)
 * विशेषाधिकार जुदाई
 * संरक्षण वलय
 * निश्चित
 * सुडो

ग्रन्थसूची

 * Ben Mankin, The Formalisation of Protection Systems, Ph.D. thesis, University of Bath, 2004
 * page 31.
 * page 31.
 * page 31.

बाहरी संबंध

 * Managing least privileges from the cloud by Monique Sendze
 * The Saltzer and Schroeder paper cited in the references.
 * NSA (the one that implemented SELinux) talks about the principle of least privilege
 * A discussion of the implementation of the principle of least privilege in Solaris
 * Tom's IT Pro: Most Organizations Unaware of Employees With Admin Rights
 * "Proof that LUA makes you safer" by Dana Epp
 * Applying the Principle of Least Privilege to User Accounts on Windows XP, by Microsoft
 * "Commercial enterprises are putting our critical infrastructure at risk" CSO
 * How to successfully implement the principle of least privilege