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