ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿ” Kubernetes RBAC Roles Tutorial โ€” Secure Your Cluster Access the Right Way
Dev.toDev.to
Security

Least-Privilege ๊ธฐ๋ฐ˜ RBAC ์„ค๊ณ„๋ฅผ ํ†ตํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋ณด์•ˆ ๊ฐ•ํ™”

๐Ÿ” Kubernetes RBAC Roles Tutorial โ€” Secure Your Cluster Access the Right Way

Python-T Point2026๋…„ 5์›” 20์ผ8๋ถ„intermediate

Context

๊ณผ๋„ํ•œ cluster-admin ๊ถŒํ•œ ๋ถ€์—ฌ๋กœ ์ธํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์ ๊ณผ ์šด์˜ ๋ฆฌ์Šคํฌ ์กด์žฌ. API Server ์ˆ˜์ค€์˜ ์„ธ๋ฐ€ํ•œ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ ๋‚จ์šฉ๊ณผ ์‹ค์ˆ˜๋กœ ์ธํ•œ ๋ฆฌ์†Œ์Šค ์‚ญ์ œ ๋ฐฉ์ง€ ํ•„์š”.

Technical Solution

  • API Server์˜ Attribute-based ํ‰๊ฐ€ ๋ชจ๋ธ์„ ํ†ตํ•œ User, Verb, Resource, Namespace ๊ธฐ๋ฐ˜์˜ ๋…๋ฆฝ์  ์š”์ฒญ ๊ฒ€์ฆ
  • Role(Namespace ๋ฒ”์œ„)๊ณผ ClusterRole(Cluster ๋ฒ”์œ„)์˜ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•œ ๊ถŒํ•œ ์ ์šฉ ๋ฒ”์œ„์˜ ๊ณ„์ธตํ™”
  • RoleBinding ๋ฐ ClusterRoleBinding์„ ํ™œ์šฉํ•œ ์ •์ฑ… ์ •์˜์™€ ์‹ค์ œ ์‚ฌ์šฉ์ž ํ• ๋‹น์˜ Decoupling ๊ตฌํ˜„
  • ๊ธฐ๋Šฅ์  ์ฑ…์ž„ ์ค‘์‹ฌ์˜ Role ์„ค๊ณ„๋ฅผ ํ†ตํ•œ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์˜ ๊ถŒํ•œ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ
  • Subresources(์˜ˆ: pods/log)์— ๋Œ€ํ•œ ๋ณ„๋„ ๊ถŒํ•œ ์ •์˜๋ฅผ ํ†ตํ•œ ์ •๋ฐ€ํ•œ API ์ ‘๊ทผ ์ œ์–ด
  • Default Deny ์›์น™์„ ์ ์šฉํ•œ Whitelist ๊ธฐ๋ฐ˜์˜ ๊ถŒํ•œ ๋ถ€์—ฌ ์ฒด๊ณ„ ๊ตฌ์ถ•

- cluster-admin ๊ถŒํ•œ ์š”์ฒญ ์‹œ ๊ตฌ์ฒด์ ์ธ ํ•„์š” Action์„ ์ •์˜ํ•˜์—ฌ ์ตœ์†Œ ๊ถŒํ•œ Role ์ƒ์„ฑ - ๊ฐœ๋ณ„ User๊ฐ€ ์•„๋‹Œ Group ๋ฐ ServiceAccount ๋‹จ์œ„๋กœ RoleBinding์„ ๊ตฌ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ ํ™•๋ณด - kubectl auth can-i ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•œ ์‹ค์ œ ๊ถŒํ•œ ์ ์šฉ ์—ฌ๋ถ€ ์ƒ์‹œ ๊ฒ€์ฆ - Label ๊ธฐ๋ฐ˜์˜ ์„ธ๋ฐ€ํ•œ ๋ฆฌ์†Œ์Šค ์ œ์–ด๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ OPA Gatekeeper ๋„์ž… ๊ฒ€ํ† 

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