Kubernetes

๐Ÿ”ญKubernetes ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” CIS Benchmark

Kubernetes ๋ณด์•ˆ๊ณผ ๊ด€๋ จ๋œ CIS Benchmark์™€, ๊ด€๋ จ ํˆด์ธ kube-bench์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

2024.03.18 | ์กฐํšŒ 374 |
0
|

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

์•ˆ๋…•ํ•˜์„ธ์š” ๊ตฌ๋…์ž๋‹˜, ์ตœ์‹  DevOps ์†Œ์‹์„ ์ •๋ฆฌํ•ด์„œ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๋Š” DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ์ฃผ์—๋Š” Kubernetes์˜ ์ธํ”„๋ผ ํ™˜๊ฒฝ์˜ ๋ณด์•ˆ ์ด์Šˆ๋‚˜ ์ทจ์•ฝ์ ์„ ๊ฒ€ํ† ํ•˜๋Š” CIS Kubernetes Benchmark์™€, ์ด๋Ÿฌํ•œ ๊ฒ€ํ†  ํ™œ๋™์„ ๋„์™€์ฃผ๋Š” kube-bench์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”Ž์ง€๊ธˆ ์šด์˜ํ•˜๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์•ˆ์ „ํ• ๊นŒ? CIS Benchmark

CIS๋Š” Benchmark๋Š” ๊ตญ์ œ์กฐ์ง CIS์—์„œ ๋ฐœํ‘œํ•œ ์ธํ”„๋ผ ๋ณด์•ˆ ๊ฐ€์ด๋“œ๋ผ์ธ์ž…๋‹ˆ๋‹ค.
CIS๋Š” Benchmark๋Š” ๊ตญ์ œ์กฐ์ง CIS์—์„œ ๋ฐœํ‘œํ•œ ์ธํ”„๋ผ ๋ณด์•ˆ ๊ฐ€์ด๋“œ๋ผ์ธ์ž…๋‹ˆ๋‹ค.

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์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
kube-bench์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

 

๋‹ค๊ฐ€์˜ฌ ๋‰ด์Šค๋ ˆํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ง€๊ธˆ ๊ตฌ๋…ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”

โœ‰๏ธ

์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ ์–ด๋– ์…จ๋‚˜์š”?

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€ ๋‹˜์—๊ฒŒ โ˜•๏ธ ์ปคํ”ผ์™€ โœ‰๏ธ ์ชฝ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์„ธ์š”!

๋Œ“๊ธ€

์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”

ํ™•์ธ
์˜๊ฒฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ œ์ผ ๋จผ์ € ๋Œ“๊ธ€์„ ๋‹ฌ์•„๋ณด์„ธ์š” !
ยฉ 2024 DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌธ์˜eduukulelekim@gmail.com

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์„œ๋น„์Šค ์†Œ๊ฐœ์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ œ๋ณด

์„œ๋น„์Šค ์ด์šฉ ๋ฌธ์˜admin@team.maily.so

๋ฉ”์ผ๋ฆฌ ์‚ฌ์—…์ž ์ •๋ณด

๋ฉ”์ผ๋ฆฌ (๋Œ€ํ‘œ์ž: ์ดํ•œ๊ฒฐ) | ์‚ฌ์—…์ž๋ฒˆํ˜ธ: 717-47-00705 | ์„œ์šธ ์„œ์ดˆ๊ตฌ ๊ฐ•๋‚จ๋Œ€๋กœ53๊ธธ 8, 8์ธต 11-7ํ˜ธ

์ด์šฉ์•ฝ๊ด€ | ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ | ์ •๊ธฐ๊ฒฐ์ œ ์ด์šฉ์•ฝ๊ด€