GCP - Cloud Build Enum
Основна інформація
Google Cloud Build - це керована платформа CI/CD, яка автоматизує процеси збірки програмного забезпечення та випуску, інтегруючись з репозиторіями вихідного коду та підтримуючи широкий спектр мов програмування. Вона дозволяє розробникам автоматично збирати, тестувати та розгортати код, надаючи гнучкість для налаштування кроків збірки та робочих процесів.
Кожен Cloud Build Trigger пов'язаний з Cloud Repository або безпосередньо підключений до зовнішнього репозиторію (Github, Bitbucket та Gitlab).
Я не зміг знайти спосіб викрасти токен Github/Bitbucket звідси або з Cloud Repositories, тому що коли репозиторій завантажується, він доступний через URL https://source.cloud.google.com/ і Github не доступний клієнтом.
Події
Cloud Build може бути запущений, якщо:
Push до гілки: Вкажіть гілку
Push нового тегу: Вкажіть тег
Pull request: Вкажіть гілку, яка отримує PR
Ручний виклик
Повідомлення Pub/Sub: Вкажіть тему
Подія вебхука: Буде відкрито HTTPS URL, і запит повинен бути автентифікований за допомогою секрету
Виконання
Є 3 варіанти:
yaml/json вказуючи команди для виконання. Зазвичай:
/cloudbuild.yaml
Єдиний, який можна вказати "inline" у веб-консолі та в cli
Найпоширеніший варіант
Важливо для неавтентифікованого доступу
Dockerfile для збірки
Buildpack для збірки
Права SA
Обліковий запис служби має cloud-platform
scope, тому він може використовувати всі привілеї. Якщо не вказано обліковий запис служби (наприклад, при виконанні submit), буде використано обліковий запис служби за замовчуванням <proj-number>@cloudbuild.gserviceaccount.com
.
За замовчуванням права не надаються, але їх досить легко надати:
Затвердження
Можливо налаштувати Cloud Build для вимоги затверджень для виконання збірок (за замовчуванням вимкнено).
Затвердження PR
Коли тригером є PR, оскільки будь-хто може виконувати PR до публічних репозиторіїв, було б дуже небезпечно просто дозволити виконання тригера з будь-яким PR. Тому за замовчуванням виконання буде автоматичним лише для власників та співробітників, і для виконання тригера з PR інших користувачів власник або співробітник повинен прокоментувати /gcbrun
.
Підключення та репозиторії
Підключення можуть бути створені через:
GitHub: Буде показано OAuth запит на дозвіл отримати токен Github, який буде збережено в Secret Manager.
GitHub Enterprise: Буде запропоновано встановити GithubApp. Буде створено токен автентифікації з вашого хоста GitHub Enterprise і збережено в цьому проекті як секрет у Secret Manager.
GitLab / Enterprise: Вам потрібно надати токен доступу до API та токен доступу до Read API, які будуть збережені в Secret Manager.
Після створення підключення ви можете використовувати його для зв'язування репозиторіїв, до яких має доступ обліковий запис Github.
Ця опція доступна через кнопку:
Зверніть увагу, що репозиторії, підключені цим методом, доступні лише в тригерах, що використовують 2-ге покоління.
Підключити репозиторій
Це не те саме, що підключення
. Це дозволяє різні способи отримати доступ до репозиторію Github або Bitbucket, але не створює об'єкт підключення, але створює об'єкт репозиторію (1-го покоління).
Ця опція доступна через кнопку:
Зберігання
Іноді Cloud Build буде створювати нове сховище для зберігання файлів для тригера. Це відбувається, наприклад, у прикладі, який пропонує GCP:
Бакет Storage під назвою security-devbox_cloudbuild створено для зберігання .tgz
з файлами, які будуть використовуватися.
Отримати shell
Встановлення gcloud всередині cloud build:
Перерахування
Ви можете знайти чутливу інформацію в конфігураціях та журналах збірок.
Підвищення привілеїв
GCP - Cloudbuild PrivescНеавтентифікований доступ
GCP - Cloud Build Unauthenticated EnumПостексплуатація
GCP - Cloud Build Post ExploitationLast updated