कोड एक्सेस सिक्योरिटी

कोड एक्सेस सिक्योरिटी (CAS), Microsoft .NET फ्रेमवर्क में, अविश्वसनीय कोड को विशेषाधिकार प्राप्त कार्यों को करने से रोकने के लिए Microsoft का समाधान है। जब सामान्य भाषा रनटाइम एक असेंबली (सीएलआई) को लोड करता है तो यह असेंबली के लिए #Evidence प्राप्त करेगा और असेंबली से संबंधित #Code समूह की पहचान करने के लिए इसका उपयोग करेगा। एक कोड समूह में एक अनुमति सेट (एक या अधिक फ़ाइल सिस्टम अनुमतियाँ) होती है। कोड जो एक विशेषाधिकार प्राप्त कार्रवाई करता है, एक कोड एक्सेस #Demands करेगा जो CLR को कॉल स्टैक पर चलने और कॉल स्टैक में प्रत्येक विधि (कंप्यूटर विज्ञान) की असेंबली को दी गई अनुमति सेट की जांच करने का कारण बनेगा। कोड समूह और अनुमति सेट मशीन के व्यवस्थापक द्वारा निर्धारित किए जाते हैं जो #नीति को परिभाषित करता है। Microsoft CAS को अप्रचलित मानता है और इसके उपयोग को हतोत्साहित करता है। यह .NET Core और .NET में भी उपलब्ध नहीं है।

साक्ष्य
साक्ष्य किसी विधानसभा से जुड़ी कोई भी जानकारी हो सकती है। .NET कोड एक्सेस सुरक्षा द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट साक्ष्य हैं:


 * एप्लीकेशन डायरेक्टरी: वह डायरेक्टरी जिसमें असेंबली रहती है।
 * प्रकाशक: असेंबली के प्रकाशक के डिजिटल हस्ताक्षर ( एथेंटिकोड के माध्यम से असेंबली पर हस्ताक्षर करने की आवश्यकता होती है)।
 * यूनिफ़ॉर्म रिसोर्स लोकेटर: पूरा यूआरएल जहां से असेंबली लॉन्च की गई थी
 * साइट: यूआरएल/रिमोट डोमेन/वीपीएन का होस्टनाम।
 * क्षेत्र: वह सुरक्षा क्षेत्र जहां विधानसभा निवास करती है
 * क्रिप्टोग्राफ़िक हैश फ़ंक्शन: असेंबली का एक क्रिप्टोग्राफ़िक हैश, जो एक विशिष्ट संस्करण की पहचान करता है।
 * मजबूत नाम: असेंबली पर हस्ताक्षर करने के लिए उपयोग की जाने वाली हस्ताक्षर कुंजी की असेंबली नाम, संस्करण और सार्वजनिक कुंजी का संयोजन। साइनिंग कुंजी एक X.509 प्रमाणपत्र नहीं है, लेकिन मजबूत नामकरण उपकरण, SN.EXE या विजुअल स्टूडियो द्वारा उत्पन्न एक कस्टम कुंजी जोड़ी है।

एक डेवलपर कस्टम सबूत (तथाकथित असेंबली सबूत) का उपयोग कर सकता है लेकिन इसके लिए सुरक्षा असेंबली और संस्करण 1.1 लिखने की आवश्यकता होती है {{Clarify|reason=Since or until?|date=June 2020}.NET की यह सुविधा काम नहीं करती है।

असेंबली के हैश पर आधारित साक्ष्य कोड में आसानी से प्राप्त होता है। उदाहरण के लिए, C Sharp (प्रोग्रामिंग लैंग्वेज) | C# में, निम्नलिखित कोड क्लॉज द्वारा साक्ष्य प्राप्त किया जा सकता है:

नीति
एक नीति अभिव्यक्तियों का एक समूह है जो एक कोड समूह सदस्यता निर्धारित करने के लिए साक्ष्य का उपयोग करती है। एक कोड समूह उस समूह के भीतर असेंबली के लिए अनुमति सेट देता है। .NET में चार नीतियां हैं:


 * उद्यम: मशीनों के एक परिवार के लिए नीति जो एक सक्रिय निर्देशिका स्थापना का हिस्सा हैं।
 * मशीन: वर्तमान मशीन के लिए नीति।
 * उपयोगकर्ता: लॉग ऑन उपयोगकर्ता के लिए नीति।
 * AppDomain: क्रियान्वित अनुप्रयोग डोमेन के लिए नीति।

पहली तीन नीतियों को एक्सएमएल फाइलों में संग्रहीत किया जाता है और .NET कॉन्फ़िगरेशन टूल 1.1 (mscorcfg.msc) के माध्यम से प्रशासित किया जाता है। वर्तमान एप्लिकेशन डोमेन के लिए अंतिम नीति को कोड के माध्यम से प्रशासित किया जाता है।

कोड एक्सेस सुरक्षा प्रत्येक नीति के लिए एक असेंबली का साक्ष्य प्रस्तुत करेगी और फिर असेंबली को दी गई अनुमतियों के रूप में चौराहे (जो सभी उत्पन्न अनुमति सेटों के लिए सामान्य अनुमतियां हैं) लेगी।

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

ध्यान दें कि नीति प्रणाली को .NET Framework 4.0 में समाप्त कर दिया गया है।

कोड समूह
कोड समूह साक्ष्य के एक टुकड़े को नामित अनुमति सेट के साथ जोड़ते हैं। व्यवस्थापक एक विशेष प्रकार के साक्ष्य (उदाहरण के लिए, साइट) और उस साक्ष्य के लिए एक विशेष मूल्य (उदाहरण के लिए, www.mysite.com) निर्दिष्ट करने के लिए .NET कॉन्फ़िगरेशन टूल का उपयोग करता है और फिर अनुमति सेट की पहचान करता है कि कोड समूह होगा दिया गया।

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

संदर्भ

 * Understanding .NET Security
 * Code Access Security Policy Tool (Caspol.exe)