GCP - Artifact Registry Enum

Підтримайте HackTricks

Основна інформація

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

Основні функції Artifact Registry включають:

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

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

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

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

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

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

Формати та режими

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

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

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

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

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

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

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

Шифрування

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

Політики очищення

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

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

Сканування вразливостей

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

Нумерація

# 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
Підтримайте HackTricks

Last updated