์๋ ํ์ธ์ ๊ตฌ๋ ์๋, ์ต์ DevOps ์์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
์ด๋ฒ์ฃผ์๋ Kubernetes์ ์ธํ๋ผ ํ๊ฒฝ์ ๋ณด์ ์ด์๋ ์ทจ์ฝ์ ์ ๊ฒํ ํ๋ CIS Kubernetes Benchmark์, ์ด๋ฌํ ๊ฒํ ํ๋์ ๋์์ฃผ๋ kube-bench์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๐์ง๊ธ ์ด์ํ๋ Kubernetes ํด๋ฌ์คํฐ๋ ์์ ํ ๊น? CIS Benchmark
CIS Benchmark๋, ์ฌ์ด๋ฒ ๋ณด์์ฑ ํฅ์์ ์ํด ํ๋ํ๋ ๊ตญ์ ์กฐ์ง 'Center of Internet Security'์์ ์ ์ํ๋ IT ์ธํ๋ผ ๋ณด์ ๊ด๋ จ ์ฐ์ ์ฌ๋ก ๋ฐ ๊ฐ์ด๋๋ผ์ธ์ ์๋ฏธํฉ๋๋ค.
ํ์ฌ AWS์ ๊ฐ์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๋ถํฐ Ubuntu Linux ๊ฐ์ ์ด์์ฒด์ ๊น์ง, ๋ค์ํ ๋์์ ๋ํ ์ฌ๋ฌ ์ข ๋ฅ์ CIS Benchmark๊ฐ ๊ณต๊ฐ๋์ด ์๋๋ฐ์. ์ด ์ค Kubernetes์ ๊ด๋ จ๋ ๊ฒ์ด ๋ฐ๋ก CIS Kubernetes Benchmark์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด CIS Kubernetes Benchmark๋ ์ด๋ค ์ญํ ์ ํ ์ ์์๊น์?
๋จผ์ , ๋ค์ํ ์ ๋ฌธ๊ฐ๋ค์ด ๋ชจ์ธ ๊ตญ์ ์กฐ์ง CIS์์ Kubernetes์ ํนํ๋ ๋ณด์ ๊ฐ์ด๋๋ผ์ธ์ ์ ๊ณตํ์ฌ, ํ์ฌ ์๋ ค์ง Kubernetes ๊ด๋ จ ์ทจ์ฝ์ ๊ณผ ์๋ชป๋ ํด๋ฌ์คํฐ ์ค์ ์ผ๋ก๋ถํฐ ์์ ํ Kubernetes ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋์์ค ์ ์์ต๋๋ค.
๋ํ ์ธํ๋ผ/DevOps ์์ง๋์ด ์ ์ฅ์์ CIS Benchmark๋ฅผ ํ์ฉํ๋ ํด์ ์ฌ์ฉํจ์ผ๋ก์จ Kubernetes ํด๋ฌ์คํฐ๊ฐ ๋ณด์ ์ธก๋ฉด์์ ๊ถ์ฅ๋๋ ๊ธฐ์ค์ ๋ถํฉํ๋์ง๋ฅผ ์ฝ๊ฒ ํ์ธํ๊ณ ์ ์ ํ ์กฐ์น๋ฅผ ์ทจํ ์ ์๊ฒ ๋ฉ๋๋ค.
CIS Kubernetes Benchmark์ ๋ํ์ ์ธ ๊ฒํ ๋์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Kubernetes ํด๋ฌ์คํฐ ์ค์
- Worker Node ์ค์
- Network Policy
- Secret ๊ด๋ฆฌ
- Logging ๋ฐ Monitoring
- Pod ๋ณด์ ์ ์ฑ
CIS Kubernetes Benchmark๋ ์ ๋์์ ๋ํด ๋ค์์ ๊ถ์ฅ ์ฌํญ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ์ฌํญ์ ๊ฒํ ๊ฒฐ๊ณผ๋ ๋ณด์ ์์ค์ด๋ ์ค์ ์ฌ๋ถ, ์ค์ํด์ผ ํ๋ ์ฃผ์ฒด ๋ฑ์ด ๋ช ์๋ฉ๋๋ค.
์ง๊ธ๊น์ง CIS Kubernetes Benchmark์ ๋ํด ์ดํด๋ณด์๋๋ฐ์. ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ Benchmark ๊ฒํ ๋ฅผ ํ ์ ์์๊น์? ์์์๋ ์ ๊น ์ธ๊ธํ์ง๋ง, ๊ด๋ จ ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ๋ฐ์. ์ฌ๋ฌ๊ฐ์ง ํด ์ค์์๋ ๋ง์ด ์ฐ์ด๋ kube-bench์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๐CIS Kubernetes Benchmark ๊ฒํ ๋ฅผ ๋์์ฃผ๋ kube-bench
CIS Benchmark ๊ฒํ ๋ก kube-bench๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ด์ ๋ ํธ์์ฑ ๋๋ฌธ์ธ๋ฐ์. kube-bench๋ ์๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก CIS Kubernetes Benchmark ๊ฒํ ๋ฐ ๊ฒฐ๊ณผ ํ์ธ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ ์ ์์ต๋๋ค.
- Kubernetes ํ๊ฒฝ์์ kube-bench ๊ณต์ Docker ์ด๋ฏธ์ง ์คํ
- Kubernetes ํ๊ฒฝ์์ kube-bench ๊ณต์ Job yaml ํ์ผ ์คํ
kube-bench ์คํ ํ ๊ฒํ ๊ฒฐ๊ณผ๋ ์ ์ด๋ฏธ์ง์ ๊ฐ์ด ํ์๋ฉ๋๋ค.
๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ๋ณด์ ์ฌํญ์ ๋ํ ๊ฒํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ผ๋ฉฐ, ํ์ฌ ๋ณด์ ์ฌํญ์ ์ค์ ์ฌ๋ถ(PASS/FAIL)์ ๋ณด์ ์ฌํญ์ ๋ํ ์ธ๋ถ ์ค๋ช ์ ๋ํด์๋ ํ์ธํ ์ ์์ต๋๋ค.
์ ๊ฒํ ๊ฒฐ๊ณผ ํญ๋ชฉ ์ค FAIL๋ก ํ์๋ 1.1.1 ํญ๋ชฉ์ ์๋ก ๋ค์ด์ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
1.1.1 ํญ๋ชฉ์ Kubernetes API ์๋ฒ์ --allow-privileged ์ต์ ๊ฐ์ false๋ก ๋ณ๊ฒฝํ๋ผ๋ ๊ถ์ฅ์ฌํญ์ธ๋ฐ์. ์ค์ ๋ก ํด๋น ํญ๋ชฉ์ Kubernetes API ์๋ฒ์ ๋๋ฌด ๋ง์ ๊ถํ์ ์ฃผ์ง ์์์ผ๋ก์จ ๋ณด์์ฑ์ ๋์ด๊ธฐ ์ํ ๊ถ์ฅ ์ฌํญ์ ๋๋ค.
์์ ๊ฐ์ ๊ฒํ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค๋ ๊ฒ์ ํ์ฌ Kubernetes API Server์ --allow-privileged ๊ฐ์ด false๊ฐ ์๋๋ ๋ป์ด๋ฉฐ, ๋ง์ฝ ํด๋น ๊ฐ์ false๋ก ๋ณ๊ฒฝ ํ ๋ค์ kube-bench๋ฅผ ์คํํ๋ฉด 1.1.1 ํญ๋ชฉ์ ๋ํ ๊ฒํ ๊ฒฐ๊ณผ๊ฐ PASS๋ก ํ์๋ฉ๋๋ค.
์ด๋ฐ ๋ฐฉ์์ผ๋ก CIS Kubernetes Benchmark์์ ๊ถ์ฅํ๋ ๋ณด์ ํญ๋ชฉ์ ์ค์ํ๋ฉด, ๋์ฑ ์์ ํ Kubernetes ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ ์์์ง์์ Kubernetes ํด๋ฌ์คํฐ์ ๋ณด์์ฑ์ ๋์ฌ์ฃผ๋ ๊ฐ์ด๋๋ผ์ธ CIS Kubernetes Benchmark์ kube-bench ํด์ ๋ํด์ ์์๋ดค์ต๋๋ค.๐ค
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์