बड़े पैमाने पर SLSA अनुपालन: स्क्राइब के साथ उद्गम स्थल निर्माण

सभी पद

यह लेख विक्टर कार्तशोव और डैनियल नेबेनज़हल के साथ मिलकर लिखा गया था।

ऑडिटर का लिटमस टेस्ट: क्या आप अपने निर्माण को साबित कर सकते हैं?

"क्या आप निश्चित रूप से यह साबित कर सकते हैं कि आपके द्वारा भेजी गई प्रत्येक कंटेनर छवि ठीक उसी तरह बनाई गई थी जैसा आप दावा करते हैं?"

ज़्यादातर ऑडिटर एक त्वरित और भरोसेमंद जवाब की उम्मीद करते हैं – हफ़्तों तक चलने वाली YAML रिफैक्टरिंग की नहीं। SLSA (सॉफ़्टवेयर आर्टिफ़ैक्ट्स के लिए सप्लाई-चेन लेवल्स) फ्रेमवर्क उस प्रमाण का खाका पेश करता है: संरचित, छेड़छाड़-रोधी उद्गम।

लेकिन यहाँ समस्या यह है: परंपरागत रूप से, प्रत्येक CI कार्यप्रवाह में एक प्रोवेंस जनरेटर को जोड़ने से शीघ्र ही एक 'व्हेक-ए-मोल' खेल बन जाता है:

  • दर्जनों रिपोजिटरी? इसका मतलब है कि अनगिनत पी.आर. की समीक्षा और विलय करना होगा।
  • पाइपलाइन में परिवर्तन? निरंतर, मैनुअल रखरखाव.
  • ऐतिहासिक इमारतें? पिछले प्रकाशनों के लिए साक्ष्य पुनः बनाने का कोई सीधा तरीका नहीं है।

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

प्लेटफ़ॉर्म CLI: प्रोवेंस में नो-टच प्रतिमान बदलाव

परंपरागत दृष्टिकोण स्क्राइब प्लेटफ़ॉर्म CLI
प्रत्येक CI कार्य में एक जनरेटर चरण एम्बेड करें शून्य पाइपलाइन संपादन — लॉग का विश्लेषण करता है बाद निर्माण पूरा हो गया
पुराने निर्माणों को भरना कठिन पूर्वव्यापी रूप से उद्गम बनाता है पिछले वर्कफ़्लो रन से
प्रति रेपो रैखिक प्रयास एक कमांड स्केल 10 → 1,000+ रिपॉजिटरी तक

जादू कैसे घटित होता है: विश्वास को स्वचालित करना

स्क्राइब प्लेटफॉर्म्स सीएलआई स्वचालित एसएलएसए प्रोवेंस प्रदान करने के लिए पर्दे के पीछे एक परिष्कृत नृत्य करता है, वह भी आपके मौजूदा बिल्ड में हस्तक्षेप किए बिना:

  • यह लकड़ियाँ काटता है: स्क्राइब आपके CI/CD सिस्टम (वर्तमान में GitHub Actions, GitLab और Jenkins समर्थन जल्द ही आने वाला है) से जुड़कर बिल्ड लॉग प्राप्त करता है।
  • यह प्रत्येक बिल्ड का पता लगाता है: आपकी पाइपलाइनों में किसी विशेष सेटअप के बिना, स्क्राइब प्रत्येक छवि निर्माण को सटीक रूप से निर्धारित करने के लिए डॉकर, पॉडमैन या बिल्डाह कमांड की बुद्धिमानी से पहचान करता है।
  • यह मुख्य मेटाडेटा निकालता है: छवि टैग, क्रिप्टोग्राफिक डाइजेस्ट, रनर आईडी, बिल्ड तर्क और टाइमस्टैम्प जैसे महत्वपूर्ण विवरण सीधे इन लॉग से खींचे जाते हैं।
  • यह लिंक्ड SBOMs उत्पन्न करता है: पूर्ण पता लगाने की क्षमता के लिए, स्क्राइब स्वचालित रूप से दोनों बनाता है स्रोत सॉफ्टवेयर बिल ऑफ मैटेरियल्स (एसबीओएम) और की छवि एसबीओएम को सीधे निर्माण स्थल से जोड़ना।
  • यह SLSA उद्गम शिल्प: इस समृद्ध डेटा के साथ, स्क्राइब प्रत्येक छवि के लिए पूर्णतः अनुपालन योग्य SLSA उद्गम कथन का निर्माण करता है।
  • यह स्तर 2 के लिए संकेत (वैकल्पिक) करता है: केवल एक ध्वज जोड़कर, स्क्राइब आपकी हस्ताक्षर क्षमता (X509, पब-प्रिव, सिगस्टोर या आपके पसंदीदा KMS) के साथ एकीकृत होकर, मूल स्थान पर क्रिप्टोग्राफिक रूप से हस्ताक्षर करता है, तथा इसे SLSA स्तर 2 तक बढ़ा देता है।
  • यह सत्यापन और रिपोर्ट करता है: महत्वपूर्ण बात यह है कि स्क्राइब स्वचालित रूप से पूर्व-निर्धारित रूप से चलता है एसएलएसए.1 or एसएलएसए.2 साक्ष्य के विरुद्ध पहल। इससे इसकी सत्यनिष्ठा प्रमाणित होती है और एक व्यापक SARIF रिपोर्ट तैयार होती है, जिस पर स्तर 2 अनुपालन के लिए भी हस्ताक्षर किए जाते हैं।

सभी उत्पन्न कलाकृतियाँ स्थानीय स्तर पर बनी रह सकती हैं या उन्हें दीर्घकालिक, छेड़छाड़-रहित भंडारण के लिए स्क्राइब हब पर सुरक्षित रूप से अपलोड किया जा सकता है।

पीढ़ी से परे: नीति-के-रूप-में-कोड के अनुपालन को प्रमाणित करना

प्रमाण पत्र तैयार करना बुनियादी है, लेकिन इसके अनुपालन को साबित करना ही लेखा परीक्षकों को वास्तव में संतुष्ट करता है। SLSA प्रमाण पत्र तैयार करने के तुरंत बाद, स्क्राइब उस साक्ष्य के आधार पर स्वचालित रूप से कार्रवाई शुरू कर देता है।

ये पहल स्वचालित लेखा परीक्षकों के रूप में कार्य करती हैं, जो निम्नलिखित चीजों की जांच करती हैं:

  • क्या उद्गम स्थल अच्छी तरह से निर्मित और पूर्ण है?
  • क्या सभी आवश्यक फ़ील्ड मौजूद और सटीक हैं?
  • क्या लिंक किए गए SBOM वैध और सुलभ हैं?
  • क्या उद्गम स्थान पर अपेक्षित पहचानों द्वारा क्रिप्टोग्राफिक हस्ताक्षर किए गए थे?

नतीजा? आपकी अनुपालन स्थिति का विवरण देने वाली एक व्यापक SARIF रिपोर्ट। स्तर 2 के लिए, यह रिपोर्ट स्वयं भी हस्ताक्षरित होती है, जो किसी भी ऑडिटर के लिए एक स्पष्ट, मशीन-पठनीय और सत्यापन योग्य उत्तर प्रदान करती है।

एक त्वरित उदाहरण: स्क्राइब-सिक्योरिटी के साथ SLSA प्रोवेंस प्राप्त करना 🚀

स्क्राइब-सिक्योरिटी का प्लेटफ़ॉर्म CLI आपके बिल्ड के लिए SLSA प्रोवेंस जनरेशन को सुव्यवस्थित करता है, और लेवल 1 (अहस्ताक्षरित) और लेवल 2 (हस्ताक्षरित) दोनों आश्वासन प्राप्त करने के लिए एक एकीकृत कमांड प्रदान करता है। महत्वपूर्ण अंतर –valint.sign तर्क की उपस्थिति है।

GitHub पर अपने scribe-security/valint रिपॉजिटरी में सभी टैग-आधारित बिल्ड के लिए SLSA प्रोवेंस प्राप्त करने के लिए, आप निम्नलिखित कमांड चलाएंगे:

खूब जोर से पीटना

प्लेटफ़ॉर्म डिस्कवर \ --valint.sign \ # SLSA स्तर 2 (हस्ताक्षरित) के लिए इसे शामिल करें, SLSA स्तर 1 (हस्ताक्षरित) के लिए इसे छोड़ दें github \ --token EXAMPLE_GH_TOKEN \ --scope.organization example-org \ --scope.repository example-repo \ --repository.mapping *::example_slsa::v1 \ --commit.skip \ --slsa-enable \ --slsa.tags-only

इसके बाद स्क्राइब तुरंत कार्य करना शुरू कर देता है: यह हाल के GitHub वर्कफ़्लो को स्कैन करता है, आपकी इमेज बिल्ड का बुद्धिमानी से पता लगाता है, सभी आवश्यक डेटा एकत्र करता है, और लिंक किए गए SBOMs के साथ व्यापक रूप से SLSA प्रोवेंस लिखता है।

--valint.sign: SLSA स्तर 1 या 2 के लिए आपका स्विच 🔑 --valint.sign फ़्लैग आपके सरल टॉगल के रूप में कार्य करता है: SLSA स्तर 1 (अहस्ताक्षरित) के लिए --valint.sign को हटाएँ: स्क्राइब बुनियादी ट्रेसेबिलिटी के लिए मूलभूत, अहस्ताक्षरित प्रोवेंस उत्पन्न करता है। SLSA स्तर 2 (हस्ताक्षरित) के लिए --valint.sign शामिल करें: स्क्राइब क्रिप्टोग्राफ़िक रूप से प्रोवेंस फ़ाइलों और SARIF अनुपालन रिपोर्ट पर हस्ताक्षर करता है, जिससे सत्यापन योग्य आश्वासन का उच्च स्तर प्राप्त होता है।

एकल ध्वज द्वारा नियंत्रित यह एकीकृत कमांड, आपके मौजूदा CI/CD पाइपलाइनों को संशोधित किए बिना, बड़े पैमाने पर मजबूत SLSA अनुपालन प्राप्त करना सरल बनाता है।

ओपन-सोर्स SLSA प्रोवेंस जनरेशन

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

उदाहरण के लिए, आप आसानी से SLSA स्तर 1 उद्गम उत्पन्न कर सकते हैं गो-गिटिया/गिटिया परियोजना का उपयोग कर प्लेटफ़ॉर्म की खोज आदेश:

प्लेटफ़ॉर्म डिस्कवर गिटहब \ --टोकन EXAMPLE_GH_TOKEN \ # कोई भी टोकन काम करेगा क्योंकि लक्ष्य सार्वजनिक है --scope.organization go-gitea \ --scope.repository gitea \ --repository.mapping *gitea*::gitea_demo::v1 \ --scope.workflow.past_days 30 \ # पिछले 30 दिनों के भीतर समीक्षा करने के लिए वर्कफ़्लोज़ का दायरा --slsa-enable \ --scope.workflow.name "*release-tag*" \ # रिलीज़ वर्कफ़्लोज़ पर फ़ोकस विश्लेषण --exclude.types सदस्य कमिट सीक्रेट \ # बड़े डेटासेट और अप्रमाणित API को बाहर निकालें --slsa.tags-only # टैग किए गए वर्कफ़्लो रन पर फ़ोकस विश्लेषण

इस आदेश को निष्पादित करने के बाद, आपको SLSA अनुरोध को इंगित करने वाला एक लॉग और पता लगाए गए छवि निर्माण और उनके संबंधित उद्गम को सारांशित करने वाली एक तालिका दिखाई देगी:

जैसा कि आप देख सकते हैं, इस लेख को लिखते समय, `gitea/gitea` का नवीनतम संस्करण **v1.24.2** पाया गया था। SLSA मूल स्थान और उससे संबंधित साक्ष्य जिन दो छवियों के लिए जारी किए गए थे, वे हैं `gitea/gitea:1.24.2` और `gitea/gitea:1.24.2-rootless`। उदाहरण के तौर पर, SLSA मूल स्थान का संदर्भ निम्नलिखित में दिया जा सकता है। संपर्क

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