GCP - Artifact Registry Enum

Support HackTricks

Basic Information

Google Cloud Artifact Registry๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๊ด€๋ฆฌ, ์ €์žฅ ๋ฐ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ Docker ์ด๋ฏธ์ง€, Maven, npm ํŒจํ‚ค์ง€ ๋ฐ ๊ธฐํƒ€ ์œ ํ˜•์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ƒ์„ฑ๋œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Artifact Registry์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ํ†ตํ•ฉ ์ €์žฅ์†Œ: ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ง€์›ํ•˜์—ฌ Docker ์ด๋ฏธ์ง€, ์–ธ์–ด ํŒจํ‚ค์ง€(์˜ˆ: Java์˜ Maven, Node.js์˜ npm) ๋ฐ ๊ธฐํƒ€ ์œ ํ˜•์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์œ„ํ•œ ๋‹จ์ผ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด ์ผ๊ด€๋œ ์ ‘๊ทผ ์ œ์–ด ๋ฐ ๋ชจ๋“  ์•„ํ‹ฐํŒฉํŠธ์— ๋Œ€ํ•œ ํ†ตํ•ฉ๋œ ๋ทฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  2. ์™„์ „ ๊ด€๋ฆฌํ˜•: ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค๋กœ์„œ ๊ธฐ๋ณธ ์ธํ”„๋ผ, ํ™•์žฅ์„ฑ ๋ฐ ๋ณด์•ˆ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ ์ง€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

  3. ์„ธ๋ถ„ํ™”๋œ ์ ‘๊ทผ ์ œ์–ด: Google Cloud์˜ Identity and Access Management (IAM)์™€ ํ†ตํ•ฉ๋˜์–ด ์ €์žฅ์†Œ์—์„œ ์•„ํ‹ฐํŒฉํŠธ์— ์ ‘๊ทผ, ์—…๋กœ๋“œ ๋˜๋Š” ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ์ง€๋ฆฌ์  ๋ณต์ œ: ์—ฌ๋Ÿฌ ์ง€์—ญ์— ๊ฑธ์ณ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์–ด ๋‹ค์šด๋กœ๋“œ ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  5. Google Cloud ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ: Cloud Build, Kubernetes Engine ๋ฐ Compute Engine๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ GCP ์„œ๋น„์Šค์™€ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜์—ฌ Google Cloud ์ƒํƒœ๊ณ„ ๋‚ด์—์„œ ์ด๋ฏธ ์ž‘์—… ์ค‘์ธ ํŒ€์—๊ฒŒ ํŽธ๋ฆฌํ•œ ์„ ํƒ์ด ๋ฉ๋‹ˆ๋‹ค.

  6. ๋ณด์•ˆ: ์ €์žฅ๋œ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์•ˆ์ „ํ•˜๊ณ  ์•Œ๋ ค์ง„ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กœ์šด์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ทจ์•ฝ์  ์Šค์บ” ๋ฐ ์ปจํ…Œ์ด๋„ˆ ๋ถ„์„๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Formats and Modes

์ƒˆ๋กœ์šด ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ €์žฅ์†Œ์˜ ํ˜•์‹/์œ ํ˜•์„ Docker, Maven, npm, Python ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ‘œ์ค€ ์ €์žฅ์†Œ: GCP์— ์ž์‹ ์˜ ์•„ํ‹ฐํŒฉํŠธ(์˜ˆ: Docker ์ด๋ฏธ์ง€, Maven ํŒจํ‚ค์ง€)๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ 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>

๊ถŒํ•œ ์ƒ์Šน

์ธ์ฆ๋˜์ง€ ์•Š์€ ์ ‘๊ทผ

์‚ฌํ›„ ํ™œ์šฉ

์ง€์†์„ฑ

HackTricks ์ง€์›ํ•˜๊ธฐ

Last updated