GCP - Cloud Build Enum
मूल जानकारी
Google Cloud Build एक प्रबंधित CI/CD प्लेटफ़ॉर्म है जो सॉफ़्टवेयर निर्माण और रिलीज प्रक्रियाओं को स्वचालित करता है, स्रोत कोड भंडारों के साथ एकीकरण करता है और विभिन्न प्रोग्रामिंग भाषाओं का समर्थन करता है। यह डेवलपरों को कोड को स्वचालित रूप से निर्माण, परीक्षण और डिप्लॉय करने की अनुमति देता है जबकि निर्माण चरणों और कार्यप्रवाहों को अनुकूलित करने की लचीलाता प्रदान करता है।
प्रत्येक Cloud Build Trigger एक Cloud Repository से संबंधित है या सीधे एक बाह्य रिपॉजिटरी (Github, Bitbucket और Gitlab) से कनेक्ट किया गया है।
मैंने यहाँ से या Cloud Repositories से Github/Bitbucket टोकन चुराने का कोई तरीका नहीं देखा क्योंकि जब रेपो डाउनलोड किया जाता है तो इसे https://source.cloud.google.com/ URL के माध्यम से एक्सेस किया जाता है और Github क्लाइंट द्वारा एक्सेस नहीं किया जाता है।
घटनाएँ
Cloud Build को निम्नलिखित की गई स्थितियों में ट्रिगर किया जा सकता है:
एक शाखा में पुश: शाखा निर्दिष्ट करें
नया टैग पुश: टैग निर्दिष्ट करें
पुल अनुरोध: पीआर प्राप्त करने वाली शाखा निर्दिष्ट करें
मैन्युअल आवाहन
Pub/Sub संदेश: विषय निर्दिष्ट करें
वेबहुक घटना: एक HTTPS URL उजागर करेगा और अनुरोध को एक गुप्त से प्रमाणित करना होगा
क्रियान्वयन
3 विकल्प हैं:
एक yaml/json निर्देशित करने वाले कमांड को निष्पादित करना। सामान्यत:
/cloudbuild.yaml
केवल एक जो वेब कांसोल और cli में "इनलाइन" निर्दिष्ट किया जा सकता है
सबसे सामान्य विकल्प
अनधिकृत एक्सेस के लिए महत्वपूर्ण
एक Dockerfile को निर्माण करने के लिए
एक Buildpack को निर्माण करने के लिए
SA अनुमतियाँ
सेवा खाता में cloud-platform
scope है, इसलिए यह सभी विशेषाधिकारों का उपयोग कर सकता है। यदि कोई SA निर्दिष्ट नहीं किया गया है (जैसे कि सबमिट करते समय) तो डिफ़ॉल्ट SA <proj-number>@cloudbuild.gserviceaccount.com
का उपयोग होगा।**
डिफ़ॉल्ट रूप से कोई अनुमतियाँ नहीं दी गई हैं लेकिन इसे कुछ देना बहुत आसान है:
मंजूरी
एक Cloud Build को निर्माण क्रियाओं के लिए मंजूरी की आवश्यकता को कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से अक्षम है)।
पीआर मंजूरियाँ
जब ट्रिगर पीआर होता है क्योंकि किसी भी व्यक्ति को सार्वजनिक रिपॉजिटरी में पीआर करने की अनुमति है, तो किसी भी पीआर के साथ ट्रिगर का केवल स्वामी और सहयोगी द्वारा स्वचालित होना बहुत खतरनाक हो सकता है। इसलिए, डिफ़ॉल्ट रूप से, केवल मालिकों और सहयोगियों के लिए क्रियान्वित होगा, और अन्य उपयोगकर्ताओं की पीआर के साथ ट्रिगर को निष्पादित करने के लिए एक मालिक या सहयोगी को /gcbrun
टिप्पणी करनी होगी।
कनेक्शन और रिपॉजिटरी
कनेक्शन निम्नलिखित के माध्यम से बनाए जा सकते हैं:
GitHub: यह एक OAuth प्रॉम्प्ट दिखाएगा जिसमें अनुमतियाँ मांगी जाएंगी ताकि एक Github टोकन प्राप्त किया जा सके जो सीक्रेट मैनेजर में स्टोर किया जाएगा।
GitHub Enterprise: यह एक GithubApp स्थापित करने के लिए कहेगा। आपके GitHub Enterprise होस्ट से एक प्रमाणीकरण टोकन बनाया जाएगा और इस परियोजना में एक सीक्रेट मैनेजर सीक्रेट के रूप में स्टोर किया जाएगा।
GitLab / Enterprise: आपको API एक्सेस टोकन और पढ़ने के लिए API एक्सेस टोकन प्रदान करना होगा जो सीक्रेट मैनेजर में स्टोर किया जाएगा।
एक कनेक्शन उत्पन्न होने के बाद, आप इसे उपयोग कर सकते हैं जिसमें Github खाते का एक्सेस हैं।
यह विकल्प बटन के माध्यम से उपलब्ध है:
ध्यान दें कि इस तरीके से कनेक्ट किए गए रिपॉजिटरी केवल 2वीं पीढ़ी का उपयोग करने वाले ट्रिगर में ही उपलब्ध हैं।
रिपॉजिटरी कनेक्ट करें
यह कनेक्शन
के समान नहीं है। यह एक गिटहब या बिटबकेट रिपॉजिटरी तक पहुंचने के विभिन्न तरीके हैं लेकिन **कनेक्शन ऑब्जेक्ट उत्पन्न नहीं करता है, लेकिन यह पहली पीढ़ी का रिपॉजिटरी ऑब्ज
एक स्टोरेज बकेट नामक security-devbox_cloudbuild बनाया गया है ताकि इसमें उपयोग के लिए फ़ाइलों के साथ .tgz
स्टोर किया जा सके।
शैल को प्राप्त करें
ग्क्लाउड को स्थापित करें क्लाउड बिल्ड के अंदर:
जांच
आप बिल्ड कॉन्फ़िग और लॉग में संवेदनशील जानकारी पा सकते हैं।
विशेषाधिकार उन्नयन
pageGCP - Cloudbuild Privescअप्रमाणित पहुंच
pageGCP - Cloud Build Unauthenticated Enumपोस्ट एक्सप्लोइटेशन
pageGCP - Cloud Build Post ExploitationLast updated