आपकी सीआई/सीडी पाइपलाइन के अंदर वास्तव में क्या हो रहा है, इसके बारे में आप कितने आश्वस्त हैं? आपको किन तत्वों की सुरक्षा करनी चाहिए, और कैसे

सभी पद

सीआई/सीडी पाइपलाइन इस बात को लेकर बेहद अपारदर्शी हैं कि वास्तव में अंदर क्या होता है। भले ही आपने ही YAML कॉन्फिग फ़ाइल (निर्देशों की पाइपलाइन सूची) लिखी हो, आप यह कैसे सुनिश्चित कर सकते हैं कि सब कुछ बिल्कुल वर्णित तरीके से होता है? इससे भी बुरी बात यह है कि अधिकांश पाइपलाइनें पूरी तरह से अल्पकालिक हैं, इसलिए यदि कुछ बुरा भी होता है तो उसके बाद कोई निशान नहीं बचता है।

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

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

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

सीआई/सीडी की कला में महारत हासिल करना: प्रमुख तत्व जिन्हें आप नज़रअंदाज नहीं कर सकते

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

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

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

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

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

GitHub कैश पॉइज़निंग की छवि

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

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

खाते की सुरक्षा बनाए रखने के लिए, आपको नियमित रूप से अपनी SSH कुंजी सूची की समीक्षा करनी चाहिए और जो भी कुंजी अमान्य हैं या जिनके साथ छेड़छाड़ की गई है, उन्हें रद्द/हटा देना चाहिए। GitHub के लिए, आप निम्नलिखित पृष्ठ पर SSH कुंजियों की अपनी सूची पा सकते हैं:
पहुँच सेटिंग्स > SSH और GPG कुंजियाँ

SSH कुंजी की छवि

एक उपकरण जो आपकी SSH कुंजियों को शीर्ष पर रखने में आपकी सहायता कर सकता है वह एक ओपन-सोर्स सुरक्षा स्थिति रिपोर्ट है GitGat. यदि आपकी कोई कॉन्फ़िगर की गई SSH कुंजी समाप्त हो गई है या अमान्य है तो GitGat रिपोर्ट आपको सचेत करेगी। अपनी कुंजियों पर कड़ी नज़र रखने और उन्हें बार-बार घुमाने के अलावा, GitHub चेतावनी देता है कि यदि आपको कोई SSH कुंजी दिखाई दे जिससे आप परिचित नहीं हैं, तो उसे तुरंत हटा दें और संपर्क करें गिटहब समर्थन आगे की मदद के लिए. एक अज्ञात सार्वजनिक कुंजी संभावित सुरक्षा उल्लंघन का संकेत दे सकती है।

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

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

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

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

एसएलएसए उद्गम की छवि

उद्गम फ़ाइल केवल एक JSON फ़ाइल है, लेकिन चूँकि उद्गम फ़ाइलों को पढ़ने के लिए कोई स्वचालित उपकरण नहीं हैं (अभी तक) उन्हें पढ़ने और व्याख्या करने का काम आपका है।  

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

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

एक बार फिर समाधान यह है कि पाइपलाइन द्वारा उत्पादित अंतिम कलाकृति पर क्रिप्टोग्राफ़िक रूप से हस्ताक्षर किया जाए और अंतिम उपयोगकर्ता को उस हस्ताक्षर को सत्यापित करने की अनुमति दी जाए।   

चूँकि मैंने पहले ही उल्लेख किया है वैलिंट मैं ओपन-सोर्स के उपयोग का सुझाव दूंगा सिगस्टोर का कोसाइन. कोसाइन का लक्ष्य प्रमुख बुनियादी ढांचे की आवश्यकता को हटाकर हस्ताक्षर करना आसान बनाना है। यह उपयोगकर्ता को अपनी ऑनलाइन सत्यापित पहचान (जैसे Google, GitHub, Microsoft, या AWS) को एक कुंजी के रूप में उपयोग करने की अनुमति देता है। आप छवियों पर हस्ताक्षर करने और सत्यापित करने दोनों के लिए कोसाइन का उपयोग कर सकते हैं, जो इसे पाइपलाइन की अंतिम निर्मित छवि पर हस्ताक्षर करने और बाद में सत्यापन के लिए आदर्श बनाता है।
चाहे आप वैलेंट या कोसाइन का उपयोग करना चुनते हैं, अपने उपयोगकर्ताओं को अपने अंतिम आर्टिफैक्ट पर एक क्रिप्टोग्राफ़िक हस्ताक्षर सत्यापित करने की अनुमति देकर यह सुनिश्चित करें कि उन्हें वही मिल रहा है जो आप वितरित करना चाहते थे, मुझे यकीन है कि अधिकांश अंतिम उपयोगकर्ता इसकी सराहना करेंगे। 

भविष्य में पाइपलाइन सुरक्षा

निःसंदेह, निर्माण पाइपलाइन में अन्य तत्व शामिल हैं जो अतिरिक्त सुरक्षा से लाभान्वित हो सकते हैं। इस लेख में, मैंने कुछ अधिक स्पष्ट और कुछ अधिक कमजोर पाइपलाइन तत्वों पर गौर करना चुना। 

आप जो भी पाइपलाइन टूलींग या बुनियादी ढांचे का उपयोग कर रहे हैं, सुनिश्चित करें कि आप उल्लंघन की संभावना पर अपनी आँखें खुली रखें। कभी भी किसी ऐसे सिस्टम पर आंख मूंदकर भरोसा न करें जो आपको बताता हो कि यह पूरी तरह से सुरक्षित है।  

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

बैनर

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