# GCP - Artefak Registrasie Enum

{{#include ../../../banners/hacktricks-training.md}}

## Basiese Inligting

Google Cloud Artefak Registrasie is 'n volledig bestuurde diens wat jou toelaat om jou **sagteware artefakte te bestuur, te stoor en te beveilig**. Dit is essensieel 'n repository vir **die stoor van bou afhanklikhede**, soos **Docker** beelde, **Maven**, npm pakkette, en ander tipes artefakte. Dit word **gewoonlik in CI/CD pype** gebruik om die artefakte wat tydens die sagteware ontwikkelingsproses geproduseer word, te stoor en te versioneer.

Belangrike kenmerke van Artefak Registrasie sluit in:

1. **Gekonsolideerde Repository**: Dit ondersteun **meerdere tipes artefakte**, wat jou toelaat om 'n enkele repository vir Docker beelde, taal pakkette (soos Java se Maven, Node.js se npm), en ander tipes artefakte te hê, wat konsekwente toegangbeheer en 'n gekonsolideerde uitsig oor al jou artefakte moontlik maak.
2. **Volledig Bestuurde**: As 'n bestuurde diens, sorg dit vir die onderliggende infrastruktuur, skaal, en sekuriteit, wat die onderhoudsbelasting vir gebruikers verminder.
3. **Fyn-gegradeerde Toegangbeheer**: Dit integreer met Google Cloud se Identiteit en Toegang Bestuur (IAM), wat jou toelaat om te definieer wie toegang kan hê, artefakte kan oplaai of aflaai in jou repositories.
4. **Geo-replikaasie**: Dit ondersteun die replikaasie van artefakte oor meerdere streke, wat die spoed van aflaaie verbeter en beskikbaarheid verseker.
5. **Integrasie met Google Cloud Dienste**: Dit werk naatloos saam met **ander GCP dienste soos Cloud Build, Kubernetes Engine, en Compute Engine**, wat dit 'n gerieflike keuse maak vir spanne wat reeds binne die Google Cloud ekosisteem werk.
6. **Sekuriteit**: Bied kenmerke soos **kwesbaarheid skandering en houer analise** om te help verseker dat die gestoor artefakte veilig is en vry van bekende sekuriteitskwessies.

### Formate en Modusse

Wanneer jy 'n nuwe repository skep, is dit moontlik om **die formaat/tipes** van die repository onder verskeie soos Docker, Maven, npm, Python... te **kies** en die modus wat gewoonlik een van hierdie drie kan wees:

- **Standaard Repository**: Standaard modus vir **die stoor van jou eie artefakte** (soos Docker beelde, Maven pakkette) direk in GCP. Dit is veilig, skaalbaar, en integreer goed binne die Google Cloud ekosisteem.
- **Afgeleë Repository** (indien beskikbaar): Funksioneer as 'n proxy vir **die kas van artefakte van eksterne**, openbare repositories. Dit help om probleme van afhanklikhede wat opwaarts verander te voorkom en verminder latensie deur gereeld toegankelijke artefakte te kas.
- **Virtuele Repository** (indien beskikbaar): Bied 'n **gekonsoleerde koppelvlak om toegang te verkry tot meerdere (standaard of afgeleë) repositories** deur 'n enkele eindpunt, wat kliënt-kant konfigurasie en toegangbeheer vir artefakte wat oor verskeie repositories versprei is, vereenvoudig.
- Vir 'n virtuele repository sal jy **repositories moet kies en hulle 'n prioriteit gee** (die repo met die grootste prioriteit sal gebruik word).
- Jy kan **afgeleë en standaard** repositories in 'n **virtuele** een meng, as die **prioriteit** van die **afgeleë** groter is as die standaard, **pakkette van afgeleë (PyPi byvoorbeeld) sal gebruik word**. Dit kan lei tot 'n **Afhanklikheid Verwarring.**

Let daarop dat in die **Afgeleë weergawe van Docker** dit moontlik is om 'n gebruikersnaam en token te gee om toegang tot Docker Hub te verkry. Die **token word dan in die Secret Manager gestoor**.

### Enkripsie

Soos verwag, word 'n Google-bestuurde sleutel standaard gebruik, maar 'n Klant-bestuurde sleutel kan aangedui word (CMEK).

### Opruim Beleide

- **Verwyder artefakte:** Artefakte sal **verwyder word volgens opruim beleid** kriteria.
- **Droë loop:** (Standaard een) Artefakte sal **nie verwyder word** nie. Opruim beleide sal geëvalueer word, en toets verwyder gebeurtenisse sal na Cloud Audit Logging gestuur word.

### Kwesbaarheid Skandering

Dit is moontlik om die **kwesbaarheid skandeerder** te aktiveer wat vir kwesbaarhede binne **houer beelde** sal kyk.

### Enumerasie
```bash
# 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>
```
### Privilege Escalation

{{#ref}}
../gcp-privilege-escalation/gcp-artifact-registry-privesc.md
{{#endref}}

### Unauthenticated Access

{{#ref}}
../gcp-unauthenticated-enum-and-access/gcp-artifact-registry-unauthenticated-enum.md
{{#endref}}

### Post-Exploitation

{{#ref}}
../gcp-post-exploitation/gcp-artifact-registry-post-exploitation.md
{{#endref}}

### Persistensie

{{#ref}}
../gcp-persistence/gcp-artifact-registry-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
