ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Kubernetes NetworkPolicy: controlando quem fala com quem dentro do cluster ๐Ÿ”โ˜ธ๏ธ
Dev.toDev.to
Security

NetworkPolicy ๊ธฐ๋ฐ˜์˜ Zero Trust ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ํšก์  ์ด๋™ ์ฐจ๋‹จ

Kubernetes NetworkPolicy: controlando quem fala com quem dentro do cluster ๐Ÿ”โ˜ธ๏ธ

DeividFerraz2026๋…„ 5์›” 8์ผ6๋ถ„intermediate

Context

๊ธฐ๋ณธ Kubernetes ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ์ธ 'All-to-All' ํ†ต์‹  ๊ตฌ์กฐ๋กœ ์ธํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋…ธ์ถœ. ํŠน์ • Pod ์นจํ•ด ์‹œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ์„œ๋น„์Šค๋กœ์˜ ๋ฌด๋ถ„๋ณ„ํ•œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ์  ํ•œ๊ณ„ ์กด์žฌ.

Technical Solution

  • Label Selector ๊ธฐ๋ฐ˜์˜ ๋งˆ์ดํฌ๋กœ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์„ ํ†ตํ•œ Pod ๊ฐ„ ํ†ต์‹  ์ •๋ฐ€ ์ œ์–ด
  • Ingress ์„ค์ •์„ ํ†ตํ•œ ํŠน์ • Label ๋ณด์œ  Pod๋งŒ ํ—ˆ์šฉํ•˜๋Š” ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜ ์œ ์ž… ํŠธ๋ž˜ํ”ฝ ํ†ต์ œ
  • Egress ์„ค์ •์„ ํ†ตํ•œ ์™ธ๋ถ€ ๋ฐ ๋‚ด๋ถ€ ์„œ๋น„์Šค ์ ‘๊ทผ ๊ฒฝ๋กœ ์ œํ•œ์œผ๋กœ ์นจํ•ด ์‚ฌ๊ณ  ์‹œ Blast Radius ์ตœ์†Œํ™”
  • L4 ๊ณ„์ธต์˜ Protocol ๋ฐ Port ์ง€์ • ์ œ์–ด๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค๋ณ„ ํ•„์ˆ˜ ํ†ต์‹  ๊ฒฝ๋กœ ์ตœ์ ํ™”
  • CNI(Calico, Cilium ๋“ฑ) ํ”Œ๋Ÿฌ๊ทธ์ธ ์—ฐ๋™์„ ํ†ตํ•œ NetworkPolicy ๋ฆฌ์†Œ์Šค์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ ๊ฐ•์ œ ์ ์šฉ
  • DNS Resolution ์œ ์ง€๋ฅผ ์œ„ํ•œ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋Œ€์ƒ UDP/TCP 53 ํฌํŠธ ์˜ˆ์™ธ ํ—ˆ์šฉ ์„ค๊ณ„

- CNI ํ”Œ๋Ÿฌ๊ทธ์ธ์ด NetworkPolicy๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ์šฐ์„  ํ™•์ธ - Egress ์ œํ•œ ์‹œ DNS ์ฟผ๋ฆฌ ์ฐจ๋‹จ์œผ๋กœ ์ธํ•œ ์„œ๋น„์Šค ์žฅ์•  ๊ฐ€๋Šฅ์„ฑ ๊ฒ€ํ†  ๋ฐ 53๋ฒˆ ํฌํŠธ ๊ฐœ๋ฐฉ ์„ค์ • - 'Deny All' ๊ธฐ๋ณธ ์ •์ฑ… ์„ค์ • ํ›„ ์„œ๋น„์Šค๋ณ„ ํ•„์ˆ˜ ํ†ต์‹  ๊ฒฝ๋กœ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ์ „๋žต ์ฑ„ํƒ - kubectl exec ๋ฐ nc(netcat) ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•œ ์‹ค์ œ ํŠธ๋ž˜ํ”ฝ ์ฐจ๋‹จ ์—ฌ๋ถ€ ๊ฒ€์ฆ

์›๋ฌธ ์ฝ๊ธฐ