CMEK๋กœ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” gcloud functions ๋ช…๋ น์–ด๋‚˜ Cloud Functions v2 API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“  ํ•จ์ˆ˜์—์„œ ๊ณ ๊ฐ ๊ด€๋ฆฌ ์•”ํ˜ธํ™” ํ‚ค(CMEK)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์ถฉ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๋™ ์„ค์ •, Autokey ์‚ฌ์šฉ, CMEK ๋ณดํ˜ธ ํ…Œ์ŠคํŠธ ๋“ฑ CMEK์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Run ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

CMEK๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์•”ํ˜ธํ™”๋˜๋Š” Cloud Run Functions ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์—…๋กœ๋“œ๋˜๊ณ  Google์ด Cloud Storage์— ์ €์žฅํ•˜๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜ ์†Œ์Šค ์ฝ”๋“œ
  • ๋‹ค์Œ์„ ํฌํ•จํ•œ ํ•จ์ˆ˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๊ฒฐ๊ณผ
    • ํ•จ์ˆ˜ ์†Œ์Šค ์ฝ”๋“œ๋กœ ๋นŒ๋“œ๋œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€
    • ๋ฐฐํฌ๋˜๋Š” ํ•จ์ˆ˜์˜ ๊ฐ ์ธ์Šคํ„ด์Šค

ํ•จ์ˆ˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ž์ฒด๋Š” ๊ฐ ๋นŒ๋“œ์— ๋Œ€ํ•ด ๊ณ ์œ ํ•˜๊ฒŒ ์ƒ์„ฑ๋œ ์ž„์‹œ ํ‚ค๋กœ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Build์˜ CMEK ๊ทœ์ • ์ค€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๋˜ํ•œ ๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”.

  • ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ ๋˜๋Š” ์ˆ˜์ • ํƒ€์ž„์Šคํƒฌํ”„์™€ ๊ฐ™์€ ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํ‚ค๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • Cloud Run Functions CMEK ๋ณดํ˜ธ๋Š” Google ๊ด€๋ฆฌ Cloud Run Functions ๋ฆฌ์†Œ์Šค์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ์ €์žฅ์†Œ, ๊ณ ๊ฐ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ์ด๋ฒคํŠธ ์ฑ„๋„ ๋˜๋Š” ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณดํ˜ธํ•  ์ฑ…์ž„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

  1. ํ•จ์ˆ˜๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๋‹จ์ผ ๋ฆฌ์ „ ํ‚ค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋Œ€์นญ ์•”ํ˜ธํ™” ํ‚ค ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•œ Artifact Registry ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ํ‚ค์™€ ๋™์ผํ•œ ํ‚ค๋ฅผ Artifact Registry ์ €์žฅ์†Œ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ Google ์ฑ„๋„์— CMEK ์‚ฌ์šฉ ์„ค์ •์— ์„ค๋ช…๋œ ์ถ”๊ฐ€ ์„ค์ • ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์„œ๋น„์Šค ๊ณ„์ •์— ํ‚ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

๋ชจ๋“  ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์„œ๋น„์Šค ๊ณ„์ •์— ํ‚ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Cloud Run Functions ์„œ๋น„์Šค ์—์ด์ „ํŠธ(service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

  • Artifact Registry ์„œ๋น„์Šค ์—์ด์ „ํŠธ(service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)

  • Cloud Storage ์„œ๋น„์Šค ์—์ด์ „ํŠธ (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

  • Cloud Run ์„œ๋น„์Šค ์—์ด์ „ํŠธ(service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)

  • Eventarc ์„œ๋น„์Šค ์—์ด์ „ํŠธ(service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)

์ด๋Ÿฌํ•œ ์„œ๋น„์Šค ๊ณ„์ •์— ํ‚ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๊ฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ‚ค์˜ ์ฃผ ๊ตฌ์„ฑ์›์œผ๋กœ ์ถ”๊ฐ€ํ•œ ํ›„ ์„œ๋น„์Šค ๊ณ„์ •์— Cloud KMS CryptoKey Encrypter/Decrypter ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Key Management Service ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    Cloud KMS ํŽ˜์ด์ง€๋กœ ์ด๋™

  2. ์„ ํƒํ•œ ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํ‚ค๋ง์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ํ‚ค ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ํ‚ค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ถŒํ•œ ํƒญ์—์„œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ƒˆ ์ฃผ ๊ตฌ์„ฑ์› ํ•„๋“œ์— ์•ž์—์„œ ์‚ดํŽด๋ณธ ์„ธ ๊ฐ€์ง€ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋™์‹œ์— ์„ธ ๊ฐ€์ง€ ๊ณ„์ • ๋ชจ๋‘์— ๊ถŒํ•œ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

  6. ์—ญํ•  ์„ ํƒ ๋ฉ”๋‰ด์—์„œ Cloud KMS CryptoKey ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™”๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  7. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์•ž์„œ ์„ค๋ช…ํ•œ ๊ฐ ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud kms keys add-iam-policy-binding KEY \
  --keyring KEY_RING \
  --location LOCATION \
  --member serviceAccount:SERVICE_AGENT_EMAIL \
  --role roles/cloudkms.cryptoKeyEncrypterDecrypter

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • KEY: ํ‚ค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด my-key์ž…๋‹ˆ๋‹ค.

  • KEY_RING: ํ‚ค๋ง ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ: my-keyring

  • LOCATION: ํ‚ค ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์˜ˆ: us-central1

  • SERVICE_AGENT_EMAIL: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜์— CMEK ์‚ฌ์šฉ ์„ค์ •

CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ Artifact Registry ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•˜๊ณ  Cloud Run Functions์— ํ‚ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ํ•จ์ˆ˜์— CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜์— CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

gcloud functions deploy FUNCTION \
    --kms-key=KEY \
    --docker-repository=REPOSITORY \
    --source=YOUR_SOURCE_LOCATION
    FLAGS...
 

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • FUNCTION: CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด cmek-function์ž…๋‹ˆ๋‹ค.

  • KEY: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME ํ˜•์‹์˜ ์ •๊ทœํ™”๋œ ํ‚ค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • REPOSITORY: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY ํ˜•์‹์˜ ์ •๊ทœํ™”๋œ Artifact Registry ์ €์žฅ์†Œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • YOUR_SOURCE_LOCATION: ๊ธฐ์กด ํ•จ์ˆ˜์˜ CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ๋•Œ๋Š” ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ์›ํ•˜๋Š” ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์žฌ๋ฐฐํฌ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  • FLAGS...: ํ•จ์ˆ˜๋ฅผ ๋ฐฐํฌ(ํŠนํžˆ ๋ฐฐํฌ ์ƒ์„ฑ์˜ ๊ฒฝ์šฐ)ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Run ํ•จ์ˆ˜ ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•จ์ˆ˜์— CMEK๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ์ ์œผ๋กœ ๋ชจ๋“  ์ƒˆ ๊ธฐ๋Šฅ์ด CMEK์™€ ๊ฐ•์ œ๋กœ ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋ ค๋ฉด CMEK ์กฐ์ง ์ •์ฑ…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Cloud Run Functions๋Š” ํ•ญ์ƒ CMEK ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ํ‚ค์˜ ๊ธฐ๋ณธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— CMEK๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•  ํŠน์ • ํ‚ค ๋ฒ„์ „์„ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ‚ค๊ฐ€ ํ๊ธฐ ๋˜๋Š” ์‚ฌ์šฉ ์ค‘์ง€๋˜๊ฑฐ๋‚˜ ํ‚ค์— ๋Œ€ํ•œ ํ•„์ˆ˜ ๊ถŒํ•œ์ด ์ทจ์†Œ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ํ‚ค๋กœ ๋ณดํ˜ธ๋˜๋Š” ํ•จ์ˆ˜์˜ ํ™œ์„ฑ ์ธ์Šคํ„ด์Šค๋Š” ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ง„ํ–‰ ์ค‘์ธ ํ•จ์ˆ˜ ์‹คํ–‰์€ ๊ณ„์† ์‹คํ–‰๋˜์ง€๋งŒ Cloud Run Functions์—์„œ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์œผ๋ฉด ์ƒˆ ์‹คํ–‰์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.