GCP - Cloud Build Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud Build, yazılım derleme ve dağıtım süreçlerini otomatikleştiren yönetilen bir CI/CD platformudur, kaynak kodu depoları ile entegre olur ve geniş bir programlama dili yelpazesini destekler. Geliştiricilerin kodu otomatik olarak derlemesine, test etmesine ve dağıtmasına olanak tanırken, derleme adımlarını ve iş akışlarını özelleştirme esnekliği sağlar.
Her Cloud Build Tetikleyicisi, bir Cloud Repository ile ilişkilidir veya doğrudan bir dış depo ile bağlantılıdır (Github, Bitbucket ve Gitlab).
Buradan veya Cloud Repositories'ten Github/Bitbucket token'ını çalmanın bir yolunu göremedim çünkü repo indirildiğinde https://source.cloud.google.com/ URL'si üzerinden erişiliyor ve Github istemci tarafından erişilmiyor.
Cloud Build, aşağıdaki durumlarda tetiklenebilir:
Bir dala itme: Dalı belirtin
Yeni bir etiket itme: Etiketi belirtin
Pull request: PR'yi alan dalı belirtin
Manuel Çağrı
Pub/Sub mesajı: Konuyu belirtin
Webhook olayı: HTTPS URL'si açılacak ve istek bir gizli anahtar ile kimlik doğrulaması yapılmalıdır
3 seçenek vardır:
İcra edilecek komutları belirten bir yaml/json. Genellikle: /cloudbuild.yaml
Web konsolunda ve cli'de “inline” olarak belirtilebilecek tek seçenek
En yaygın seçenek
Kimlik doğrulaması yapılmamış erişim için ilgili
Bir Dockerfile oluşturmak için
Bir Buildpack oluşturmak için
Hizmet Hesabı cloud-platform
kapsamına sahiptir, bu nedenle tüm ayrıcalıkları kullanabilir. Eğer hiçbir SA belirtilmezse (örneğin gönderim yaparken) varsayılan SA <proj-number>@cloudbuild.gserviceaccount.com
kullanılacaktır.
Varsayılan olarak hiçbir izin verilmez ama bazılarını vermek oldukça kolaydır:
Cloud Build'in derleme yürütmeleri için onay gerektirecek şekilde yapılandırılması mümkündür (varsayılan olarak devre dışı).
Tetikleyici PR olduğunda, çünkü herkes kamu depolarına PR yapabilir, herhangi bir PR ile tetikleyicinin yürütülmesine izin vermek çok tehlikeli olurdu. Bu nedenle, varsayılan olarak, yürütme yalnızca sahipler ve işbirlikçiler için otomatik olacaktır, ve diğer kullanıcıların PR'leri ile tetikleyiciyi yürütmek için bir sahip veya işbirlikçi /gcbrun
yorumunu yapmalıdır.
Bağlantılar aşağıdakiler üzerinden oluşturulabilir:
GitHub: Github token'ı almak için izinler isteyen bir OAuth istemi gösterecektir ve bu token Gizli Yöneticisi içinde saklanacaktır.
GitHub Enterprise: Bir GithubApp yüklemesi istenecektir. GitHub Enterprise sunucunuzdan bir kimlik doğrulama token'ı oluşturulacak ve bu proje içinde bir Gizli Yöneticisi sırrı olarak saklanacaktır.
GitLab / Enterprise: API erişim token'ını ve Okuma API erişim token'ını sağlamanız gerekir ve bunlar Gizli Yöneticisi içinde saklanacaktır.
Bir bağlantı oluşturulduğunda, bunu Github hesabının erişim sağladığı depoları bağlamak için kullanabilirsiniz.
Bu seçenek aşağıdaki buton aracılığıyla mevcuttur:
Bu yöntemle bağlantılı depolar yalnızca 2. nesil Tetikleyicilerde mevcuttur.
Bu, bir bağlantı
ile aynı değildir. Bu, Github veya Bitbucket deposuna erişim elde etmenin farklı yollarını sağlar ancak bir bağlantı nesnesi oluşturmaz, ancak bir depo nesnesi (1. nesil) oluşturur.
Bu seçenek aşağıdaki buton aracılığıyla mevcuttur:
Bazen Cloud Build, tetikleyici için dosyaları saklamak üzere yeni bir depolama alanı oluşturacaktır. Bu, örneğin GCP'nin sunduğu örnekte olduğu gibi gerçekleşir:
Bir security-devbox_cloudbuild adlı Depolama kovası, kullanılacak dosyaların bulunduğu bir .tgz
dosyasını depolamak için oluşturulmuştur.
Gcloud'u cloud build içinde kurun:
Build yapılandırmalarında ve günlüklerde hassas bilgiler bulabilirsiniz.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)