Binary Authorization ๊ฐœ๋…

์ด ํŽ˜์ด์ง€์—๋Š” Binary Authorization๊ณผ ์—ฐ๊ด€๋œ ๊ฐœ๋… ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ฑ…

ํ”„๋กœ์ ํŠธ ์‹ฑ๊ธ€ํ†ค ์ •์ฑ…์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋Š” Binary Authorization ์ •์ฑ…์€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ฐฐํฌ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ทœ์น™ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

์ง€์†์  ๊ฒ€์ฆ(CV)์€ ํ”Œ๋žซํผ ์ •์ฑ…์ด๋ผ๋Š” ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ •์ฑ…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ •์ฑ…์€ ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Google Cloud ์ฝ˜์†”
  • gcloud ๋ช…๋ น์–ด

gcloud ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ •์ฑ…์„ ํ”„๋กœ์ ํŠธ๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— YAML ํ˜•์‹์œผ๋กœ ์ •์ฑ…์˜ ์ •์˜๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. YAML ํ˜•์‹์—๋Š” Binary Authorization ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ์ •์ฑ…์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ์ด ํ˜•์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์ฑ… YAML ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ Google Cloud ํ”„๋กœ์ ํŠธ๋Š” ์ •์ฑ…์„ ํ•˜๋‚˜๋งŒ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ํ”Œ๋žซํผ์„ ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์—์„œ ์ •์ฑ… ๋ฐ ๋ชจ๋“  ์ข…์† ๋ฆฌ์†Œ์Šค(์ฆ๋ช…์ž ๋ฐ ์ฆ๋ช…)๋Š” ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฌด ๋ถ„๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์ค‘ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์—์„œ ๋ฐฐํฌ ํ”Œ๋žซํผ์€ ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ณ , ์ฆ๋ช…์ž๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์ƒ์ฃผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฆ๋ช…์€ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์ƒ์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์—์„œ Binary Authorization์„ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”Œ๋žซํผ๋ณ„ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

GKE์˜ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ์„ค์ • ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ทœ์น™

์ •์ฑ…์„ ๊ตฌ์„ฑํ•  ๋•Œ ๊ทœ์น™์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์€ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐฐํฌ๋˜๊ธฐ ์ „์— ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์—๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์ด ํ•˜๋‚˜ ์žˆ์œผ๋ฉฐ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ํŠน์ • ๊ทœ์น™์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”Œ๋žซํผ๋ณ„ ์ง€์›๋˜๋Š” ๊ทœ์น™ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ ๊ทœ์น™์€ ํ‰๊ฐ€ ๋ชจ๋“œ ๋ฐ ์‹œํ–‰ ๋ชจ๋“œ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ๋ฐฐํฌ๋˜๊ธฐ ์ „์— ๋จผ์ € ์ด๋ฏธ์ง€์—๋Š” ์„œ๋ช…๋œ ์ฆ๋ช…์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ทœ์น™

๊ฐ ์ •์ฑ…์—๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์€ ํŠน์ • ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋ฐฐํฌ ์š”์ฒญ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ •์ฑ… YAML ํŒŒ์ผ์—์„œ ๊ธฐ๋ณธ ๊ทœ์น™์€ defaultAdmissionRule ๋…ธ๋“œ์— ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ทœ์น™ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์ฑ… ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠน์ • ๊ทœ์น™

์ •์ฑ…์— ํŠน์ • ๊ทœ์น™์„ ํ•˜๋‚˜ ์ด์ƒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ๊ทœ์น™์€ ํŠน์ • ํด๋Ÿฌ์Šคํ„ฐ, ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ID์— ๋ฐฐํฌํ•  ์ด๋ฏธ์ง€์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ๊ทœ์น™์— ๋Œ€ํ•œ ์ง€์›์€ ํ”Œ๋žซํผ๋ณ„๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”Œ๋žซํผ๋ณ„ ์ง€์›๋˜๋Š” ๊ทœ์น™ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ •์ฑ… YAML ํŒŒ์ผ์—์„œ ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ณ„ ๊ทœ์น™์€ clusterAdmissionRule ๋…ธ๋“œ์— ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ๋ณ„ ์ง€์›๋˜๋Š” ๊ทœ์น™ ์œ ํ˜•

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ๊ฐ ๋ฐฐํฌ ํ”Œ๋žซํผ์—์„œ ์ง€์›๋˜๋Š” ๊ทœ์น™ ์œ ํ˜•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ ๊ธฐ๋ณธ ๊ทœ์น™ ํŠน์ • ๊ทœ์น™
GKE ์ง€์›๋จ ํด๋Ÿฌ์Šคํ„ฐ
Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค
Kubernetes ์„œ๋น„์Šค ๊ณ„์ •
Cloud Run ์ง€์›๋จ ์ง€์›๋˜์ง€ ์•Š์Œ
GKE ์—ฐ๊ฒฐ ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›๋จ ํด๋Ÿฌ์Šคํ„ฐ
Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค
Kubernetes ์„œ๋น„์Šค ๊ณ„์ •
GKE on AWS ์ง€์›๋จ ํด๋Ÿฌ์Šคํ„ฐ
Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค
Kubernetes ์„œ๋น„์Šค ๊ณ„์ •
Google Distributed Cloud ์ง€์›๋จ ํด๋Ÿฌ์Šคํ„ฐ
Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค
Kubernetes ์„œ๋น„์Šค ๊ณ„์ •
Google Distributed Cloud ์ง€์›๋จ ํด๋Ÿฌ์Šคํ„ฐ
Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค
Kubernetes ์„œ๋น„์Šค ๊ณ„์ •
Cloud Service Mesh ์ง€์›๋จ Cloud Service Mesh ์„œ๋น„์Šค ID

ํ‰๊ฐ€ ๋ชจ๋“œ

๊ฐ ๊ทœ์น™์—๋Š” Binary Authorization์—์„œ ๊ทœ์น™์— ์ ์šฉํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด ์œ ํ˜•์„ ์ง€์ •ํ•˜๋Š” ํ‰๊ฐ€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™์˜ ํ‰๊ฐ€ ๋ชจ๋“œ๋Š” ์ •์ฑ… YAML ํŒŒ์ผ์˜ evaluationMode ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

์„ธ ๊ฐ€์ง€ ํ‰๊ฐ€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์ด๋ฏธ์ง€ ํ—ˆ์šฉ: ๋ชจ๋“  ์ด๋ฏธ์ง€์˜ ๋ฐฐํฌ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ด๋ฏธ์ง€ ๊ฑฐ๋ถ€: ๋ชจ๋“  ์ด๋ฏธ์ง€์˜ ๋ฐฐํฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฆ๋ช… ํ•„์š”: ๋ฐฐํฌ ์ „์— ์„œ๋ช…์ž๊ฐ€ ์ด๋ฏธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ๋ฅผ ๋””์ง€ํ„ธ ์„œ๋ช…ํ•˜๊ณ  ์ฆ๋ช…์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ์‹œ Binary Authorization ์‹œํ–‰์ž๋Š” ์—ฐ๊ฒฐ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์ฆ๋ช…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๋ช…์˜ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์‹œํ–‰ ๋ชจ๋“œ

๊ฐ ๊ทœ์น™์—๋Š” ์‹œํ–‰ ๋ชจ๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ GKE์—์„œ ์ทจํ•ด์•ผ ํ•˜๋Š” ์กฐ์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹œํ–‰ ๋ชจ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฐจ๋‹จ ๋ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ: ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€์˜ ๋ฐฐํฌ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์ด๋ฏธ์ง€๊ฐ€ ๋ฐฐํฌ๋˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ ์‹คํ–‰: ๊ฐ์‚ฌ ๋กœ๊ทธ๋งŒ: ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ชจ๋“œ๋Š” ๋น„์ค€์ˆ˜ ์ด๋ฏธ์ง€ ๋ฐฐํฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€๋งŒ ๋ฐฐํฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋Š” ์ •์ฑ…์˜ ์‹œํ–‰ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‹œํ–‰์ด ์‹ค์ œ๋กœ ์ ์šฉ๋˜๊ธฐ ์ „์— ์ •์ฑ…์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๋•์…˜ ๊ทœ์น™์€ ์ฐจ๋‹จ ๋ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ์‹œํ–‰ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰: ๊ฐ์‚ฌ ๋กœ๊ทธ ์ „์šฉ์€ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์—์„œ ์ •์ฑ…์ด ์ ์šฉ๋˜๊ธฐ ์ „์— ํ•ด๋‹น ์ •์ฑ…์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ทœ์น™์˜ ์‹œํ–‰ ๋ชจ๋“œ๋Š” ์ •์ฑ… YAML ํŒŒ์ผ์˜ enforcementMode ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๊ธฐ๋ก๋œ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์‚ฌ ๋กœ๊ทธ ๋ณด๊ธฐ(GKE, Google Distributed Cloud, Cloud Service Mesh) ๋˜๋Š” ๊ฐ์‚ฌ ๋กœ๊ทธ ๋ณด๊ธฐ(Cloud Run)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€์†์  ๊ฒ€์ฆ

์ง€์†์  ๊ฒ€์ฆ(CV)์€ ์ง€์†์ ์ธ ์ •์ฑ… ์ค€์ˆ˜๋ฅผ ์œ„ํ•ด ํฌ๋“œ ์‹คํ–‰๊ณผ ์—ฐ๊ด€๋œ ์ด๋ฏธ์ง€๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” Binary Authorization ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

CV์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

์˜ˆ์™ธ ์ด๋ฏธ์ง€

์˜ˆ์™ธ ์ด๋ฏธ์ง€๋Š” ์ •์ฑ… ๊ทœ์น™์—์„œ ์ œ์™ธ๋˜๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. Binary Authorization์—์„œ๋Š” ํ•ญ์ƒ ์˜ˆ์™ธ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ์—๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฒฝ๋กœ์—์„œ ์ง€์ •๋œ ์˜ˆ์™ธ ์ด๋ฏธ์ง€์˜ ํ—ˆ์šฉ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. gcr.io/google_containers/* ๋ฐ k8s.gcr.io/** ๊ฒฝ๋กœ์™€ ์ถ”๊ฐ€ ๊ฒฝ๋กœ์˜ ์ด๋ฏธ์ง€์—๋Š” GKE๊ฐ€ ๊ธฐ๋ณธ ์ •์ฑ…์„ ํ™œ์„ฑํ™”ํ•œ ์ƒํƒœ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ๋ชฉ๋ก์— ์˜ˆ์™ธ ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ •์ฑ… ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

EXEMPT_IMAGE_PATH๋ฅผ ์ œ์™ธํ•  am ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์ œ์™ธํ•˜๋ ค๋ฉด - namePattern ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. admissionWhitelistPatterns์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

ํ—ˆ์šฉ ๋ชฉ๋ก ํŒจํ„ด

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์œ„์น˜๊ฐ€ ์ง€์ •๋œ ๊ฒฝ๋กœ์™€ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

gcr.io/example-project/*

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์œ„์น˜๊ฐ€ ์ง€์ •๋œ ๊ฒฝ๋กœ์˜ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ(์˜ˆ: gcr.io/example-project/my-directory/helloworld)์ธ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

gcr.io/example-project/**

ํŠน์ • ์ด๋ฏธ์ง€๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

gcr.io/example-project/helloworld

ํƒœ๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

gcr.io/example-project/helloworld:latest
gcr.io/example-project/helloworld:my-tag

์ด๋ฏธ์ง€์˜ ๋ชจ๋“  ๋ฒ„์ „/ํƒœ๊ทธ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

gcr.io/example-project/helloworld:*

๋‹ค์ด์ œ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ์ด๋ฏธ์ง€ ๋ฒ„์ „์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

Google Cloud Console์—์„œ, ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

Google์ด ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€

Google์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ์‹ ๋ขฐ๋ฅผ ์„ค์ •ํ•˜๋ฉด Binary Authorization์ด ์ถ”๊ฐ€ ์ •์ฑ… ํ‰๊ฐ€์—์„œ Google์ด ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด GKE์— ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์ •์ฑ… ์‹œํ–‰์œผ๋กœ ์ฐจ๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ •์ฑ…์€ ์‚ฌ์šฉ์ž ์ •์ฑ… ํ‰๊ฐ€ ์ด์ „ ๊ทธ๋ฆฌ๊ณ  ํ‰๊ฐ€๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ด ์„ค์ •์€ ์ •์ฑ… YAML ํŒŒ์ผ์—์„œ globalPolicyEvaluationMode ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ ์„ค์ • ๋˜๋Š” ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ์ •์ฑ…์˜ ์ฝ˜ํ…์ธ ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud alpha container binauthz policy export-system-policy

์ฆ๋ช…

์ฆ๋ช…์€ ์ด๋ฏธ์ง€๋ฅผ ์ธ์ฆํ•˜๋Š” ๋””์ง€ํ„ธ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ ์ค‘์— Binary Authorization์€ ์ด๋ฏธ์ง€ ๋ฐฐํฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์ „ ์ฆ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ฆ๋ช…์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด๋ฏธ์ง€ ์„œ๋ช…์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฆ๋ช…์€ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋œ ํ›„์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ ์ด๋ฏธ์ง€์—๋Š” ์ „์—ญ์ ์œผ๋กœ ๊ณ ์œ ํ•œ ๋‹ค์ด์ œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ช…์ž๋Š” ํ‚ค ์Œ์˜ ๋น„๊ณต๊ฐœ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ๋ฅผ ์„œ๋ช…ํ•˜๊ณ  ์ด ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๋ช…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐฐํฌ ์‹œ Binary Authorization ์‹œํ–‰์ž๋Š” ์ฆ๋ช…์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๋ช…์˜ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ ์ฆ๋ช…์ž๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์„œ๋ช…์ž์—๋งŒ ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ๋ช…์€ ํŠน์ •ํ•œ ํ•„์ˆ˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ช…์ž๊ฐ€ ํ’ˆ์งˆ ๋ณด์ฆ(QA) ํŒ€์„ ๋Œ€ํ‘œํ•˜๋Š” ๊ฒฝ์šฐ ์ฆ๋ช…์€ ์ด๋ฏธ์ง€๊ฐ€ ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ์—”๋“œ ํˆฌ ์—”๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Binary Authorization์—์„œ ์ฆ๋ช…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ์ •์ฑ…์˜ evaluationMode๊ฐ€ REQUIRE_ATTESTATION๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ๋ช…์ž ๋ฐ ์ฆ๋ช…์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

์„œ๋ช…์ž

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

์ฆ๋ช…์ž ๋ฐ ์ฆ๋ช…์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

์ฆ๋ช…์ž

์ฆ๋ช…์ž๋Š” Binary Authorization์ด ์ด๋ฏธ์ง€ ๋ฐฐํฌ ์‹œ ์ฆ๋ช…์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” Google Cloud ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ์ฆ๋ช…์ž์—๋Š” ์„œ๋ช…์ž๊ฐ€ ์ด๋ฏธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ๋ฅผ ์„œ๋ช…ํ•˜๊ณ  ์ฆ๋ช…์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๋น„๊ณต๊ฐœ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ณต๊ฐœ ํ‚ค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Binary Authorization ์‹œํ–‰์ž๋Š” ๋ฐฐํฌ ์‹œ ์ฆ๋ช…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์ „์— ํ•จ๊ป˜ ์ƒ์„ฑ๋œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ ์ฆ๋ช…์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ๋ช…์ž๋Š” ๊ณต๊ฐœ ํ‚ค ๋ฐ ๋น„๊ณต๊ฐœ ํ‚ค ์Œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ณด์•ˆ ์šด์˜ ๋‹ด๋‹น์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ ์„œ๋ช…์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋น„๊ณต๊ฐœ ํ‚ค๋กœ ์„œ๋ช…ํ•˜๋ฉฐ ๋ฐฐํฌ๋ฅผ ์‹œ๋„ํ•˜๊ธฐ ์ „์— ์ฆ๋ช…์„ ๋งŒ๋“œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด, DevOps QA ๋˜๋Š” ๊ทœ์ • ์ค€์ˆ˜ ๋‹ด๋‹น์ž์ž…๋‹ˆ๋‹ค.

์ฆ๋ช…์ž์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ฆ๋ช… ํ•„์š” ๊ทœ์น™์ด ํฌํ•จ๋œ ์ •์ฑ…์„ ์„ค์ •ํ•  ๋•Œ ์ด๋ฏธ์ง€์˜ ๋ฐฐํฌ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ฆ๋ช…์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”, gcloud ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” Binary Authorization REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๋ช…์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ๋ช…์ž ๋ฐ ์ฆ๋ช…์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

์•”ํ˜ธํ™” ํ‚ค

์ •์ฑ…์— ์ฆ๋ช… ํ•„์š” ๊ทœ์น™์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ Binary Authorization์€ ๋ฐฐํฌ ์‹œ์— ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ์Œ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ํ‚ค๋Š” ์„œ๋ช…์ž๊ฐ€ ์ด๋ฏธ์ง€ ์„ค๋ช…์ž๋ฅผ ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฆ๋ช…์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฆ๋ช…์ž๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ •์ฑ…์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ช…์— ์‚ฌ์šฉ๋˜๋Š” ๋น„๊ณต๊ฐœ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ณต๊ฐœ ํ‚ค๊ฐ€ ์—…๋กœ๋“œ๋˜๊ณ  ์ฆ๋ช…์ž์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

Binary Authorization์€ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ๋•Œ ์ •์ฑ…์˜ ์ฆ๋ช…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ์ฆ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฆ๋ช…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Binary Authorization์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ‚ค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณต๊ฐœ ํ‚ค ์ธํ”„๋ผ(X.509) (PKIX)
  • PGP

PKIX ํ‚ค๋Š” ๋กœ์ปฌ, ์™ธ๋ถ€ ๋˜๋Š” Cloud Key Management Service์— ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™” ํ‚ค ๋ฐ ์ฆ๋ช…์ž๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Artifact Analysis ์ฐธ๊ณ ์‚ฌํ•ญ

Binary Authorization์€ Artifact Analysis์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šน์ธ ํ”„๋กœ์„ธ์Šค์— ์‚ฌ์šฉ๋œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ์ฆ๋ช…์ž๋งˆ๋‹ค Artifact Analysis ๋ฉ”๋ชจ๋ฅผ ํ•˜๋‚˜์”ฉ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ฆ๋ช…์€ ์ด ๋ฉ”๋ชจ์˜ ์–ด์ปค๋Ÿฐ์Šค๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

Binary Authorization์€ ์ฆ๋ช…์ž๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ทœ์น™์„ ํ‰๊ฐ€ํ•  ๋•Œ Artifact Analysis ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ํ•„์š”ํ•œ ์ฆ๋ช…์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.