
macOS में सिस्टम एक्सटेंशन
macOS 10.15 या बाद के संस्करण वाला Mac kernel स्तर के बजाय यूज़र स्पेस में चलने वाले सिस्टम एक्सटेंशन को इंस्टॉल और प्रबंधित करके macOS की क्षमताएँ विस्तारित करने के लिए डेवलपर को सक्षम करता है। यूज़र स्पेस में रन करके सिस्टम एक्सटेंशन macOS की स्थिरता और सुरक्षा को बढ़ाते हैं। हालाँकि kexts के पास संपूर्ण ऑपरेटिंग सिस्टम का पूरा ऐक्सेस है, फिर भी यूज़र स्पेस में रन होने वाले एक्सटेंशन को उनकी विशिष्ट फ़ंक्शनलिटी को निष्पादित करने के लिए केवल आवश्यक विशेषाधिकार प्रदान किए जाते हैं।
सिस्टम एक्सटेंशन डिवाइस प्रबंधन सेवा का उपयोग करते हुए प्रभावी प्रबंधन का समर्थन करते हैं, जिसमें किसी विशिष्ट डेवलपर या किसी विशिष्ट प्रकार (जैसे नेटवर्क एक्सटेंशन) के एक्सटेंशन को यूज़र एक्सटेंशन के बिना लोड करने के लिए अनुमति देने की योग्यता शामिल है। वैकल्पिक रूप से, डिवाइस प्रबंधन सेवा यूज़र को अपने ख़ुद के सिस्टम एक्सटेंशन को लोड करने के लिए अनुमोदन की अनुमति नहीं दे सकती है।
macOS 12.0.1 या बाद के संस्करण वाले Mac के लिए सिस्टम एक्सटेंशन पेलोड में मौजूद एक शब्दकोश जिसे RemovableSystemExtensions
कहा जाता है, डिवाइस प्रबंधन सेवा ऐडमिनिस्ट्रेटर को यह निर्दिष्ट करने की अनुमति देता है कि कौन-से ऐप्स अपने सिस्टम एक्सटेंशन हटा सकते हैं। सिस्टम एक्सटेंशन को हटाने के लिए किसी भी स्थानीय ऐडमिनिस्ट्रेटर प्रमाणन की ज़रूरत नहीं पड़ती है। यह ख़ास तौर पर उन विक्रेताओं के लिए उपयोगी है जो अपने ऐप्स के लिए ऑटोमैटेड अनइंस्टॉलर प्रदान करते हैं।
macOS 11.3 से लेकर macOS 11.6.4 वाले Mac के लिए सीधे सिस्टम एक्सटेंशन प्रोफ़ाइल में बदलाव करने से एक्सटेंशन की स्थिति प्रभावित होती है। उदाहरण के लिए, यदि किसी एक्सटेंशन का अनुमोदन लंबित है और एक्सटेंशन को अनुमति देने वाला कॉन्फ़िगरेशन प्रोफ़ाइल पुश किया जाता है, तो एक्सटेंशन लोड करने की अनुमति दी जाती है। इसके लिए, यदि अनुमोदन को रद्द किया जाता है, तो सिस्टम एक्सटेंशन को अनलोड किया जाता है और Mac के अगले रीस्टार्ट के समय हटाए जाने के लिए चिह्नांकित किया जाता है। यदि सिस्टम एक्सटेंशन ख़ुद को अनलोड करने की कोशिश करता है, तो एक इंटरैक्टिव प्रमाणन डायलॉग दिखाई देता है जिसे अनलोड करने के लिए ऐडमिनिस्ट्रेटर के क्रेडेंशियल की ज़रूरत होती है।
Kernel एक्सटेंशन
macOS 11 या बाद के संस्करण वाले Mac के लिए यदि तृतीय-पक्ष kernel एक्सटेंशन (kexts) को सक्षम किया गया है, तो माँग करने पर उन्हें kernel में लोड नहीं किया जा सकता। इसके लिए AuxKC को फिर से बनाने के लिए kernel में बदलाव लोड करने हेतु यूज़र के अनुमोदन की और macOS को रीस्टार्ट करने की आवश्यकता होती है और इसके लिए यह भी आवश्यक है कि सुरक्षित बूट को Apple silicon वाले Mac पर घटाई गई सुरक्षा में कॉन्फ़िगर किया गया हो।
डेवलपर kexts को राइट किए बिना USB और ह्यूमन इंटरफ़ेस ड्राइवर, एंडपॉइंट सिक्योरिटी टूल (जैसे कि डेटा हानि या अन्य एंडपॉइंट एजेंट की रोकथाम) और VPN और नेटवर्क टूल को राइट करने के लिए फ़्रेमवर्क का उपयोग कर सकते हैं, जिनमें DriverKit और NetworkExtension शामिल हैं। यदि तृतीय-पक्ष सुरक्षा एजेंट इन API का लाभ उठाते हैं या उनके पास kernel एक्सटेंशन को छोड़कर उन पर ट्रांज़िशन करने का प्रबल मानचित्र है, केवल तभी इन तृतीय-पक्ष सुरक्षा एजेंट का उपयोग किया जाना चाहिए।
महत्वपूर्ण : macOS के लिए अब Kexts अनुशंसित नहीं हैं। Kexts ऑपरेटिंग सिस्टम की इंटेग्रिटी और विश्वसनीयता को दाँव पर लगाते हैं। यूज़र को ऐसे समाधानों को प्राथमिकता देनी चाहिए जिनके लिए kernel को विस्तारित करने की आवश्यकता नहीं होती, बल्कि जो सिस्टम एक्सटेंशन का उपयोग करते हैं।
macOS 11 या बाद के संस्करण वाले Intel-आधारित या Apple silicon वाले Mac पर kexts जोड़ना
यदि आपको कर्नेल एक्सटेंशन का उपयोग करना है, तो नामांकन विधि के आधार पर अनुमोदन विधियों की समीक्षा करें।
नामांकन विधि | अनुमोदन विधि | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
नामांकित नहीं यूज़र नामांकन | जब एक नया kext इंस्टॉल किया जाता है और उसे लोड करने का प्रयास किया जाता है, तो यूज़र द्वारा चेतावनी संवाद से रीस्टार्ट शुरू किया जाना चाहिए :
इस रीस्टार्ट के कारण AuxKC को kernel बूटिंग से पहले फिर से बनाना शुरू होता है। | ||||||||||
डिवाइस नामांकन ऑटोमेटेड डिवाइस नामांकन | हर बार जब एक नया kext इंस्टॉल किया जाता है और उसे लोड करने का प्रयास किया जाता है, तो निम्नलिखित में से किसी एक के द्वारा रीस्टार्ट शुरू किया जाना चाहिए :
नोट : डिवाइस प्रबंधन सेवा को सबसे पहले kext अनुमति सूची प्रोफ़ाइल इंस्टॉल करने की ज़रूरत होती है जो kext को निर्दिष्ट करती है। macOS 11.3 या बाद के संस्करण वाला Mac वैकल्पिक रूप से सेवा को यूज़र को सूचना देने की अनुमति देता है, ताकि वे सुविधा के अनुसार रीस्टार्ट पूरा करें। |
Apple silicon वाले Mac पर kexts जोड़ने के लिए अतिरिक्त चरण
यदि आप Apple silicon वाले Mac पर कर्नेल एक्सटेंशन जोड़ रहे हैं, तो आपको अतिरिक्त क़दम उठाने होंगे।
नामांकन विधि | अनुमोदन विधि | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
नामांकित नहीं | यूज़र द्वारा Kext प्रबंधन किए जाने के लिए recoveryOS में रीस्टार्ट करने की आश्यकता है, ताकि सुरक्षा सेटिंग्ज़ को डाउनग्रेड किया जा सके। recoveryOS में रीस्टार्ट करने और ऐडमिनिस्ट्रेटर के रूप में प्रमाणित करने के लिए यूज़र को पावर बटन को दबाए रखना चाहिए। पावर बटन को दबाए रखकर recoveryOS में प्रवेश करने के बाद ही Secure Enclave नीति में बदलाव स्वीकार करता है। फिर यूज़र को “घटाई गई सुरक्षा” चेकबॉक्स और “पहचाने गए डेवलपर से kernel एक्सटेंशन के यूज़र प्रबंधन की अनुमति दें” विकल्प चुनना चाहिए और Mac को रीस्टार्ट करना चाहिए। | ||||||||||
यूज़र नामांकन | सुरक्षा सेटिंग्ज़ को डाउनग्रेड करने के लिए यूज़र को recoveryOS में रीस्टार्ट करने की आवश्यकता है। recoveryOS में रीस्टार्ट करने और स्थानीय ऐडमिनिस्ट्रेटर के रूप में प्रमाणित करने के लिए यूज़र को पावर बटन को दबाए रखना चाहिए। पावर बटन को दबाए रखकर recoveryOS में प्रवेश करने के बाद ही Secure Enclave नीति में बदलाव का स्वीकार करता है। फिर यूज़र को “घटाई गई सुरक्षा” चुननी चाहिए, “पहचाने गए डेवलपर से kernel एक्सटेंशन के यूज़र प्रबंधन की अनुमति दें” की जाँच करनी चाहिए और Mac को रीस्टार्ट करना चाहिए। | ||||||||||
डिवाइस नामांकन | डिवाइस प्रबंधन सेवा को यूज़र को सूचित करना चाहिए कि सुरक्षा सेटिंग्ज़ को डाउनग्रेड करने के लिए उन्हें recoveryOS में रीस्टार्ट करना चाहिए। recoveryOS में रीस्टार्ट करने और ऐडमिनिस्ट्रेटर के रूप में प्रमाणित करने के लिए यूज़र को पावर बटन को दबाए रखना चाहिए। केवल पावर बटन को दबाए रखकर ही recoveryOS में प्रवेश करने के बाद Secure Enclave नीति में बदलाव स्वीकार करता है। फिर यूज़र को “घटाई गई सुरक्षा” चुननी चाहिए, “kernel एक्सटेंशन और ऑटोमैटिक सॉफ़्टवेयर अपडेट के रिमोट प्रबंधन की अनुमति दें” चुनना चाहिए और Mac को रीस्टार्ट करना चाहिए। यह जानने के लिए कि यह फ़ीचर आपके डिवाइस को सपोर्ट करता है या नहीं, अपने डेवलपर का डिवाइस प्रबंधन सेवा दस्तावेज़ देखें। | ||||||||||
ऑटोमेटेड डिवाइस नामांकन (Mac का सीरियल नंबर Apple School Manager या Apple Business Manager में दिखाई देना चाहिए और Mac को उस डिवाइस प्रबंधन सेवा में नामांकित होना चाहिए जो Apple School Manager या Apple Business Manager से लिंक हो।) | डिवाइस प्रबंधन सेवा इसे ऑटोमैटिकली प्रबंधित कर सकती है। यह जानने के लिए कि यह फ़ीचर आपके डिवाइस को सपोर्ट करता है या नहीं, अपने डेवलपर का डिवाइस प्रबंधन सेवा दस्तावेज़ देखें। |
सिस्टम इंटेग्रिटी सुरक्षा वाले Kernel एक्सटेंसन
यदि सिस्टम इंटेग्रिटी सुरक्षा (SIP) को सक्षम किया गया है, तो प्रत्येक kext को AuxKC में शामिल करने से पहले उसकी सिग्नेचर को सत्यापित किया जाता है।
यदि SIP को अक्षम किया गया है, तो kext सिग्नेचर को लागू नहीं किया जाता है।
kexts को साइन करने से पहले उनका जाँच करने के लिए यह दृष्टिकोण ऐसे डेवलपर और यूज़र के लिए परमिसिव सुरक्षा की अनुमति देता है जो Apple डेवलपर प्रोग्राम के भाग नहीं हैं।