GCP - Artifact Registry Enum

Wesprzyj HackTricks

Podstawowe informacje

Google Cloud Artifact Registry to w pełni zarządzana usługa, która pozwala zarządzać, przechowywać i zabezpieczać artefakty oprogramowania. Jest to w zasadzie repozytorium do przechowywania zależności budowania, takich jak obrazy Docker, Maven, paczki npm i inne rodzaje artefaktów. Jest często używane w potokach CI/CD do przechowywania i wersjonowania artefaktów produkowanych podczas procesu tworzenia oprogramowania.

Główne cechy Artifact Registry to:

  1. Repozytorium Jednolite: Obsługuje wiele rodzajów artefaktów, umożliwiając posiadanie jednego repozytorium na obrazy Docker, paczki językowe (takie jak Maven dla Javy, npm dla Node.js) i inne rodzaje artefaktów, umożliwiając spójne kontrole dostępu i jednolite widoki wszystkich artefaktów.

  2. W pełni zarządzane: Jako usługa zarządzana, zajmuje się infrastrukturą, skalowaniem i zabezpieczeniami, zmniejszając nadmiar konserwacji dla użytkowników.

  3. Kontrola dostępu o drobnej granulacji: Integruje się z Zarządzaniem Tożsamością i Dostępem Google Cloud (IAM), umożliwiając zdefiniowanie, kto może uzyskać dostęp, przesłać lub pobrać artefakty z twoich repozytoriów.

  4. Georeplikacja: Obsługuje replikację artefaktów w wielu regionach, poprawiając prędkość pobierania i zapewniając dostępność.

  5. Integracja z Usługami Google Cloud: Działa bezproblemowo z innymi usługami GCP, takimi jak Cloud Build, Kubernetes Engine i Compute Engine, co czyni go wygodnym wyborem dla zespołów już pracujących w ekosystemie Google Cloud.

  6. Bezpieczeństwo: Oferuje funkcje takie jak skanowanie podatności i analiza kontenerów, aby zapewnić, że przechowywane artefakty są bezpieczne i wolne od znanych problemów związanych z bezpieczeństwem.

Formaty i Tryby

Podczas tworzenia nowego repozytorium można wybrać format/typ repozytorium spośród kilku, takich jak Docker, Maven, npm, Python... oraz tryb, który zazwyczaj może być jednym z tych trzech:

  • Repozytorium Standardowe: Tryb domyślny do przechowywania własnych artefaktów (takich jak obrazy Docker, paczki Maven) bezpośrednio w GCP. Jest bezpieczny, skalowalny i dobrze integruje się w ekosystem Google Cloud.

  • Repozytorium Zdalne (jeśli dostępne): Działa jako proxy do buforowania artefaktów z zewnętrznych, publicznych repozytoriów. Pomaga zapobiegać problemom wynikającym z zmian w zależnościach w górze i redukuje opóźnienia poprzez buforowanie często odwiedzanych artefaktów.

  • Repozytorium Wirtualne (jeśli dostępne): Zapewnia zjednoczony interfejs dostępu do wielu (standardowych lub zdalnych) repozytoriów poprzez pojedynczy punkt końcowy, upraszczając konfigurację po stronie klienta i zarządzanie dostępem do artefaktów rozproszonych w różnych repozytoriach.

  • Dla repozytorium wirtualnego będziesz musiał wybrać repozytoria i nadać im priorytet (repozytorium z najwyższym priorytetem będzie używane).

  • Możesz mieszać zdalne i standardowe repozytoria w wirtualnym jednym, jeśli priorytet zdalnego jest większy niż standardowego, paczki z zdalnego (np. PyPi) będą używane. Może to prowadzić do Konfuzji Zależności.

Zauważ, że w Zdalnej wersji Docker można podać nazwę użytkownika i token do dostępu do Docker Hub. Token jest następnie przechowywany w Menedżerze Sekretów.

Szyfrowanie

Jak można się spodziewać, domyślnie używany jest klucz zarządzany przez Google, ale można wskazać klucz zarządzany przez klienta (CMEK).

Polityki Czyszczenia

  • Usuń artefakty: Artefakty zostaną usunięte zgodnie z kryteriami polityki czyszczenia.

  • Symulacja: (Domyślna) Artefakty nie zostaną usunięte. Polityki czyszczenia zostaną ocenione, a testowe zdarzenia usuwania zostaną wysłane do rejestrowania audytu Cloud.

Skanowanie Podatności

Możliwe jest włączenie skanera podatności, który sprawdzi podatności wewnątrz obrazów kontenerów.

Wymienianie

# 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>

Eskalacja uprawnień

GCP - Artifact Registry Privesc

Nieuwierzytelniony dostęp

GCP - Artifact Registry Unauthenticated Enum

Post-Eksploatacja

GCP - Artifact Registry Post Exploitation

Trwałość

GCP - Artifact Registry Persistence
Wsparcie dla HackTricks

Last updated