GCP - Cloud Build Enum
Temel Bilgiler
Google Cloud Build, yazılım derleme ve sürüm süreçlerini otomatikleştiren, kaynak kod depolarıyla entegre olan ve geniş bir programlama dilini destekleyen bir yönetilen CI/CD platformudur. Geliştiricilere kodu otomatik olarak derleme, test etme ve dağıtma imkanı sunarken derleme adımlarını ve iş akışlarını özelleştirmelerine olanak tanır.
Her Cloud Build Tetikleyicisi, bir Cloud Deposu ile ilişkilidir veya harici bir depo ile doğrudan bağlantılıdır (Github, Bitbucket ve Gitlab).
Buradan veya Cloud Deposolarından Github/Bitbucket belirteci çalmak için herhangi bir yol göremedim çünkü depo indirildiğinde https://source.cloud.google.com/ URL'si üzerinden erişilir ve Github istemci tarafından erişilmez.
Olaylar
Cloud Build, şu durumlarda tetiklenebilir:
Bir şubeye itme: Şubeyi belirtin
Yeni bir etiket itme: Etiketi belirtin
Çekme isteği: PR'yi alan şubeyi belirtin
Manuel Çağrı
Pub/Sub mesajı: Konuyu belirtin
Webhook olayı: Bir HTTPS URL'si açığa çıkaracak ve istek bir sırla kimlik doğrulaması yapmalıdır
Yürütme
3 seçenek vardır:
Yürütülecek komutları belirten bir yaml/json. Genellikle:
/cloudbuild.yaml
Web konsolunda ve cli'de "içe" belirtilebilecek tek seçenek
En yaygın seçenek
Kimlik doğrulamasız erişim için ilgili
Derlemek için bir Dockerfile
Derlemek için bir Buildpack
SA İzinleri
Hizmet Hesabı, cloud-platform
kapsamına sahiptir, bu nedenle tüm ayrıcalıkları kullanabilir. SA belirtilmediğinde (örneğin, gönderme yapılırken) varsayılan SA <proj-numarası>@cloudbuild.gserviceaccount.com
kullanılacaktır.
Varsayılan olarak hiçbir izin verilmez ancak bazı izinler vermek oldukça kolaydır:
Onaylar
Bir Cloud Build'in derleme yürütümleri için onay gerektirmesi mümkündür (varsayılan olarak devre dışı bırakılmıştır).
PR Onayları
Tetikleyici PR olduğunda herkesin genel depolara PR yapabileceği için sadece herhangi bir PR ile tetikleyicinin yürütülmesine izin vermek çok tehlikeli olabilir. Bu nedenle, varsayılan olarak yürütme yalnızca sahipler ve işbirlikçiler için otomatiktir ve diğer kullanıcıların PR'leri ile tetikleyiciyi yürütmek için bir sahip veya işbirlikçinin /gcbrun
yorum yapması gerekir.
Bağlantılar ve Depolar
Bağlantılar şunlar üzerinden oluşturulabilir:
GitHub: Github belirteci almak için izin isteyen bir OAuth iletişim kutusu gösterecektir ve bu belirteç Secret Manager içinde saklanacaktır.
GitHub Enterprise: Bir GithubApp yüklemek için istekte bulunacaktır. GitHub Enterprise ana bilgisayarınızdan bir kimlik doğrulama belirteci oluşturulacak ve bu proje içinde bir Secret Manager sırrı olarak saklanacaktır.
GitLab / Enterprise: API erişim belirteci ve Okuma API erişim belirteci sağlamanız gerekecek ve bunlar Secret Manager içinde saklanacaktır.
Bir bağlantı oluşturulduğunda, Github hesabının erişimine sahip olduğu depoları bağlamak için kullanabilirsiniz.
Bu seçenek şu düğme aracılığıyla kullanılabilir:
Bu yöntemle bağlanan depoların yalnızca 2. nesil kullanarak Tetikleyicilerde mevcut olduğunu unutmayın.
Bir Depoyu Bağla
Bu bir bağlantı
ile aynı değildir. Bu, erişim sağlamanın farklı yollarını sağlar Github veya Bitbucket depolarına ancak bir bağlantı nesnesi oluşturmaz, ancak bir depo nesnesi oluşturur (1. nesil).
Bu seçenek şu düğme aracılığıyla kullanılabilir:
Depolama
Bazen Cloud Build, tetikleyici için dosyaları saklamak için yeni bir depolama oluşturacaktır. Bu örneğin, GCP'nin sunduğu örnekte olduğu gibi olur:
Kabuk Al
Kullanılacak dosyaları depolamak için security-devbox_cloudbuild adında bir depolama kovası oluşturulmuştur.
Cloud Build içinde gcloud'u yükleyin:
Sıralama
Yapılandırma ve günlüklerde hassas bilgiler bulabilirsiniz.
Yetki Yükseltme
GCP - Cloudbuild PrivescKimlik Doğrulamasız Erişim
GCP - Cloud Build Unauthenticated EnumSaldırı Sonrası Aşama
GCP - Cloud Build Post ExploitationLast updated