सॉफ़्टवेयर संरचना विश्लेषण का अन्वेषण करें
सॉफ्टवेयर कंपोजिशन एनालिसिस (एससीए) अनुप्रयोगों में ओपन-सोर्स और तृतीय-पक्ष घटकों की पहचान करने, उनकी सुरक्षा कमजोरियों, लाइसेंस अनुपालन और कोड गुणवत्ता का विश्लेषण करने के लिए एक स्वचालित प्रक्रिया है। चूंकि आधुनिक अनुप्रयोग तेजी से बाहरी निर्भरताओं पर निर्भर करते हैं, इसलिए सॉफ्टवेयर आपूर्ति श्रृंखलाओं से जुड़े जोखिमों के प्रबंधन के लिए एससीए आवश्यक हो गया है।
सॉफ्टवेयर संरचना विश्लेषण क्या है?
सॉफ्टवेयर संरचना विश्लेषण एक एप्लिकेशन में उपयोग किए जाने वाले सभी ओपन-सोर्स और तृतीय-पक्ष घटकों को स्वचालित रूप से खोजने, सूचीबद्ध करने और विश्लेषण करने का अभ्यास है। एससीए उपकरण सामग्री का एक व्यापक सॉफ्टवेयर बिल (एसबीओएम) बनाने के लिए पैकेज मैनिफेस्ट, निर्भरता लॉक फ़ाइलों, स्रोत कोड और संकलित बायनेरिज़ की जांच करते हैं।
कोर एससीए क्षमताएं
निर्भरता खोज:
- मैनिफेस्ट पार्सिंग: SCA उपकरण घोषित निर्भरताओं की पहचान करने के लिए पैकेज मेनिफ़ेस्ट फ़ाइलों (package.json, requirements.txt, pom.xml, *.csproj) को पढ़ते हैं।
- फ़ाइल विश्लेषण लॉक करें: लॉक फ़ाइलों का विश्लेषण करें (package-lock.json, Pipfile.lock, Gemfile.lock) सकर्मक निर्भरताओं सहित सटीक स्थापित संस्करण दिखा रहा है।
- बाइनरी स्कैनिंग: उन्नत उपकरण संकलित कलाकृतियों, कंटेनर छवियों और तैनात अनुप्रयोगों को स्कैन करते हैं ताकि एम्बेडेड निर्भरताओं की खोज की जा सके जो मैनिफेस्ट में घोषित नहीं की गई हैं।
- बहु भाषा समर्थन: व्यापक उपकरण दर्जनों प्रोग्रामिंग भाषाओं और पैकेज इकोसिस्टम (npm, PyPI, Maven, NuGet, RubyGems, Go मॉड्यूल) का समर्थन करते हैं।
भेद्यता विश्लेषण:
- सीवीई मिलान: सामान्य सुरक्षाछिद्र और एक्सपोज़र (CVE) डेटाबेस के विरुद्ध खोजे गए निर्भरताओं की तुलना करें।
- गंभीरता स्कोरिंग: सामान्य भेद्यता स्कोरिंग सिस्टम (CVSS) स्कोर 0 (कोई नहीं) से 10 (महत्वपूर्ण) तक भेद्यता गंभीरता का संकेत देते हुए स्कोर की गणना करें।
- बुद्धि का शोषण करें: पहचानें कि हमलावरों द्वारा सक्रिय रूप से उपयोग किए जाने वाले कारनामों को कौन सी कमजोरियों ने जाना है।
- पैच अनुशंसाएँ: विशिष्ट संस्करण अपग्रेड का सुझाव दें जो संगतता बनाए रखते हुए कमजोरियों को हल करते हैं।
लाइसेंस अनुपालन:
- लाइसेंस का पता लगाना: लाइसेंस फ़ाइलों, पैकेज मेटाडेटा और स्रोत कोड शीर्षलेखों का विश्लेषण करके सभी निर्भरताओं के लिए लायसेंसों की पहचान करें।
- नीति प्रवर्तन: संगठनात्मक लायसेंस नीतियों का उल्लंघन करने वाली निर्भरताओं को स्वचालित रूप से ध्वजांकित करें.
- संगतता विश्लेषण: परस्पर विरोधी लायसेंस का पता लगाएं जिन्हें कानूनी रूप से एक ही एप्लिकेशन में संयोजित नहीं किया जा सकता है।
- दायित्व ट्रैकिंग: दस्तावेज़ लाइसेंस आवश्यकताएँ जैसे एट्रिब्यूशन नोटिस, स्रोत कोड प्रकटीकरण, या व्युत्पन्न कार्य प्रतिबंध।
गुणवत्ता मूल्यांकन:
- रखरखाव की स्थिति: मूल्यांकन करें कि क्या निर्भरताएं सक्रिय रूप से बनाए रखी जाती हैं या छोड़ दी जाती हैं।
- सामुदायिक स्वास्थ्य: योगदानकर्ता गतिविधि, समुदाय के आकार और परियोजना स्थिरता का आकलन करें।
- सुरक्षा प्रथाएं: सत्यापित करें कि परियोजनाओं में जिम्मेदार प्रकटीकरण प्रक्रियाएं और सुरक्षा सलाह हैं।
- अद्यतन अनुशंसाएँ: पुरानी निर्भरताओं की पहचान करें और सुरक्षित, अधिक वर्तमान विकल्प सुझाएं।
DevOps के लिए SCA क्यों महत्वपूर्ण है
आधुनिक सॉफ्टवेयर विकास प्रथाएं एससीए को अपरिहार्य बनाती हैं:
निर्भरता विस्फोट
अनुप्रयोगों में सैकड़ों निर्भरताएँ होती हैं:
- प्रत्यक्ष निर्भरता: विशिष्ट एप्लिकेशन सीधे 20-50 बाहरी पैकेजों को संदर्भित करता है।
- सकर्मक निर्भरताएँ: प्रत्येक प्रत्यक्ष निर्भरता अपनी निर्भरता लाती है, 200-500 कुल पैकेजों के साथ निर्भरता पेड़ बनाती है।
- एकाधिक पारिस्थितिक तंत्र: एप्लिकेशन अक्सर कई भाषा पारिस्थितिक तंत्र (जावास्क्रिप्ट फ्रंटएंड, पायथन बैकएंड, जावा माइक्रोसर्विसेज) से निर्भरता को जोड़ते हैं।
- कंटेनर निर्भरता: कंटेनरीकृत अनुप्रयोगों में आधार छवि निर्भरता और एप्लिकेशन निर्भरताएं शामिल हैं।
मैन्युअल ट्रैकिंग असंभव है:
- पैमाना: दर्जनों अनुप्रयोगों में सैकड़ों निर्भरताओं को मैन्युअल रूप से ट्रैक करना अव्यावहारिक है।
- वेग: नई कमजोरियों का दैनिक रूप से खुलासा किया जाता है, जिससे कोई भी मैनुअल इन्वेंट्री तुरंत पुरानी हो जाती है।
- जटिलता: सकर्मक निर्भरता श्रृंखलाओं और उनकी बातचीत को समझने के लिए स्वचालित विश्लेषण की आवश्यकता होती है।
- वितरित स्वामित्व: दुनिया भर में हजारों स्वतंत्र ओपन-सोर्स परियोजनाओं द्वारा बनाए रखी गई निर्भरता।
सुरक्षा अनिवार्यता
निर्भरताओं में कमजोरियों का सक्रिय रूप से शोषण किया जाता है:
- हाई-प्रोफाइल उल्लंघन: प्रमुख सुरक्षा घटनाओं में नियमित रूप से लोकप्रिय ओपन-सोर्स पैकेजों में ज्ञात कमजोरियों का शोषण शामिल होता है।
- आपूर्ति श्रृंखला हमले: हमलावर डाउनस्ट्रीम उपभोक्ताओं को मैलवेयर वितरित करने के लिए वैध पैकेज से समझौता करते हैं।
- शून्य-दिन कमजोरियां: व्यापक रूप से उपयोग किए जाने वाले पैकेजों में पहले अज्ञात कमजोरियां एक साथ हजारों संगठनों को प्रभावित कर सकती हैं।
- पैच तात्कालिकता: गंभीर कमजोरियों को सभी प्रभावित अनुप्रयोगों में तेजी से पहचान और उपचार की आवश्यकता होती है।
पारंपरिक सुरक्षा उपकरण निर्भरता कमजोरियों को याद करते हैं:
- स्थैतिक विश्लेषण: स्रोत कोड स्कैनिंग उपकरण आपके कोड का विश्लेषण करते हैं लेकिन निर्भरता कोड का नहीं।
- गतिशील परीक्षण: प्रवेश परीक्षण परीक्षणों के दौरान ट्रिगर नहीं की गई निर्भरता में कमजोरियों को याद कर सकता है।
- मैनुअल समीक्षा: सुरक्षा टीमें सैकड़ों तृतीय-पक्ष पैकेजों के स्रोत कोड की समीक्षा नहीं कर सकती हैं।
- विशिष्ट पहचान: विशेष रूप से निर्भरता कमजोरियों की पहचान करने के लिए डिज़ाइन किए गए एससीए उपकरणों की आवश्यकता होती है।
अनुपालन की आवश्यकता
लाइसेंस उल्लंघन में महत्वपूर्ण जोखिम होते हैं:
- कानूनी दायित्व: लाइसेंस शर्तों का पालन किए बिना निर्भरता का उपयोग करने से मुकदमे और नुकसान हो सकते हैं।
- जबरन ओपन-सोर्सिंग: मजबूत कॉपीलेफ्ट लाइसेंस (जीपीएल, एजीपीएल) के लिए ओपन-सोर्सिंग संपूर्ण एप्लिकेशन की आवश्यकता हो सकती है।
- वितरण प्रतिबंध: कुछ लाइसेंस वाणिज्यिक वितरण को प्रतिबंधित करते हैं या उपयोग सीमाएं लगाते हैं।
- ऑडिट आवश्यकताएँ: नियामक ढांचे के लिए संगठनों को सामग्री के सटीक सॉफ्टवेयर बिल को बनाए रखने की आवश्यकता होती है।
लाइसेंस जटिलता:
- सैकड़ों लाइसेंस प्रकार: ओपन-सोर्स इकोसिस्टम में अलग-अलग दायित्वों के साथ सैकड़ों अलग-अलग लाइसेंस शामिल हैं।
- अनुकूलता के मुद्दे: विभिन्न लाइसेंसों में परस्पर विरोधी शर्तें होती हैं जो उनके एक साथ उपयोग को प्रतिबंधित करती हैं।
- सकर्मक लाइसेंसिंग: सकर्मक निर्भरताओं से लाइसेंस दायित्वों को ट्रैक और संतुष्ट किया जाना चाहिए।
- लाइसेंस परिवर्तन: प्रोजेक्ट कभी-कभी संस्करणों के बीच लाइसेंस बदलते हैं, जिसके लिए निरंतर निगरानी की आवश्यकता होती है।
एससीए उपकरण कैसे काम करते हैं
एससीए उपकरण निर्भरताओं की खोज और विश्लेषण करने के लिए कई तकनीकों का उपयोग करते हैं:
खोज तंत्र
मेनिफ़ेस्ट फ़ाइल पार्सिंग:
- भाषा-विशिष्ट प्रारूप: उपकरण प्रत्येक भाषा के लिए पैकेज मैनिफेस्ट प्रारूपों को समझते हैं (एनपीएम के लिएpackage.json, पायथन के लिए requirements.txt, pom.xml मावेन के लिए)।
- निर्भरता समाधान: श्रेणियों, बाधाओं और समाधान नियमों सहित निर्भरता संस्करण विनिर्देशों को पार्स करें।
- कार्यक्षेत्र स्कैनिंग: मोनोरेपो और मल्टी-प्रोजेक्ट वर्कस्पेस में सभी मैनिफ़ेस्ट फ़ाइलों को खोजने के लिए प्रोजेक्ट निर्देशिकाओं को पुनरावर्ती रूप से स्कैन करें।
- कॉन्फ़िगरेशन जागरूकता: पर्यावरण-विशिष्ट निर्भरताओं (विकास, परीक्षण, उत्पादन) पर अलग से विचार करें।
निर्भरता लॉक फ़ाइल विश्लेषण:
- सटीक संस्करण: लॉक फ़ाइलें सकर्मक निर्भरताओं सहित सभी निर्भरताओं के सटीक संस्करण रिकॉर्ड करती हैं।
- स्थापना स्थिति: अमूर्त आवश्यकताओं के बजाय वास्तविक स्थापित निर्भरताओं का प्रतिनिधित्व करें।
- नियतात्मक संकल्प: लॉक फ़ाइलें सभी परिवेशों में लगातार निर्भरता संस्करण सुनिश्चित करती हैं।
- पूर्ण निर्भरता रेखांकन: संस्करण रिज़ॉल्यूशन के साथ पूर्ण सकर्मक निर्भरता ट्री शामिल करें।
बाइनरी और आर्टिफैक्ट स्कैनिंग:
- संकलित कलाकृतियाँ: एम्बेडेड निर्भरताओं की पहचान करने के लिए JAR फ़ाइलों, व्हील फ़ाइलों, DLL और निष्पादन योग्य को स्कैन करें।
- कंटेनर छवि परतें: आधार छवि घटकों और एप्लिकेशन निर्भरताओं की खोज करने के लिए कंटेनर छवि परतों का विश्लेषण करें।
- फाइल सिस्टम स्कैनिंग: परिचालित अनुप्रयोग फ़ाइल सिस्टम की जाँच करें निर्भरता मेनिफ़ेस्ट में घोषित नहीं करने के लिए।
- फिंगरप्रिंटिंग: मेटाडेटा के बिना भी विशिष्ट पैकेज संस्करणों की पहचान करने के लिए क्रिप्टोग्राफ़िक हैशिंग का उपयोग करें।
एकीकरण बनाएं:
- बिल्ड टूल प्लगइन्स: बिल्ड के दौरान निर्भरता जानकारी कैप्चर करने के लिए बिल्ड सिस्टम (Maven, Gradle, webpack, pip) के साथ एकीकृत करें।
- संकल्प हुक: स्थापित सटीक संस्करणों को रिकॉर्ड करने के लिए निर्भरता समाधान प्रक्रियाओं में हुक।
- आर्टिफैक्ट पीढ़ी: डाउनस्ट्रीम खपत के लिए निर्माण के दौरान सामग्री का सॉफ्टवेयर बिल (एसबीओएम) कलाकृतियां उत्पन्न करें।
- पाइपलाइन एकीकरण: प्रत्येक बिल्ड का विश्लेषण करने के लिए CI/CD पाइपलाइनों में स्वचालित चरणों के रूप में चलाएँ।
विश्लेषण क्षमताएं
भेद्यता मिलान:
- डेटाबेस क्वेरी: क्वेरी राष्ट्रीय भेद्यता डेटाबेस (NVD), GitHub सलाहकार डेटाबेस, और मालिकाना भेद्यता डेटाबेस।
- संस्करण सीमा मिलान: निर्धारित करें कि क्या विशिष्ट पैकेज संस्करण असुरक्षित संस्करण श्रेणियों में आते हैं।
- पैच सत्यापन: सत्यापित करें कि क्या लागू पैच वास्तव में रिपोर्ट की गई सुरक्षाछिद्र को हल करते हैं।
- प्राथमिकता: गंभीरता, शोषण क्षमता और व्यावसायिक प्रभाव के आधार पर कमजोरियों को रैंक करें।
लाइसेंस पहचान:
- एकाधिक स्रोत: पैकेज मेटाडेटा, लाइसेंस फ़ाइलें, स्रोत शीर्ष लेख और रीडमी दस्तावेज़ों से लाइसेंस जानकारी निकालें।
- लाइसेंस सामान्यीकरण: मानकीकृत लाइसेंस प्रकारों के लिए विभिन्न लाइसेंस नामों और पहचानकर्ताओं (SPDX, OSI) को मैप करें।
- दोहरी लाइसेंसिंग: एकाधिक वैकल्पिक लाइसेंस के तहत जारी किए गए पैकेजों को संभालें।
- कस्टम लाइसेंस: कानूनी समीक्षा की आवश्यकता वाले गैर-मानक लाइसेंसों की पहचान करें।
पहुंच क्षमता विश्लेषण:
- कॉल ग्राफ निर्माण: कॉल ग्राफ़ बनाएँ जो दिखाता है कि कौन सा निर्भरता कोड वास्तव में आपके आवेदन द्वारा निष्पादित किया जाता है।
- मृत कोड का पता लगाना: बंडल की गई लेकिन वास्तव में कभी उपयोग नहीं की गई निर्भरताओं की पहचान करें।
- शोषण पथ विश्लेषण: निर्धारित करें कि क्या असुरक्षित कोड पथ अनुप्रयोग प्रविष्टि बिंदुओं से पहुँच योग्य हैं।
- जोखिम शोधन: वास्तव में उपयोग किए गए कोड में शोषण योग्य कमजोरियों पर ध्यान केंद्रित करके शोर को कम करें।
निरंतर निगरानी:
- वास्तविक समय चेतावनी: आपकी निर्भरता को प्रभावित करने वाली नई कमजोरियों का खुलासा होने पर तत्काल सूचनाएं प्राप्त करें।
- अनुसूचित स्कैनिंग: अपरिवर्तित निर्भरताओं में नई खोजी गई कमजोरियों का पता लगाने के लिए नियमित रूप से एप्लिकेशन को फिर से स्कैन करें।
- आधारभूत तुलना: समय के साथ भेद्यता और अनुपालन स्थिति में परिवर्तन को ट्रैक करें।
- प्रतिगमन की रोकथाम: जब नई निर्भरताएं कमजोरियां या लाइसेंस उल्लंघन पेश करती हैं तो सतर्क करें।
एससीए एकीकरण पैटर्न
प्रभावी एससीए कार्यान्वयन में विकास जीवनचक्र में कई बिंदुओं पर एकीकरण शामिल है:
डेवलपर वर्कस्टेशन
आईडीई एकीकरण:
- वास्तविक समय प्रतिक्रिया: निर्भरता को स्कैन करें क्योंकि डेवलपर्स उन्हें परियोजनाओं में जोड़ते हैं।
- इनलाइन चेतावनी: सुरक्षाछिद्र और लायसेंस चेतावनियाँ सीधे IDE में प्रदर्शित करें।
- उपचार सुझाव: वैकल्पिक पैकेज संस्करण या प्रतिस्थापन पैकेज का सुझाव दें।
- नीति प्रवर्तन: संगठनात्मक नीतियों का उल्लंघन करने वाली निर्भरताओं को जोड़ने से रोकें.
पूर्व-प्रतिबद्ध सत्यापन:
- गिट हुक: कमजोर निर्भरताओं को शुरू करने से रोकने के लिए कमिट करने से पहले SCA जाँच चलाएँ।
- स्थानीय स्कैनिंग: दूरस्थ रिपॉजिटरी पर धकेलने से पहले स्थानीय रूप से परिवर्तनों का विश्लेषण करें।
- त्वरित प्रतिक्रिया: सक्रिय विकास के दौरान डेवलपर्स को तत्काल प्रतिक्रिया प्रदान करें।
- शीघ्र पता लगाना: साझा शाखाओं और CI/CD पाइपलाइनों तक पहुंचने से पहले समस्याओं को पकड़ें।
स्रोत नियंत्रण
पुल अनुरोध सत्यापन:
- स्वचालित जांच: निर्भरता परिवर्तनों का पता लगाने के लिए सभी पुल अनुरोधों पर SCA विश्लेषण चलाएँ।
- टिप्पणियों की समीक्षा करें: समीक्षक दृश्यता के लिए पुल अनुरोध टिप्पणियों के रूप में निष्कर्ष पोस्ट करें।
- मर्ज ब्लॉकिंग: उन पुल अनुरोधों को मर्ज करने से रोकें जो महत्वपूर्ण सुरक्षाछिद्र या लाइसेंस उल्लंघन पेश करते हैं।
- निर्भरता परिवर्तन ट्रैकिंग: स्पष्ट रूप से दस्तावेज़ करें कि प्रत्येक पुल अनुरोध में क्या निर्भरता परिवर्तन करती है।
GitHub डिपेंडाबोट एकीकरण:
- स्वचालित अपडेट: निर्भरता सुरक्षा अद्यतन उपलब्ध होने पर स्वचालित रूप से पुल अनुरोध बनाएं।
- भेद्यता अलर्ट: कमजोर निर्भरताओं के लिए GitHub सुरक्षा अलर्ट प्राप्त करें।
- निर्भरता ग्राफ: GitHub की निर्भरता ग्राफ़ सुविधा में निर्भरता संबंधों की कल्पना करें।
- वर्कफ़्लो की समीक्षा करें: निर्भरता अपडेट के लिए GitHub की समीक्षा और अनुमोदन प्रक्रियाओं का लाभ उठाएं।
सीआई/सीडी पाइपलाइन
बिल्ड-टाइम स्कैनिंग:
- पाइपलाइन चरण: SCA स्कैनिंग को CI/CD पाइपलाइनों में स्वचालित बिल्ड चरणों के रूप में जोड़ें।
- गुणवत्ता द्वार: विफल बिल्ड जो सुरक्षा और अनुपालन आवश्यकताओं को पूरा नहीं करते हैं।
- एसबीओएम पीढ़ी: निर्माण आउटपुट के साथ-साथ सामग्री कलाकृतियों का सॉफ्टवेयर बिल बनाएं।
- ऑडिट ट्रेल्स: अनुपालन और फोरेंसिक उद्देश्यों के लिए रिकॉर्ड स्कैन परिणाम।
परिनियोजन द्वार:
- पूर्व-परिनियोजन सत्यापन: उत्पादन वातावरण में तैनात करने से पहले कलाकृतियों को स्कैन करें।
- पर्यावरण-विशिष्ट नीतियां: विकास परिनियोजन की तुलना में उत्पादन परिनियोजन के लिए सख्त नीतियां लागू करें।
- रोलबैक ट्रिगर: महत्वपूर्ण सुरक्षाछिद्र को शामिल करने के लिए खोजे गए परिनियोजन को स्वचालित रूप से वापस रोल करें.
- परिनियोजन अनुमोदन: ज्ञात लेकिन स्वीकृत जोखिमों के साथ परिनियोजन के लिए मैन्युअल अनुमोदन की आवश्यकता है।
रनटाइम निगरानी
उत्पादन स्कैनिंग:
- परिनियोजित अनुप्रयोग विश्लेषण: रनटाइम निर्भरता का पता लगाने के लिए वास्तव में तैनात अनुप्रयोगों को स्कैन करें।
- कंटेनर रजिस्ट्री स्कैनिंग: रजिस्ट्रियों में संग्रहीत कंटेनर छवियों को लगातार स्कैन करें।
- सर्वर रहित फ़ंक्शन विश्लेषण: तैनात सर्वर रहित कार्यों और उनकी निर्भरताओं को स्कैन करें।
- बहाव का पता लगाना: इच्छित और वास्तविक परिनियोजित निर्भरताओं के बीच अंतर की पहचान करें।
निरंतर भेद्यता निगरानी:
- चल रही निगरानी: वर्तमान निर्भरताओं को प्रभावित करने वाली नई प्रकट की गई कमजोरियों के लिए तैनात अनुप्रयोगों की निगरानी करें।
- घटना की प्रतिक्रिया: ट्रिगर घटना प्रतिसाद वर्कफ़्लोज़ जब उत्पादन में महत्वपूर्ण सुरक्षाछिद्र खोजे जाते हैं।
- पैच योजना: तैनात अनुप्रयोगों में कमजोरियों को संबोधित करने के लिए पैच परिनियोजन योजनाएँ उत्पन्न करें।
- एसएलए अनुपालन: सुरक्षा SLA के अनुपालन को सुनिश्चित करने के लिए उपचार समय-सीमा को ट्रैक करें।
SCA वर्कफ़्लो सर्वोत्तम प्रक्रियाएँ
सफल एससीए कार्यान्वयन सिद्ध वर्कफ़्लो का अनुसरण करता है:
आधार रेखा स्थापित करें
प्रारंभिक सूची:
- व्यापक खोज: पूर्ण निर्भरता सूची बनाने के लिए सभी अनुप्रयोगों के विरुद्ध SCA उपकरण चलाएँ।
- जोखिम मूल्यांकन: कमजोरियों और लाइसेंस अनुपालन मुद्दों के वर्तमान जोखिम को समझें।
- प्राथमिकता: पहचानें कि किन अनुप्रयोगों और कमजोरियों पर तत्काल ध्यान देने की आवश्यकता है।
- बेसलाइन दस्तावेज़ीकरण: सुधार को मापने के लिए आधार रेखा के रूप में वर्तमान स्थिति का दस्तावेजीकरण करें।
नीतियों को परिभाषित करें
सुरक्षा नीतियां:
- भेद्यता गंभीरता सीमा: परिभाषित करें कि कौन से गंभीरता के स्तर स्वीकार्य हैं (उदाहरण के लिए, कोई महत्वपूर्ण नहीं, सीमित उच्च)।
- उपचार की समय-सीमा: विभिन्न भेद्यता गंभीरता (7 दिनों के भीतर महत्वपूर्ण, 30 दिनों के भीतर उच्च) को पैच करने के लिए एसएलए स्थापित करें।
- अपवाद प्रक्रियाएं: जोखिम स्वीकार करने के लिए वर्कफ़्लो बनाएं जब तत्काल उपचार संभव न हो।
- छूट ट्रैकिंग: व्यावसायिक औचित्य के साथ स्वीकृत जोखिमों का ऑडिट ट्रेल बनाए रखें।
अनुपालन नीतियां:
- लाइसेंस अनुमति सूची: निर्दिष्ट करें कि कौन से लाइसेंस हमेशा स्वीकार्य हैं (एमआईटी, अपाचे 2.0, बीएसडी)।
- लाइसेंस अस्वीकारकर्ता: व्यवसाय मॉडल (मालिकाना सॉफ़्टवेयर के लिए GPL) के साथ असंगत विशिष्ट लाइसेंसों को प्रतिबंधित करें।
- अनुमोदन वर्कफ़्लोज़: कुछ लाइसेंस (LGPL, MPL, कस्टम लाइसेंस) के साथ निर्भरता के लिए कानूनी समीक्षा की आवश्यकता है।
- एट्रिब्यूशन आवश्यकताएँ: परिभाषित करें कि वितरित सॉफ़्टवेयर में लाइसेंस एट्रिब्यूशन कैसे प्रदान किए जाने चाहिए.
प्रवर्तन को स्वचालित करें
पाइपलाइन एकीकरण:
- स्वचालित स्कैनिंग: प्रत्येक बिल्ड और पुल अनुरोध पर स्वचालित रूप से SCA चेक चलाएँ।
- गुणवत्ता द्वार: उन पाइपलाइन गेट्स को कॉन्फ़िगर करें जो नीतियों का उल्लंघन करने वाले बिल्ड या परिनियोजन को अवरुद्ध करते हैं.
- स्वचालित उपचार: सुरक्षा अपडेट के लिए स्वचालित रूप से पुल अनुरोध बनाने के लिए GitHub Dependabot जैसे टूल का उपयोग करें।
- प्रतिवेदन: ऑडिट और प्रबंधन दृश्यता के लिए अनुपालन रिपोर्ट तैयार करें।
निरंतर सुधार
मेट्रिक्स ट्रैकिंग:
- उपचार का औसत समय (MTTR): मापें कि खोज के बाद कमजोरियों को कितनी जल्दी ठीक किया जाता है।
- भेद्यता में कमी: समय के साथ घटती भेद्यता की गणना को ट्रैक करें।
- अनुपालन दर: लाइसेंस नीतियों को पूरा करने वाली निर्भरताओं के प्रतिशत की निगरानी करें।
- कवरेज: सुनिश्चित करें कि SCA उपकरण सभी अनुप्रयोगों और निर्भरताओं को स्कैन करते हैं।
प्रक्रिया शोधन:
- गलत सकारात्मक प्रबंधन: कॉन्फ़िगरेशन और अपवादों के माध्यम से झूठी सकारात्मकता को कम करने के लिए टूल ट्यून करें।
- डेवलपर प्रशिक्षण: डेवलपर्स को सुरक्षित निर्भरता चयन और प्रबंधन पर शिक्षित करें।
- नीति विकास: उभरते खतरों और व्यावसायिक आवश्यकताओं के आधार पर नीतियों को अपडेट करें।
- उपकरण मूल्यांकन: समय-समय पर नए SCA टूल और सुविधाओं का मूल्यांकन करें।
सॉफ्टवेयर संरचना विश्लेषण आधुनिक अनुप्रयोगों में सुरक्षा और अनुपालन जोखिमों के प्रबंधन के लिए आवश्यक स्वचालित क्षमताएं प्रदान करता है जो ओपन-सोर्स घटकों पर बहुत अधिक निर्भर करते हैं। अगली इकाई इस बात की पड़ताल करती है कि GitHub Dependabot को कैसे लागू किया जाए, जो GitHub में एकीकृत एक विशिष्ट SCA टूल है।