์„œ๋น„์Šค ๋ณด์•ˆ(๊ธฐ์กด)

์ด ๋ฌธ์„œ์—์„œ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Cloud Service Mesh์˜ ์„œ๋น„์Šค ๋ณด์•ˆ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ์ธ์ฆ, ์•”ํ˜ธํ™”, ์Šน์ธ์„ ๋ฐฐํฌ์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” Cloud Service Mesh ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Envoy ๋ฐ ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” Cloud Service Mesh์— ์ต์ˆ™ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋ผ์šฐํŒ… API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๋ณด์•ˆ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ด ๋ฌธ์„œ๋Š” ๊ธฐ์กด ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์‹œ์—์„œ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์˜ ๊ฐ ์„œ๋น„์Šค์—๋Š” ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธฐ๋Šฅ์€ ๋ณด์•ˆ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

  • Envoy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Cloud Service Mesh์™€ ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” Cloud Service Mesh ๋ชจ๋‘์— ์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ(TLS) ๋ฐ ์ƒํ˜ธ TLS(mTLS)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ๋ฐ ์•”ํ˜ธํ™”. ํด๋ผ์ด์–ธํŠธ TLS ์ •์ฑ…๊ณผ ์„œ๋ฒ„ TLS ์ •์ฑ…์€ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ์—๊ฒŒ ID๋ฅผ ์ฆ๋ช…ํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ํ†ต์‹  ์ฑ„๋„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ๋ฐ ์š”์ฒญ์˜ ํŠน์„ฑ์— ๋”ฐ๋ฅธ ์Šน์ธ. ์Šน์ธ ์ •์ฑ…์€ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ—ˆ์šฉํ• ์ง€ ์—ฌ๋ถ€์™€ ํ—ˆ์šฉ๋˜๋Š” ์ž‘์—…์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ณต๊ฐœ ์ธ์ฆ ๊ธฐ๊ด€(CA) ์„œ๋น„์Šค์ธ Google์˜ Certificate Authority Service๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ธ์ฆ์„œ์™€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ๋ณด์•ˆ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CA ์„œ๋น„์Šค๋Š” GKE ๋ฉ”์‹œ ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. GKE ๋ฉ”์‹œ ์ธ์ฆ์„œ ๊ธฐ๋Šฅ๊ณผ Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์›Œํฌ๋กœ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์›Œํฌ๋กœ๋“œ๊ฐ€ mTLS ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GKE ๊ธฐ๋ฐ˜ ์›Œํฌ๋กœ๋“œ์—์„œ๋งŒ Cloud Service Mesh ์„œ๋น„์Šค ๋ณด์•ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๋” ์ž‘๊ณ  ์ง‘์ค‘์ ์ธ ์„œ๋น„์Šค๊ฐ€ ๋Œ€๊ทœ๋ชจ ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ํ˜ธ์ถœ์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ(๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฒ˜๋ฆฌ ์ค‘์ธ ํ˜ธ์ถœ)์€ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ธ์ฆ, ์•”ํ˜ธํ™”, ์Šน์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋„คํŠธ์›Œํฌ ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ์œ„ํ—˜ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์ œ๋กœ ํŠธ๋Ÿฌ์ŠคํŠธ ์›์น™์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

์ด ๋ชจ๋ธ์—์„œ๋Š” ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ๋˜๋Š” Envoy ์‚ฌ์ด๋“œ์นด๊ฐ€ Cloud Service Mesh์—์„œ ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  CA ์„œ๋น„์Šค ํ’€์—์„œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ ธ์™€ ํ†ต์‹ ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ธ์ฆํ•˜๊ณ  ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ Cloud Service Mesh ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

  • ๋ฉ”์‹œ์˜ ๋ชจ๋“  ์„œ๋น„์Šค์— ํ‚ค ๋ฐ ์ธ์ฆ์„œ ์ž๋™ ํ”„๋กœ๋น„์ €๋‹
  • ํ‚ค ๋ฐ ์ธ์ฆ์„œ๋ฅผ ์ž๋™ ์ˆœํ™˜ํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”
  • Google Kubernetes Engine(GKE)๊ณผ ํ†ตํ•ฉ๋˜์–ด ๋ฐฐํฌ ์„ค๋ช…์ž, ๋ผ๋ฒจ๊ณผ ๊ฐ™์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Cloud Service Mesh ๋ฐ CA ์„œ๋น„์Šค ๊ด€๋ฆฌํ˜• ๋น„๊ณต๊ฐœ ์ธ์ฆ ๊ธฐ๊ด€ ํ’€์„ ํฌํ•จํ•œ Google ๊ด€๋ฆฌ ์„œ๋น„์Šค์˜ ๊ณ ๊ฐ€์šฉ์„ฑ
  • Google Identity and Access Management(IAM)์— ์—ฐ๊ฒฐ๋œ ๋ณด์•ˆ: ์Šน์ธ๋œ Google ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค ์Šน์ธ
  • Envoy ๊ธฐ๋ฐ˜ ๋ฐ ํ”„๋ก์‹œ๋ฆฌ์Šค ์›Œํฌ๋กœ๋“œ์™€ ์›ํ™œํ•œ ์ƒํ˜ธ ์šด์šฉ์„ฑ. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋น„์Šค๊ฐ€ Envoy ํ”„๋ก์‹œ ๋’ค์— ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” gRPC ํ”„๋ก์‹œ๋ฆฌ์Šค ์„œ๋น„์Šค ๋ฉ”์‹œ ๋ณด์•ˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์„œ๋น„์Šค๋Š” gRPC ํ”„๋ก์‹œ๋ฆฌ์Šค ์„œ๋น„์Šค ๋ฉ”์‹œ ๋ณด์•ˆ ๋’ค์— ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” Envoy ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๋ณดํ˜ธ

Cloud Service Mesh๋Š” TLS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•”ํ˜ธํ™”์™€ ์ธ์ฆ์„ ํ†ตํ•ด ์Šน์ธ๊ณผ ์„œ๋น„์Šค ๊ฐ„ ๋ณด์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ TLS ์ •์ฑ…๊ณผ ์„œ๋ฒ„ TLS ์ •์ฑ…์„ ํ†ตํ•ด ์„œ๋น„์Šค์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ID ์–ด์„ค์…˜ ๋ฐ ๊ฒ€์ฆ
  • TLS ๋˜๋Š” mTLS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹  ์„ธ์…˜ ์•”ํ˜ธํ™”

์„œ๋น„์Šค ๋ฉ”์‹œ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์˜์—ญ์ด ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ณด์•ˆ์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณด์•ˆ์„ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ํ”„๋กœ๋น„์ €๋‹์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์Šน์ธ ์ •์ฑ…์€ ์ •์˜ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์•ก์„ธ์Šค๋ฅผ ๊ฑฐ๋ถ€ ๋˜๋Š” ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”์— TLS ์‚ฌ์šฉ

ํ•œ ์„œ๋น„์Šค๊ฐ€ HTTP, HTTP/2, ๋˜๋Š” gRPC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•ด๋‹น ๋„คํŠธ์›Œํฌ๋ฅผ ์ „์†กํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ํŠธ๋ž˜ํ”ฝ์€ ๊ณต๊ฒฉ์ž๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์˜ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋ ค๋ฉด Cloud Service Mesh์™€ ํ•จ๊ป˜ TLS๋ฅผ ํ†ตํ•ด HTTP, HTTP/2 ๋˜๋Š” gRPC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. TLS๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์€ ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” TLS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋” ์ด์ƒ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€๋กœ์ฑ„์„œ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์ธ์ฆ์— TLS ์‚ฌ์šฉ

ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋‹ค์Œ ์งˆ๋ฌธ์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”.

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ€์งœ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์˜ฌ๋ฐ”๋ฅธ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›๊ณ  ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”? ์˜ˆ๋ฅผ ๋“ค์–ด HTTP ๊ธฐ๋ฐ˜์˜ ์ผ๋ฐ˜์ ์ธ ์š”์ฒญ-์‘๋‹ต ์ƒํ˜ธ์ž‘์šฉ์—์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ID๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ๊ณต๊ฒฉ์ž๊ฐ€ ํ•ด๋‹น ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์˜ˆ๋ฅผ ๋“ค์–ด HTTP ํŠธ๋ž˜ํ”ฝ์€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด TLS๋ฅผ ํ†ตํ•ด HTTP, HTTP/2, gRPC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ด๋Ÿฌํ•œ ๊ตํ™˜์—์„œ ์„œ๋ฒ„๋Š” ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ID๋ฅผ ์ฆ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์š”์ฒญ๊ณผ ์‘๋‹ต์ด TLS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.

์ƒํ˜ธ TLS ์ธ์ฆ

Cloud Service Mesh์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„คํŠธ์›Œํ‚น์„ ๊ตฌ์„ฑํ•  ๋•Œ(์˜ˆ: ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ Envoy ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์„œ๋ฒ„ ์ธก์— ๋‹ค๋ฅธ Envoy ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑ) ์ƒํ˜ธ ์ธ์ฆ๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ์ธ์ฆ ํŒจํ„ด์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํ˜ธ ์ธ์ฆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ HTTP over TLS ๊ตํ™˜์—์„œ ์„œ๋ฒ„์—๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” TLS ํ•ธ๋“œ์…ฐ์ดํฌ ์ค‘์— ์„œ๋ฒ„๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์„œ๋ช…์„ ํ™•์ธํ•˜์—ฌ ์„œ๋ฒ„์˜ ID๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ID๋ฅผ ๊ฒ€์ฆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ƒํ˜ธ ์ธ์ฆ์ด ์‚ฌ์šฉ ์„ค์ •๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋„ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ „ ๋‹จ๋ฝ์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์„œ๋ฒ„์˜ ID๋ฅผ ํ™•์ธํ•˜๋ฉฐ ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ์˜ ID๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ์™€ ์„œ๋ฒ„ ์ธ์ฆ์„œ ๋‘˜ ๋‹ค ํ†ต์‹  ์ฑ„๋„์„ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ํ™•์ธ๋œ ํด๋ผ์ด์–ธํŠธ ID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์Šน์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋ฉ”์‹œ์˜ ์ƒํ˜ธ TLS(mTLS) ์ธ์ฆ
์„œ๋น„์Šค ๋ฉ”์‹œ์˜ ์ƒํ˜ธ TLS(mTLS) ์ธ์ฆ(ํ™•๋Œ€ํ•˜๋ ค๋ฉด ํด๋ฆญ)

์„œ๋น„์Šค ํ˜ธ์ถœ ์Šน์ธ

์Šน์ธ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ์Šน์ธํ•˜๋„๋ก ํ—ˆ์šฉ ๊ทœ์น™๊ณผ ๊ฑฐ๋ถ€ ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mTLS ์—ฐ๊ฒฐ์˜ client-cert์—์„œ ํŒŒ์ƒ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ID, ์†Œ์Šค IP ์ฃผ์†Œ, ํ˜ธ์ŠคํŠธ ์ผ์น˜, ๋ฉ”์„œ๋“œ ์ผ์น˜, ํ—ค๋” ์ผ์น˜๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ ˆ์ด์–ด 3 ๋ฐ ๋ ˆ์ด์–ด 7 ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ Envoy ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•œ ์Šน์ธ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” gRPC ํด๋ผ์ด์–ธํŠธ์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋ฉ”์‹œ์—์„œ ์Šน์ธ
Envoy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค ๋ฉ”์‹œ ์Šน์ธ(ํ™•๋Œ€ํ•˜๋ ค๋ฉด ํด๋ฆญ)

์Šน์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ œํ•œ

์„œ๋น„์Šค ๋ฉ”์‹œ ๋‚ด์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ตœ์†Œ ๊ถŒํ•œ์˜ ์›์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์— ์ข…์†๋˜๋Š” ํ˜ธ์ถœ์ž๋กœ๋งŒ ์„œ๋น„์Šค ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜์—ฌ ์ด ์›์น™์„ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์ž๊ฐ€ ์Šน์ธ๋˜์ง€ ์•Š์€ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์‹œ๋„๊ฐ€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •์˜ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์˜์—ญ์—์„œ ์„œ๋น„์Šค ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉ ๋˜๋Š” ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์Šน์ธ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  • ์ž‘์—…: ํ—ˆ์šฉ ๋˜๋Š” ๊ฑฐ๋ถ€
  • ๊ทœ์น™ ๋ชฉ๋ก

์š”์ฒญ ๋˜๋Š” RPC๊ฐ€ ์ „์†ก๋˜๋ฉด ํ˜ธ์ถœ๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ทœ์น™ ์ผ์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜๊ฐ€ ์žˆ์œผ๋ฉด ์š”์ฒญ ๋˜๋Š” RPC๊ฐ€ ํ—ˆ์šฉ๋˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†์„ฑ๊ณผ ์ผ์น˜์‹œํ‚ฌ ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • mTLS๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ ํ˜ธ์ถœ ์„œ๋น„์Šค์˜ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •
  • ํ˜ธ์ถœ ์„œ๋น„์Šค์˜ IP ์ฃผ์†Œ(๋˜๋Š” ์ฃผ์†Œ ๋ฒ”์œ„)
  • ๋Œ€์ƒ ์„œ๋น„์Šค์˜ ํฌํŠธ
  • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, ๋ฉ”์„œ๋“œ, ์‚ฌ์šฉ์ž ์ •์˜ HTTP ํ—ค๋”๋ฅผ ํฌํ•จํ•œ ์š”์ฒญ์˜ HTTP ์†์„ฑ

๋ณด์•ˆ ์ด๋ฆ„ ์ง€์ •

์ถ”๊ฐ€ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ์ด๋ฆ„ ์ง€์ •์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•ด ํ—ˆ์šฉ๋œ ์ด๋ฆ„ ๋ชฉ๋ก ๋˜๋Š” SPIFFE(Secure Production Identity Framework for Everyone) ID๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TLS ๊ตํ™˜ ์ค‘์— ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ๋Š” X.509 ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ X.509 ์ธ์ฆ์„œ๊ฐ€ ์ด๋ฆ„ ๋˜๋Š” SPIFFE ID ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. SPIFFE ID์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Secure Production Identity Framework for Everyone์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฒŒ์ดํŠธ์›จ์ด์˜ ํŠธ๋ž˜ํ”ฝ ๋ณด์•ˆ

๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด Cloud Service Mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์˜ ์—ญํ• ์„ ํ•˜๋Š” ๋…๋ฆฝํ˜• Envoy ํ”„๋ก์‹œ์ž…๋‹ˆ๋‹ค.

  • ๋ฉ”์‹œ ๋˜๋Š” ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด
  • ๋ฉ”์‹œ ๋˜๋Š” ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด
  • ์ธ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ์„œ๋น„์Šค์— ๋ถ„์‚ฐํ•˜๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋˜๋Š” ์ค‘๊ฐ„ ํ”„๋ก์‹œ

๋ฉ”์‹œ๋กœ ๋˜๋Š” ๋ฉ”์‹œ์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋ ค๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ Cloud Service Mesh์— ์„ค์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์ด TLS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๊ตฌ์„ฑ์š”์†Œ

Cloud Service Mesh ์„œ๋น„์Šค ๋ณด์•ˆ์€ ํด๋ผ์ด์–ธํŠธ TLS ์ •์ฑ…, ์„œ๋ฒ„ TLS ์ •์ฑ…, ์Šน์ธ ์ •์ฑ…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Cloud Service Mesh๊ฐ€ ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋Ÿฌํ•œ ์ •์ฑ…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™” ๋ฐ ์ง€์›๋˜๋Š” ์ธ์ฆ ๋ชจ๋“œ

ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ณด์•ˆ ํ†ต์‹ ์„ ์„ค์ •ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ID๋ฅผ ์ฆ๋ช…ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค๊ฐ€ ID๋ฅผ ์ฆ๋ช…ํ•ด์•ผ ํ•˜๋Š” ์ •๋„๋Š” ๊ตฌ์„ฑํ•œ TLS ๋ชจ๋“œ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ณด์•ˆ ์ˆ˜์ค€์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Œ/์ธ์ฆ๋˜์ง€ ์•Š์Œ
  • TLS
  • ์ƒํ˜ธ TLS(mTLS)
  • ํ—ˆ์šฉ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ mTLS ๋˜๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Œ/์ธ์ฆ๋˜์ง€ ์•Š์Œ

์ธ์ฆ์„œ ๋ฐ ์ธ์ฆ ๊ธฐ๊ด€

์ธ์ฆ์„œ ๋ฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ธฐ๊ด€(CA)์€ ์„œ๋น„์Šค ๋ฉ”์‹œ์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์‹ ๋ขฐ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ID๋ฅผ ์ฆ๋ช…ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ID์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ID๋ฅผ ์ฆ๋ช…ํ•˜๋ ค๋Š” ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์„œ๋น„์Šค ๋ชจ๋‘ ์‹ ๋ขฐํ•˜๋Š” CA์—์„œ ์ด ์ธ์ฆ์„œ๋ฅผ ์•”ํ˜ธํ™” ์„œ๋ช…ํ•˜๊ณ  ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ์ธ์ฆ์„œ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์„œ๋น„์Šค๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CA์—์„œ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud Service Mesh๋Š” ์ธ์ฆ ๊ธฐ๊ด€์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณด์•ˆ ํ†ต์‹ ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ID ๋ฐ ์ธ์ฆ์„œ ํ”„๋กœ๋น„์ €๋‹
  • Cloud Service Mesh์—์„œ ๊ตฌ์„ฑํ•˜๋Š” Envoy ํ”„๋ก์‹œ์™€ ๊ฐ™์€ Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Cloud Service Mesh๋Š” Google์˜ CA ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Envoy ๋ฐ ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC์˜ ์„ค์ • ๊ฐ€์ด๋“œ์—๋Š” ์ด๋ฅผ ์„ค์ •ํ•˜๋Š” ์•ˆ๋‚ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋ฆฌ์†Œ์Šค

Cloud Service Mesh์—๋Š” ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ณด์•ˆ ์ •์ฑ…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” Google Cloud API ๋ฆฌ์†Œ์Šค 3๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ Network Security API ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹œ์—์„œ๋Š” Google Cloud API ๋ฆฌ์†Œ์Šค 2๊ฐœ(ํด๋ผ์ด์–ธํŠธ TLS ์ •์ฑ… ๋ฐ ์„œ๋ฒ„ TLS ์ •์ฑ…)๊ฐ€ ์ธ์ฆ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฆฌ์†Œ์Šค์ธ ์Šน์ธ ์ •์ฑ…์€ ์Šน์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Network Services API ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋Š” Cloud Service Mesh์—์„œ ๊ตฌ์„ฑ(์„œ๋ฒ„ TLS, ํด๋ผ์ด์–ธํŠธ TLS, ์Šน์ธ ์ •์ฑ…)์„ ์—”๋“œํฌ์ธํŠธ์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์—”๋“œํฌ์ธํŠธ ์ •์ฑ… ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” ๋‹ค๋ฅธ Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ๋ฐ”์šด๋“œ ํ†ต์‹ ์„ ์ข…๋ฃŒํ•˜๋Š” Cloud Service Mech ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค.

๋ณด์•ˆ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋ฐฐํฌ์—์„œ ๋Œ€์ƒ HTTPS ํ”„๋ก์‹œ๋‚˜ ๋Œ€์ƒ gRPC ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ HTTP ํ”„๋ก์‹œ๋‚˜ ๋Œ€์ƒ TCP ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ TLS ์ •์ฑ…

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

TLS๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ serverValidationCa API ํ•„๋“œ๋ฅผ ํ†ตํ•ด TLS ๊ตํ™˜ ์ค‘์— ์„œ๋ฒ„์—์„œ ์ˆ˜์‹ ํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

mTLS๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ clientCertificate API ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ์™€ ๋น„๊ณต๊ฐœ ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” TLS ํ•ธ๋“œ์…ฐ์ดํฌ ์ค‘์— ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ์ถœ์‹œ ๋ฒ„์ „์—์„œ Cloud Service Mesh๋Š” ๊ด€๋ฆฌํ˜• ์ธ์ฆ ๊ธฐ๊ด€์ธ CA ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ์ œ๊ณต์—…์ฒด๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ google_cloud_private_spiffe ํ”Œ๋Ÿฌ๊ทธ์ธ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด xDS ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ •์  ์œ„์น˜์—์„œ ์ธ์ฆ์„œ์™€ ํ‚ค๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์š”๊ฑด์œผ๋กœ CA ์„œ๋น„์Šค ํ’€์„ ๊ตฌ์„ฑํ•˜๊ณ  GKE ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฉ”์‹œ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ TLS ์ •์ฑ…

์„œ๋ฒ„ TLS ์ •์ฑ…(ServerTlsPolicy ๋ฆฌ์†Œ์Šค)์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„ ์ธก TLS ๋ชจ๋“œ์™€ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ ์šฉํ•  ์ธ์ฆ์„œ ์ œ๊ณต์—…์ฒด ์ •๋ณด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ TLS ์ •์ฑ…์€ TLS, mTLS๋ฅผ ์ง€์›ํ•˜๋ฉฐ Envoy์—์„œ๋งŒ Open_or_mTLS ์ธ์ฆ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ TLS ์ •์ฑ…์€ ๋Œ€์ƒ HTTPS ํ”„๋ก์‹œ ๋ฆฌ์†Œ์Šค๋‚˜ ์—”๋“œํฌ์ธํŠธ ์ •์ฑ… ๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์ฒด ๋Œ€์ฒด ์ด๋ฆ„

์ „์—ญ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ securitySettings ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ subjectAltNames ํ•„๋“œ์— ์ฃผ์ฒด ๋Œ€์ฒด ์ด๋ฆ„ ๋ชฉ๋ก์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋น„์Šค ๋ฐฑ์—”๋“œ ์ค‘ ํ•˜๋‚˜์™€ TLS ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์„œ๋ฒ„๋Š” X.509 ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ์„œ์˜ subjectAltName ํ•„๋“œ๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•„๋“œ์— ์ง€์ •๋œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ํ†ต์‹ ์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์•ž์„œ ๋ณด์•ˆ ์ด๋ฆ„ ์ง€์ •์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์Šน์ธ ์ •์ฑ…

์Šน์ธ ์ •์ฑ…(AuthorizationPolicy ๋ฆฌ์†Œ์Šค)์€ ์„œ๋ฒ„๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ ๋˜๋Š” RPC๋ฅผ ์Šน์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์„ ๋ณด๋‚ธ ํด๋ผ์ด์–ธํŠธ ID, ํ˜ธ์ŠคํŠธ, ํ—ค๋”, ๊ธฐํƒ€ HTTP ์†์„ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ ๋˜๋Š” RPC๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šน์ธ ์ •์ฑ…์€ ๋Œ€์ƒ HTTPS ํ”„๋ก์‹œ ๋ฆฌ์†Œ์Šค๋‚˜ ์—”๋“œํฌ์ธํŠธ ์ •์ฑ… ๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

Cloud Service Mesh ์„œ๋น„์Šค ๋ณด์•ˆ์€ GKE์—์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค. Compute Engine์œผ๋กœ๋Š” ์„œ๋น„์Šค ๋ณด์•ˆ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ œํ•œ์‚ฌํ•ญ

ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„œ๋น„์Šค ๋ณด์•ˆ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ์ถœ์‹œ ๋ฒ„์ „์€ ์ž๋ฐ”, Python, C++, Go๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„