GCP - Cloud Build Enum
Basic Information
Google Cloud Build एक प्रबंधित CI/CD प्लेटफ़ॉर्म है जो सॉफ़्टवेयर निर्माण और रिलीज़ प्रक्रियाओं को स्वचालित करता है, स्रोत कोड रिपॉजिटरीज़ के साथ एकीकृत होता है और विभिन्न प्रोग्रामिंग भाषाओं का समर्थन करता है। यह डेवलपर्स को कोड को स्वचालित रूप से बनाने, परीक्षण करने और तैनात करने की अनुमति देता है जबकि निर्माण चरणों और वर्कफ़्लोज़ को अनुकूलित करने के लिए लचीलापन प्रदान करता है।
प्रत्येक Cloud Build Trigger एक Cloud Repository से संबंधित होता है या सीधे एक बाहरी रिपॉजिटरी (Github, Bitbucket और Gitlab) से जुड़ा होता है।
मैं यहाँ से या Cloud Repositories से Github/Bitbucket टोकन चुराने का कोई तरीका नहीं देख सका क्योंकि जब रिपॉजिटरी डाउनलोड की जाती है तो इसे https://source.cloud.google.com/ URL के माध्यम से एक्सेस किया जाता है और Github को क्लाइंट द्वारा एक्सेस नहीं किया जाता है।
Events
Cloud Build को निम्नलिखित घटनाओं पर ट्रिगर किया जा सकता है:
Push to a branch: शाखा निर्दिष्ट करें
Push a new tag: टैग निर्दिष्ट करें
Pull request: वह शाखा निर्दिष्ट करें जो PR प्राप्त करती है
Manual Invocation
Pub/Sub message: विषय निर्दिष्ट करें
Webhook event: एक HTTPS URL को उजागर करेगा और अनुरोध को एक गुप्त के साथ प्रमाणित किया जाना चाहिए
Execution
तीन विकल्प हैं:
एक yaml/json कमांड निर्दिष्ट करना जो निष्पादित किया जाना है। आमतौर पर:
/cloudbuild.yaml
केवल एक जिसे वेब कंसोल और cli में "इनलाइन" निर्दिष्ट किया जा सकता है
सबसे आम विकल्प
अप्रमाणित पहुंच के लिए प्रासंगिक
एक Dockerfile बनाने के लिए
एक Buildpack बनाने के लिए
SA Permissions
Service Account के पास cloud-platform
स्कोप है, इसलिए यह सभी विशेषाधिकारों का उपयोग कर सकता है। यदि कोई SA निर्दिष्ट नहीं है (जैसे सबमिट करते समय) तो डिफ़ॉल्ट SA <proj-number>@cloudbuild.gserviceaccount.com
का उपयोग किया जाएगा।
डिफ़ॉल्ट रूप से कोई अनुमति नहीं दी जाती है लेकिन इसे कुछ देना काफी आसान है:
Approvals
Cloud Build को निर्माण निष्पादन के लिए अनुमोदन की आवश्यकता के लिए कॉन्फ़िगर करना संभव है (डिफ़ॉल्ट रूप से अक्षम)।
PR Approvals
जब ट्रिगर PR है क्योंकि कोई भी सार्वजनिक रिपॉजिटरीज़ में PR कर सकता है तो यह बहुत खतरनाक होगा कि किसी भी PR के साथ ट्रिगर के निष्पादन की अनुमति दी जाए। इसलिए, डिफ़ॉल्ट रूप से, निष्पादन केवल मालिकों और सहयोगियों के लिए स्वचालित होगा, और अन्य उपयोगकर्ताओं के PRs के साथ ट्रिगर को निष्पादित करने के लिए एक मालिक या सहयोगी को /gcbrun
टिप्पणी करनी होगी।
Connections & Repositories
कनेक्शन निम्नलिखित पर बनाए जा सकते हैं:
GitHub: यह एक OAuth प्रॉम्प्ट दिखाएगा जो Github टोकन प्राप्त करने की अनुमति मांगेगा जो Secret Manager के अंदर संग्रहीत किया जाएगा।
GitHub Enterprise: यह एक GithubApp स्थापित करने के लिए कहेगा। आपके GitHub Enterprise होस्ट से एक प्रमाणीकरण टोकन बनाया जाएगा और इस प्रोजेक्ट में एक Secret Manager गुप्त के रूप में संग्रहीत किया जाएगा।
GitLab / Enterprise: आपको API एक्सेस टोकन और Read API एक्सेस टोकन प्रदान करने की आवश्यकता है जो Secret Manager में संग्रहीत किया जाएगा।
एक बार कनेक्शन उत्पन्न हो जाने के बाद, आप इसे रिपॉजिटरीज़ को लिंक करने के लिए उपयोग कर सकते हैं जिन तक Github खाते की पहुंच है।
यह विकल्प बटन के माध्यम से उपलब्ध है:
ध्यान दें कि इस विधि से जुड़े रिपॉजिटरीज़ केवल 2nd generation का उपयोग करने वाले ट्रिगर्स में उपलब्ध हैं।
Connect a Repository
यह connection
के समान नहीं है। यह विभिन्न तरीकों से Github या Bitbucket रिपॉजिटरी तक पहुंच प्राप्त करने की अनुमति देता है लेकिन यह एक कनेक्शन ऑब्जेक्ट उत्पन्न नहीं करता है, बल्कि यह एक रिपॉजिटरी ऑब्जेक्ट (1st generation का) उत्पन्न करता है।
यह विकल्प बटन के माध्यम से उपलब्ध है:
Storage
कभी-कभी Cloud Build ट्रिगर के लिए फ़ाइलों को संग्रहीत करने के लिए एक नया स्टोरेज उत्पन्न करेगा। उदाहरण के लिए, यह GCP द्वारा दिए गए उदाहरण में होता है:
एक Storage bucket जिसे security-devbox_cloudbuild कहा जाता है, फाइलों को उपयोग करने के लिए एक .tgz
स्टोर करने के लिए बनाया गया है।
Get shell
Enumeration
आप build configs और logs में संवेदनशील जानकारी पा सकते हैं।
प्रिविलेज एस्केलेशन
GCP - Cloudbuild Privescअनऑथेंटिकेटेड एक्सेस
GCP - Cloud Build Unauthenticated Enumपोस्ट एक्सप्लॉइटेशन
GCP - Cloud Build Post ExploitationLast updated