सीआई/सीडी पाइपलाइनों के अंदर क्या होता है इसकी विशिष्टताएँ कुख्यात रूप से अपारदर्शी हैं। YAML कॉन्फ़िगरेशन फ़ाइल, जो कि निर्देशों की पाइपलाइन सूची है, लिखने के बावजूद, आप यह कैसे सुनिश्चित कर सकते हैं कि सब कुछ ठीक उसी तरह होता है जैसा कि वर्णित है? इससे भी बदतर, अधिकांश पाइपलाइनें पूरी तरह से क्षणिक हैं, इसलिए खराबी की स्थिति में भी, जो लॉग किया गया था उसके अलावा बहुत कम सबूत हैं जिनमें समस्या का विवरण शामिल हो भी सकता है और नहीं भी।
स्वचालित सतत एकीकरण/निरंतर वितरण (सीआई/सीडी) पाइपलाइनों के उपयोग के माध्यम से तेजी से विकास हासिल किया जाता है। आपके कोड को स्वचालित रूप से संकलित, निर्माण, परीक्षण और शिप करने वाले ट्रिगर या शेड्यूलिंग का होना शानदार है। हालाँकि, अधिकांश पाइपलाइनें सुरक्षा को ध्यान में रखकर नहीं बनाई गई हैं, उन्हें गति और उपयोग की सुविधा के लिए डिज़ाइन किया गया है। चूंकि पाइपलाइनों को आम तौर पर निर्भरता और फ़ाइलों को डाउनलोड करने के लिए इंटरनेट तक पहुंच की आवश्यकता होती है, एक बार पाइपलाइन से समझौता हो जाने पर, हमलावर के पास आपके ऑपरेशन को बाधित करने या जानकारी या रहस्यों को बाहर निकालने के लिए कई प्रकार के विकल्प होते हैं।
इस लेख में, मैं आपके सीआई/सीडी पाइपलाइन की सुरक्षा के लिए अपनाई जा सकने वाली कुछ सर्वोत्तम प्रथाओं के बारे में बताऊंगा। हमारे उद्देश्यों के लिए, इससे कोई फर्क नहीं पड़ता कि आप कौन से स्वचालित उपकरण या सिस्टम का उपयोग कर रहे हैं - सुरक्षा सिद्धांत अभी भी मान्य हैं। आपको बस अपनी पाइपलाइन के उस हिस्से को सुरक्षित करने के कार्य के लिए सही उपकरण ढूंढने की आवश्यकता है।
सीआई/सीडी (सतत एकीकरण/निरंतर वितरण) पाइपलाइन क्या है?
सीआई/सीडी पाइपलाइन आपके सॉफ़्टवेयर, एप्लिकेशन या आर्टिफैक्ट के निर्माण, परीक्षण और प्रकाशन के लिए एक स्वचालित प्रक्रिया है। ये पाइपलाइनें अधिकाधिक सामान्य और जटिल होती जा रही हैं। टीम की उत्पादकता बढ़ाने और सॉफ़्टवेयर कलाकृतियों को अधिक लगातार और पूर्वानुमानित रूप से तैयार करने के लिए पाइपलाइन एक उत्कृष्ट उपकरण हैं। इन प्रक्रियाओं को स्वचालित करने का महत्व तब और अधिक स्पष्ट हो जाता है जब आप इस बात को ध्यान में रखते हैं कि बड़े व्यवसायों में सैकड़ों परस्पर जुड़ी हुई, कोरियोग्राफ की गई पाइपलाइनें हो सकती हैं, जो अच्छी तरह से काम करने के लिए एक-दूसरे पर निर्भर होती हैं।
स्वचालित रूप से और नियमित रूप से नए अंतिम उत्पाद में कोड परिवर्तन का निर्माण और परीक्षण करना निरंतर एकीकरण या सीआई के रूप में जाना जाता है। कोडिंग परिवर्तन दो-चरणीय प्रक्रिया के भाग के रूप में वितरित, परीक्षण और एकीकृत किए जाते हैं जिन्हें निरंतर वितरण और/या परिनियोजन - सीडी कहा जाता है। निरंतर परिनियोजन स्वचालित रूप से उत्पादन परिवेश में अपडेट वितरित करता है, जबकि निरंतर वितरण स्वचालित उत्पादन परिनियोजन से ठीक पहले बंद हो जाता है। आपकी पाइपलाइन एक या दूसरे का उपयोग कर रही है या नहीं, यह पूरी तरह आप पर और आपके वातावरण और डिलिवरेबल्स को स्थापित करने के तरीके पर निर्भर करता है।
आपकी सॉफ़्टवेयर आपूर्ति श्रृंखला के लिए सीआई/सीडी सुरक्षा का महत्व
ज्यादातर कंपनियां इस पर भरोसा करती हैं सीआई/सीडी उपकरण उनकी पाइपलाइनों को स्वचालित करने के लिए। इसका मतलब है कि, कई अन्य की तरह सॉफ़्टवेयर आपूर्ति श्रृंखला पर हमले, सभी बुरे अभिनेताओं को एक विशाल विस्फोट त्रिज्या प्राप्त करने के लिए एक ही लक्ष्य को भेदने की आवश्यकता होती है। प्रमुख कमज़ोरियों में से एक अंतिम उत्पाद या आर्टिफैक्ट में निर्भरता को डाउनलोड करने और एकीकृत करने के लिए पाइपलाइन की आवश्यकता है। यहां तक कि एक बुरी निर्भरता भी किसी अवांछित तत्व को पाइपलाइन में पैर जमाने के लिए पर्याप्त है। चूंकि पाइपलाइन के पास स्रोत कोड और आपके बुनियादी ढांचे के विभिन्न अन्य तत्वों (आवश्यकतानुसार) तक पहुंच है, एक विशेषाधिकार वृद्धि उस विशेष पाइपलाइन में बनाए गए उत्पाद के लगभग किसी भी हिस्से तक पहुंच सकती है और बाद में उसे बदल या निकाल सकती है।
एक सरल उदाहरण हमारे स्पष्टीकरण में पाया जा सकता है कैश या निर्भरता विषाक्तता.
पिछले कुछ वर्षों में, कई बड़ी कंपनियों को सॉफ़्टवेयर आपूर्ति श्रृंखला हमलों का सामना करना पड़ा है, जिनका मूल बिंदु सीआई/सीडी पाइपलाइन थी। उदाहरण के तौर पर आप देख सकते हैं सर्कलसीआई का उल्लंघन जनवरी 2023 में, अर्गो सीडी का समझौता जनवरी 2022 में, और कोडकोव उल्लंघन अप्रैल 2021 में।
ऐसे हमलों के संभावित परिणाम गंभीर हैं, इसलिए यह सुनिश्चित करने के लिए कि आपकी पाइपलाइनें यथासंभव सुरक्षित हैं, जो कुछ भी आप कर सकते हैं वह करना समझदारी है।
सीआई/सीडी सुरक्षा सर्वोत्तम प्रथाएँ
आप जो भी सीआई/सीडी प्लेटफॉर्म या टूल का उपयोग कर रहे हैं, कुछ चीजें हैं जो आप अपनी सुरक्षा को मजबूत करने और उस अप्रत्याशित घटना में संभावित नुकसान को कम करने के लिए कर सकते हैं जब कोई शत्रुतापूर्ण अभिनेता आपकी पाइपलाइन या नेटवर्क तक पहुंच प्राप्त करने का प्रबंधन करता है।
निगरानी एवं सचेत करना – भले ही आपने अपने इंजीनियरों को फ़िशिंग और अन्य सोशल इंजीनियरिंग धोखाधड़ी से सावधान रहने के लिए प्रशिक्षित किया हो, तब भी उल्लंघन हो सकता है। चूँकि अधिकांश पाइपलाइन वातावरण क्षणिक होते हैं, एक बार काम समाप्त हो जाने के बाद, जब तक आप उन्हें सक्रिय रूप से लॉग नहीं करते, तब तक कोई निशान नहीं बचेगा। जब आप प्रत्येक पीआर, मर्ज, निर्माण और परीक्षण पर काम करते हैं, तो सुनिश्चित करें कि पर्यावरण या कॉन्फ़िगरेशन फ़ाइलों में किए गए किसी भी संशोधन को लॉग किया गया है। यदि किसी समस्या की आवश्यकता हो तो जांच के लिए अन्य सभी डेटा के साथ उपयोगकर्ता डेटा को भी लॉग किया जाना चाहिए। किसी उल्लंघन का पुनर्निर्माण करने और यह निर्धारित करने में सक्षम होना कि क्या गलत हुआ और कैसे गलत हुआ, यहीं उद्देश्य है। उन घटनाओं का चयन करें जिनके लिए पहले से ही अलर्ट ट्रिगर होना चाहिए, और सुनिश्चित करें कि उपयुक्त पक्षों को सूचित किया जाए। ध्यान रखें कि व्यक्तियों पर व्यर्थ या अत्यधिक संवेदनशील चेतावनियाँ न डालें; इससे सतर्क थकान हो सकती है, जिससे वे अलर्ट को अनदेखा कर देंगे या समझदारी से बहुत देर से प्रतिक्रिया देंगे।
न्यूनतम विशेषाधिकार के साथ संयुक्त रूप से आरबीएसी सिद्धांत का उपयोग करें - किसी संगठन के भीतर उपयोगकर्ता की निर्दिष्ट भूमिका या कार्य फ़ंक्शन के आधार पर सिस्टम संसाधनों तक पहुंच प्रदान करना भूमिका-आधारित एक्सेस कंट्रोल या आरबीएसी की नींव है। उपयोगकर्ताओं को आरबीएसी में भूमिकाएँ दी जाती हैं जो विभिन्न सिस्टम संसाधनों, जैसे फ़ाइलों, फ़ोल्डरों और प्रोग्रामों तक उनके पहुँच अधिकार और अनुमतियाँ निर्दिष्ट करती हैं। दूसरी ओर, न्यूनतम विशेषाधिकार की अवधारणा उपयोगकर्ताओं को उनके कार्य कर्तव्यों को पूरा करने के लिए आवश्यक न्यूनतम पहुंच और विशेषाधिकार देने की प्रथा को संदर्भित करती है। इसका तात्पर्य यह है कि उपयोगकर्ता अपने निर्धारित कार्यों को पूरा करने के लिए आवश्यक संसाधनों का उपयोग करने तक ही सीमित हैं और इससे अधिक कुछ नहीं। कम से कम विशेषाधिकार और आरबीएसी को अक्सर मानार्थ सुरक्षा अवधारणाओं के रूप में एक साथ लागू किया जाता है। न्यूनतम विशेषाधिकार सिद्धांत यह सुनिश्चित करता है कि उपयोगकर्ताओं को केवल अपने विशेष कर्तव्यों को पूरा करने के लिए आवश्यक संसाधनों की न्यूनतम मात्रा तक पहुंच प्राप्त हो, और आरबीएसी ऐसी भूमिकाएं प्रदान करता है जो उपयोगकर्ताओं को अपने कार्य कार्यों को पूरा करने के लिए आवश्यक संसाधनों तक सही मात्रा में पहुंच प्रदान करती है और इससे अधिक कुछ नहीं . संयुक्त होने पर, ये दिशानिर्देश एक सुव्यवस्थित, अपेक्षाकृत सुरक्षित प्रणाली बनाए रखने में सहायता करते हैं। आप सुरक्षा की एक अतिरिक्त परत के रूप में आवश्यक सिस्टम क्रियाओं के लिए एकाधिक उपयोगकर्ता प्राधिकरणों की आवश्यकता के लिए इसे कॉन्फ़िगर कर सकते हैं। इस रणनीति का उपयोग सावधानी से किया जाना चाहिए क्योंकि इससे विकास प्रक्रिया में काफ़ी देरी हो सकती है।
पाइपलाइन उद्गम को एक अपरिवर्तनीय लॉग के रूप में रखें - सॉफ़्टवेयर कलाकृतियों के बारे में सत्यापन योग्य जानकारी जो यह बताती है कि कोई चीज़ कहाँ, कब और कैसे बनाई गई थी, उद्गम के रूप में जानी जाती है। यह सटीक रूप से जानना कि कौन सी फ़ाइलें दर्ज की गईं और पाइपलाइन में उनके साथ क्या हुआ, उस पाइपलाइन का एक अचूक लॉग बनाने के लिए एक उद्गम फ़ाइल के रूप में उत्पन्न किया जा सकता है। सुरक्षित होने के लिए, उद्गम को किसी भी उपयोगकर्ता से स्वतंत्र रूप से बनाया जाना चाहिए, क्योंकि उपयोगकर्ता जो कुछ भी बाधित या संशोधित कर सकता है वह पूरी तरह से भरोसेमंद नहीं है। मुंशी का वैलिंट आपको सक्षम बनाता है उद्गम स्थापित करें एससीएम प्रणालियों की एक विस्तृत श्रृंखला के लिए आपकी पाइपलाइन में। प्रत्येक उद्गम फ़ाइल (JSON) बाद में पहुंच योग्य है, इसलिए आप यह निर्धारित करने के लिए इसकी समीक्षा कर सकते हैं कि क्या कुछ अप्रत्याशित या अवांछनीय हुआ है। वैसे, आपकी सभी पाइपलाइनों से उद्गम फ़ाइलों को उत्पन्न करना और प्रबंधित करना इसके मूल में है एसएलएसए ढांचा.
अपने एसबीओएम का पूरा उपयोग करें - यदि आप कुछ संभावित उपयोगों से चूक गए हैं, तो पाइपलाइन के अंत में बनाया गया एक एसबीओएम उपयोग किए गए सभी ओपन-सोर्स पैकेजों को सूचीबद्ध करने में मदद कर सकता है। ज्ञात सीवीई के साथ उस सूची की तुलना करने से आपको पता चल सकता है कि आपके अंतिम उत्पाद में कौन सी संभावित कमजोरियाँ मौजूद हैं। आप सूची का उपयोग यह जांचने के लिए भी कर सकते हैं कि क्या आप अभी भी ओपन-सोर्स पैकेज के पुराने संस्करण का उपयोग कर रहे हैं, और यहां तक कि कुछ इस तरह का उपयोग भी कर सकते हैं ओपनएसएसएफ स्कोरकार्ड आपके द्वारा उपयोग किए जा रहे पैकेजों के 'स्वास्थ्य' की जांच करने के लिए। चूंकि नए सीवीई लगातार सामने आ रहे हैं, इसलिए आपके पास एक बार की एसएएसटी के विपरीत एक सेवा होनी चाहिए, जो आपको बताए कि क्या आपके मौजूदा पैकेजों में से किसी एक में नया सीवीई खोजा गया है। स्क्राइब की सेवा आपको यह सब स्वचालित रूप से करने में मदद कर सकती है।
अपनी नीतियों के अनुपालन की पुष्टि करें - प्रत्येक कंपनी और कभी-कभी प्रत्येक पाइपलाइन के पास ऐसी नीतियां होती हैं जिनका यह सुनिश्चित करने के लिए होना आवश्यक है कि सब कुछ ठीक है। कुछ नीतियां सामान्य हैं (जैसे यह सुनिश्चित करना कि दो-व्यक्ति सत्यापन प्रक्रिया है), और अन्य अद्वितीय हैं (जैसे यह सुनिश्चित करना कि माइक नवीनतम परिवर्तन पर हस्ताक्षर करता है इससे पहले कि हम इसे उत्पादन में भेज दें)। क्रिप्टोग्राफ़िक साइन-सत्यापन तंत्र और एक अद्वितीय नीति फ़ाइल का उपयोग करके, अब आप प्रत्येक पाइपलाइन के साथ आवश्यक नीतियों को शामिल कर सकते हैं और सत्यापित कर सकते हैं (स्वयं और दूसरों के लिए) कि वे घटित हुई हैं। यह एक मानवीय कमजोरी है, जिस पर जोर देने पर, कुछ आवश्यकताओं को छोड़ दिया जा सकता है और कुछ नियम समय सीमा को पूरा करने के लिए झुक सकते हैं। इस उपाय के लागू होने से, लोग अब नियमों को नहीं तोड़ सकते हैं, और इससे आपकी पाइपलाइन की आंतरिक और बाहरी दोनों खतरों से सुरक्षा बनाए रखने में मदद मिलेगी। स्क्राइब ने ऐसी नीतियों को लागू करने और यहां तक कि आपको अपना खुद का लिखने की अनुमति देने का एक नया तरीका विकसित किया है। इसकी जांच - पड़ताल करें यहाँ उत्पन्न करें.
पाइपलाइन की निर्देश फ़ाइल को सुरक्षित करें - खतरा पैदा करने वाले लोग जहरीली पाइपलाइन निष्पादन (पीपीई) नामक तकनीक का उपयोग करके सीआई पाइपलाइन को "जहर" दे सकते हैं, जो मूल रूप से पाइपलाइन निर्देश फ़ाइल में निर्दिष्ट पाइपलाइन चरणों या उनके अनुक्रम को संशोधित करता है। यह विधि स्रोत कोड प्रबंधन (एससीएम) रिपॉजिटरी में अनुमतियों का दुरुपयोग करके निर्माण प्रक्रिया में हेरफेर करती है। बिल्ड पाइपलाइन सेटिंग्स में दुर्भावनापूर्ण कोड या कमांड डालने से, पाइपलाइन को विषाक्त करना और निर्माण पूरा होने के दौरान दुर्भावनापूर्ण कोड को निष्पादित करना संभव है। जब तक आप पाइपलाइन अनुदेश फ़ाइल की जांच नहीं कर लेते, तब तक आप यह नहीं बता पाएंगे कि आपका निर्माण आपके इच्छित तरीके से काम नहीं कर रहा है। यह सुनिश्चित करने के लिए कि आपकी पाइपलाइनें आपकी इच्छानुसार चल रही हैं, आपको प्रत्येक रन से पहले निर्देश फ़ाइल को सत्यापित करना चाहिए। क्रिप्टोग्राफ़िक रूप से, फ़ाइल पर हस्ताक्षर करना और पाइपलाइन के पहले चरण के रूप में हस्ताक्षर सत्यापन जोड़ना उस सुरक्षा को प्राप्त करने का एक तरीका है। मुंशी का वैलिंट हस्ताक्षर करें और सत्यापित करें फ़ंक्शंस यह सत्यापित करने का एक तरीका है कि कोई भी नई पाइपलाइन चलाने से पहले आपकी निर्देश फ़ाइल अपरिवर्तित बनी हुई है।
अपना अंतिम परिणाम सुरक्षित करें - एक हमलावर को आपकी पाइपलाइन को बाधित करने के लिए कड़ी मेहनत क्यों करनी चाहिए, जबकि आपके अंतिम उत्पाद को धोखाधड़ी वाले संस्करण से बदलना बहुत आसान है? चूँकि इस प्रकार के हमलों में छवि का स्रोत उत्पादक कंपनी प्रतीत होती है, इसलिए उस कंपनी के लिए इसकी सुरक्षा करने वाला वैध प्रमाणपत्र होना अपर्याप्त है। सीधे शब्दों में कहें तो इससे नकली की विश्वसनीयता बढ़ेगी। समाधान यह है कि पाइपलाइन द्वारा उत्पादित अंतिम कलाकृति पर क्रिप्टोग्राफ़िक रूप से हस्ताक्षर किया जाए और अंतिम उपयोगकर्ता को उस हस्ताक्षर को सत्यापित करने की अनुमति दी जाए। स्क्राइब के वैलेंट का उपयोग किया जा सकता है हस्ताक्षर करें और सत्यापित करें कलाकृतियों की एक विशाल विविधता आपको वह अतिरिक्त सुरक्षा प्रदान करती है जिससे आपके उपयोगकर्ताओं को वही मिल रहा है जो आप उन्हें देना चाहते थे।
भविष्य पर विचार करते हुए
कोई भी अपने काम में तेजी लाने के लिए सीआई/सीडी जैसी स्वचालन तकनीकों का उपयोग करना नहीं छोड़ेगा। इसके विपरीत, जिस दुनिया में हम रहते हैं, हम हमेशा तेज़ सॉफ़्टवेयर अद्यतन पुनरावृत्तियों पर जोर दे रहे हैं। हमें, कम से कम, यह सुनिश्चित करना चाहिए कि हम कार्य को सावधानी से करें, इस बात का ध्यान रखें कि इस प्रक्रिया में हमारे उत्पादन वातावरण या हमारे स्रोत कोड को ख़तरे में न डालें।
महत्वपूर्ण बात यह है कि किसी व्यक्ति द्वारा आपकी पाइपलाइन, आपके पर्यावरण या आपके स्रोत कोड तक अवैध पहुंच प्राप्त करने के संभावित परिणामों पर विचार किया जाए। मुझे यकीन है कि एक बार जब आपको यह एहसास हो जाएगा कि यह कितना खतरनाक हो सकता है और आपकी पाइपलाइन और नेटवर्क कहां अतिसंवेदनशील हैं, तो आप संभावित रिसाव को रोकने या कम करने के लिए उचित कार्रवाई करने में सक्षम होंगे।
चूँकि आपस में जुड़ी हुई पाइपलाइनों की जटिलता बढ़ती ही जा रही है, इसलिए अपनी पाइपलाइनों की सुरक्षा में मदद के लिए पहले कदम के रूप में अपनी समग्र पर्यावरण सुरक्षा (खंडित नेटवर्क, आरबीएसी, शून्य विश्वास, आदि) को बनाए रखना महत्वपूर्ण है। उसके बाद, ठोस, अप्रमाणित साक्ष्य बनाने पर ध्यान दें और सॉफ़्टवेयर आपूर्ति श्रृंखला हमले की संभावना को यथासंभव कम करने के लिए क्रिप्टोग्राफ़िक हस्ताक्षर और डेटा के सत्यापन का उपयोग करें जो आपकी पाइपलाइन या पाइपलाइन के कैश को जहर दे सकता है। सतर्क और संदिग्ध रहने से आपकी कंपनी को अनकहे सिरदर्दों से बचाया जा सकता है।
यह सामग्री आपके लिए स्क्राइब सिक्योरिटी द्वारा लाई गई है, जो एक अग्रणी एंड-टू-एंड सॉफ्टवेयर आपूर्ति श्रृंखला सुरक्षा समाधान प्रदाता है - जो संपूर्ण सॉफ्टवेयर आपूर्ति श्रृंखलाओं में कोड कलाकृतियों और कोड विकास और वितरण प्रक्रियाओं के लिए अत्याधुनिक सुरक्षा प्रदान करता है। और अधिक जानें.