एपिसोड 23: माउंटेन व्यू, कैलिफ़ोर्निया में आकाश मुखर्जी की पेशकश (जुलाई 2021)
पिछले एपिसोड
Chrome बनाते समय, कई चीज़ें उस पर्यावरण में योगदान देती हैं जो किसी आर्टफ़ैक्ट के आउटपुट पर असर डालती है. ओएस से, साथ काम करने वाली लाइब्रेरी, तीसरे पक्ष की डिपेंडेंसी, इंस्टॉल किए गए टूल और रनटाइम एनवायरमेंट; इनमें से हर एक को सुरक्षा के अलग-अलग स्तर को ध्यान में रखकर बनाया गया है.
पहले Google, बाइनरी अनुमति का इस्तेमाल करता था, एक इंटरनल रनटाइम एनफ़ोर्समेंट जांच, जो इनसाइडर रिस्क (संगठन के किसी उपयोगकर्ता की ओर से डेटा लीक किए जाने का जोखिम) को कम करती है ताकि यह पक्का किया जा सके कि प्रोडक्शन सॉफ़्टवेयर और कॉन्फ़िगरेशन, Google के प्लैटफ़ॉर्म पर डिप्लॉय किए जाएं की सही तरीके से समीक्षा की गई हो और उसका पता लगाया जा सके.
यह सुनिश्चित करके कि कोई एक व्यक्ति निर्माण से समझौता नहीं कर सकता है और LUCI पर बनाए गए आर्टफ़ैक्ट की सप्लाई चेन का पता लगाए बिना, Google, लोगों को भेजे जाने वाले सॉफ़्टवेयर के जोखिम को कम करता है.
पिछले साल की शुरुआत से, हर बिल्ड के लिए सिस्टम ऐसा बिल्ड बनाता है जिसकी पुष्टि की जा सकती है मेनिफ़ेस्ट—साइन किया गया JWT इसमें बनने वाले सोर्स के बारे में पूरी जानकारी दी गई है. बनाई गई बाइनरी और आर्टफ़ैक्ट के क्रिप्टोग्राफ़िक हैश और पूरे बिल्ड पैरामीटर. इस बिल्ड मेनिफ़ेस्ट की मदद से हम आर्टफ़ैक्ट को वापस स्रोतों तक ट्रेस कर पाते हैं, इस तरह बिल्ड प्रोसेस और इसके आउटपुट की पुष्टि की जा सकती है.
इसके अलावा, मेनिफ़ेस्ट से हमें यह पुष्टि करने में मदद मिलती है कि बनाए गए आर्टफ़ैक्ट में बदलाव नहीं किया गया है क्योंकि किसी भी बदलाव से हस्ताक्षर अमान्य हो जाएगा. कुल मिलाकर, इससे हमें उन आर्टफ़ैक्ट को एक जगह से दूसरी जगह सेव करने का मौका मिलता है जो भरोसेमंद सिस्टम के बीच आते हैं.
बाइनरी अनुमति को दो चरणों वाले सिस्टम के तौर पर लागू किया गया है. सिस्टम एक provenance जनरेट करता है जिसमें बिल्ड में लगने वाले समय की जानकारी शामिल होगी; नीति का उल्लंघन, सॉफ़्टवेयर पर साइन करने या उसे इंस्टॉल करने से पहले किया जाता है.
def CreateProvenance(self, build_manifest: Mapping[str, Any]):
"""Builder generates and signs provenance given build manifest. Signed JWT is placed
alongside built artifact."""
Chrome के लिए, Google के साइनिंग इन्फ़्रास्ट्रक्चर का इस्तेमाल करके बनाए गए सॉफ़्टवेयर आर्टफ़ैक्ट को साइन करने से पहले, यह नीति, बिल्ड की सुरक्षा से जुड़ी खास शर्तों को पूरा करने के लिए लागू की गई है.
def VerifyProvenance(self, artifact_hash: str, provenance: str):
"""Provenance is verified using a policy engine service before signing an artifact."""
ज़रूरतों को करीब-करीब चार हिस्सों में बांटा गया है:
- सोर्स कंट्रोल: यह बिल्ड में मौजूद डेटा को सुरक्षित रखता है.
- बिल्ड: सोर्स को बाइनरी में बदलने वाली प्रोसेस को सुरक्षित रखता है.
- प्रोवेनेंस: ऐसा सर्टिफ़िकेट जिसमें बिल्ड मेनिफ़ेस्ट मौजूद होता है जिसकी पुष्टि की जा सके.
- नीति: ऐसे नियम जो यह तय करते हैं कि दिया गया आर्टफ़ैक्ट, दिए गए संदर्भ के हिसाब से काम करता है या नहीं.
Chrome और इन्फ़्रास्ट्रक्चर के लिए, सीआई और सीडी प्रोसेस के तहत, नीति को लागू करने से जुड़ी जांच लागू करना ने हमें यह सत्यापित करने में सक्षम बनाया है कि कोड और कॉन्फ़िगरेशन, सुरक्षा के तय मानकों को पूरा करते हों. यह एक अहम कंट्रोल है, जिसका इस्तेमाल क्षमता को सीमित करने के लिए किया जाता है नुकसान पहुंचाने वाले इनसाइडर या हैक किए गए इनसाइडर खाते की उस सॉफ़्टवेयर को संशोधित करने के लिए जिन्हें हम उपयोगकर्ताओं में वितरित करते है.