ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toSecurity
์๋ฌธ ์ฝ๊ธฐ
NetworkPolicy ๊ธฐ๋ฐ์ Zero Trust ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ๋ก ํด๋ฌ์คํฐ ๋ด ํก์ ์ด๋ ์ฐจ๋จ
Kubernetes NetworkPolicy: controlando quem fala com quem dentro do cluster ๐โธ๏ธ
AI ์์ฝ
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) ๋๊ตฌ๋ฅผ ํ์ฉํ ์ค์ ํธ๋ํฝ ์ฐจ๋จ ์ฌ๋ถ ๊ฒ์ฆ