GCP - Artifact Registry Enum

Support HackTricks

Basic Information

Google Cloud Artifact Registry - це повністю керована служба, яка дозволяє вам управляти, зберігати та захищати ваші програмні артефакти. Це, по суті, репозиторій для зберігання залежностей збірки, таких як Docker образи, Maven, npm пакети та інші типи артефактів. Він зазвичай використовується в CI/CD конвеєрах для зберігання та версій артефактів, що виробляються під час процесу розробки програмного забезпечення.

Ключові особливості Artifact Registry включають:

  1. Уніфікований репозиторій: Він підтримує декілька типів артефактів, що дозволяє мати один репозиторій для Docker образів, мовних пакетів (таких як Maven для Java, npm для Node.js) та інших типів артефактів, що забезпечує послідовний контроль доступу та уніфікований вигляд для всіх ваших артефактів.

  2. Повністю керований: Як керована служба, вона піклується про підлягаючу інфраструктуру, масштабування та безпеку, зменшуючи витрати на обслуговування для користувачів.

  3. Детальний контроль доступу: Інтегрується з управлінням ідентифікацією та доступом (IAM) Google Cloud, що дозволяє вам визначати, хто може отримувати доступ, завантажувати або завантажувати артефакти у ваших репозиторіях.

  4. Гео-реплікація: Підтримує реплікацію артефактів через кілька регіонів, покращуючи швидкість завантажень та забезпечуючи доступність.

  5. Інтеграція з сервісами Google Cloud: Працює безперешкодно з іншими сервісами GCP, такими як Cloud Build, Kubernetes Engine та Compute Engine, що робить його зручним вибором для команд, які вже працюють в екосистемі Google Cloud.

  6. Безпека: Пропонує функції, такі як сканування вразливостей та аналіз контейнерів, щоб допомогти забезпечити, що збережені артефакти є безпечними та вільними від відомих проблем безпеки.

Formats and Modes

Коли ви створюєте новий репозиторій, ви можете вибрати формат/тип репозиторію серед кількох, таких як Docker, Maven, npm, Python... та режим, який зазвичай може бути одним з цих трьох:

  • Стандартний репозиторій: Режим за замовчуванням для зберігання ваших власних артефактів (таких як Docker образи, пакети Maven) безпосередньо в GCP. Це безпечно, масштабовано і добре інтегрується в екосистему Google Cloud.

  • Віддалений репозиторій (якщо доступно): Діє як проксі для кешування артефактів з зовнішніх, публічних репозиторіїв. Це допомагає запобігти проблемам, пов'язаним зі зміною залежностей вгору по ланцюгу, і зменшує затримки, кешуючи часто використовувані артефакти.

  • Віртуальний репозиторій (якщо доступно): Надає уніфікований інтерфейс для доступу до кількох (стандартних або віддалених) репозиторіїв через одну точку доступу, спрощуючи конфігурацію на стороні клієнта та управління доступом для артефактів, розподілених по різних репозиторіях.

  • Для віртуального репозиторію вам потрібно вибрати репозиторії та надати їм пріоритет (репозиторій з найбільшим пріоритетом буде використовуватися).

  • Ви можете поєднувати віддалені та стандартні репозиторії в віртуальному, якщо пріоритет віддаленого є більшим, ніж стандартний, пакети з віддаленого (наприклад, PyPi) будуть використовуватися. Це може призвести до змішування залежностей.

Зверніть увагу, що в віддаленій версії Docker можливо вказати ім'я користувача та токен для доступу до Docker Hub. Токен потім зберігається в Secret Manager.

Encryption

Як і очікувалося, за замовчуванням використовується ключ, керований Google, але можна вказати ключ, керований клієнтом (CMEK).

Cleanup Policies

  • Видалити артефакти: Артефакти будуть видалені відповідно до критеріїв політики очищення.

  • Сухий запуск: (За замовчуванням) Артефакти не будуть видалені. Політики очищення будуть оцінені, а події тестового видалення надіслані до Cloud Audit Logging.

Vulnerability Scanning

Можливо увімкнути сканер вразливостей, який перевірятиме наявність вразливостей всередині контейнерних образів.

Enumeration

# Get repositories
gcloud artifacts repositories list
gcloud artifacts repositories describe --location <location> <repo-name>
gcloud artifacts versions list --repository=<repo-name> -location <location> --package <package-name>

# Get settings of a repository (example using python but could be other)
gcloud artifacts print-settings python --repository <repo-name> --location <location>

# Get docker images
gcloud artifacts docker images list us-central1-docker.pkg.dev/<proj-name>/<repo-name>

# Get packages (like python and others...)
gcloud artifacts packages list --repository <repo-name> --location <location>

# Get SBOMB artifacts
gcloud artifacts sbom list

# Get vulnerabilities (docker images)
gcloud artifacts vulnerabilities list us-east1-docker.pkg.dev/project123/repository123/someimage@sha256:49765698074d6d7baa82f
gcloud artifacts docker images list-vulnerabilities projects/<proj-name>/locations/<location>/scans/<scan-uuid>

Підвищення Привілеїв

GCP - Artifact Registry Privesc

Неавтентифікований Доступ

GCP - Artifact Registry Unauthenticated Enum

Пост-Експлуатація

GCP - Artifact Registry Post Exploitation

Постійність

GCP - Artifact Registry Persistence
Support HackTricks

Last updated