सामग्री का सॉफ़्टवेयर बिल कैसे बनाएं (एसबीओएम)

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

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

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

सामग्री का सॉफ़्टवेयर बिल कब जनरेट करें

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

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

स्रोत कोड चरण में

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

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

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

निर्माण-समय के दौरान

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

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

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

हालाँकि बिल्ड-टाइम एसबीओएम जनरेटर सबसे व्यापक और सटीक हैं, लेकिन अन्य तरीकों की तुलना में उन्हें स्थापित करना अधिक कठिन है। साथ ही, यह विधि कुछ बिल्ड सिस्टम के लिए काम नहीं करती है, और आप पुराने उत्पादों के लिए इस विधि का उपयोग नहीं कर सकते हैं। 

रनटाइम के दौरान एसबीओएम उत्पन्न करना

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

सामग्री का सॉफ़्टवेयर बिल कैसे तैयार करें: एक चरण-दर-चरण मार्गदर्शिका

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

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

चरण 1: रजिस्टर करें और स्क्राइब ट्रस्ट हब में लॉग इन करें।

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

स्क्राइब को अपने प्रोजेक्ट में एकीकृत करने के लिए पहला कदम स्क्राइब ट्रस्ट हब पर पंजीकरण करना है। एक बार जब आप पंजीकृत और लॉग इन हो जाएं, तो "उत्पाद" टैब पर जाएं और सेटअप पर क्लिक करें। स्क्राइब के पास इस पृष्ठ पर एक डेमो उत्पाद है, जिसके साथ आप प्लेटफ़ॉर्म के बारे में और यह कैसे काम करता है, इसकी जानकारी प्राप्त करने के लिए बातचीत कर सकते हैं।

चरण 2: स्क्राइब ट्रस्ट हब को एकीकृत करें

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

स्क्राइब का सीआई सेटअप वर्तमान में केवल कुबेरनेट्स और गिटहब एक्शन पर जेनकींस के लिए काम करता है। इन सीआई सेटअपों के लिए स्क्राइब को एकीकृत करने की प्रक्रिया समान है। आरंभ करने के लिए आपको अपने स्क्राइब हब उत्पाद सेटअप पृष्ठ पर निम्नलिखित क्रेडेंशियल प्राप्त करने की आवश्यकता होगी:

  • उत्पाद कुंजी
  • ग्राहक आईडी
  • ग्राहक रहस्य

उत्पाद कुंजी एक उत्पाद से दूसरे उत्पाद में भिन्न होती है, जबकि ग्राहक क्रेडेंशियल आपके खाते के लिए अद्वितीय होते हैं।

जेनकींस के लिए सीआई एकीकरण की स्थापना

जेनकींस के लिए सीआई एकीकरण स्थापित करने के लिए, आप चेकआउट बिंदु पर और/या डॉकर छवि बनाने के बाद "जेन्सबॉम" (साक्ष्य एकत्र करने और एसबीओएम उत्पन्न करने के लिए स्क्राइब ट्रस्ट हब का उपकरण) को कॉल करने के लिए कोड स्निपेट जोड़ सकते हैं।

अद्वितीय निर्देशों के अनुसार अपने निर्माण परिवेश में उपरोक्त क्रेडेंशियल जोड़कर प्रारंभ करें जेनकींस. इसके बाद, निर्देशों के अनुसार कोड स्निपेट को अपनी पाइपलाइन में जोड़ें को यहाँ से डाउनलोड कर सकते हैं।

GitHub क्रियाओं के लिए CI एकीकरण की स्थापना

GitHub Actions के लिए CI एकीकरण स्थापित करने की प्रक्रिया जेनकिंस के समान है। मुख्य विचार स्क्राइब के साक्ष्य संग्राहक और एसबीओएम जनरेटर को "जेन्सबॉम" के नाम से जाना जाता है। आरंभ करने के लिए, का पालन करें गिटहब निर्देश निर्देशों के अनुसार उत्पाद सेटअप क्रेडेंशियल और कोड स्निपेट को पाइपलाइन में जोड़ने के लिए यहाँ उत्पन्न करें

स्क्राइब ट्रस्ट हब को अन्य सीआई सिस्टम के साथ एकीकृत करना

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

चरण 3: सामग्री का सॉफ़्टवेयर बिल तैयार करना

स्क्राइब का जेन्सबॉम सीएलआई टूल डॉकर और ओपन कंटेनर इमेजेज (ओसीआई) के लिए सॉफ्टवेयर बिल ऑफ मैटेरियल्स (एसबीओएम) तैयार करता है। यह टूल केवल मैक या लिनक्स सिस्टम पर चलता है। स्क्राइब द्वारा उत्पन्न अंतिम SBOM CycloneDX JSON प्रारूप में है, जो SBOMs के लिए मान्यता प्राप्त मानक मशीनों और मानव-पठनीय प्रारूपों में से एक है। खुले कंटेनर की छवियों को डॉकर, स्थानीय डिस्क या दूरस्थ रजिस्ट्री, जैसा भी मामला हो, से निकाला जा सकता है।

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

चरण 4: एसबीओएम निर्यात करें

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

निष्कर्ष

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