ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toSecurity
์๋ฌธ ์ฝ๊ธฐ
Least-Privilege ๊ธฐ๋ฐ RBAC ์ค๊ณ๋ฅผ ํตํ ํด๋ฌ์คํฐ ๋ณด์ ๊ฐํ
๐ Kubernetes RBAC Roles Tutorial โ Secure Your Cluster Access the Right Way
AI ์์ฝ
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 ๋์ ๊ฒํ