100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Containers, Docker & Kubernetes
30 minintermediate

RBAC — Roles, ClusterRoles, RoleBindings and ServiceAccounts

Role-Based Access Control (RBAC) is the mechanism by which Kubernetes decides whether a given identity may perform a given action on a given resource. Without RBAC, every Pod, every developer, and every CI pipeline would have equivalent access to the entire cluster, making it impossible to prevent a junior developer's misconfigured deployment from deleting production StatefulSets or a compromised CI runner from reading Secrets across all namespaces. RBAC in Kubernetes operates on three concepts: a Role (or ClusterRole) defines a set of permissions — which verbs (`get`, `list`, `watch`, `create`, `update`, `patch`, `delete`) on which API groups and resources; a RoleBinding (or ClusterRoleBinding) grants a Role to a subject (a User, a Group, or a ServiceAccount); and a ServiceAccount is the Kubernetes identity that Pods use to authenticate to the API server, distinct from human user identities which Kubernetes delegates to an external identity provider. Understanding the difference between namespace-scoped Roles and cluster-scoped ClusterRoles, and between namespace-scoped RoleBindings and cluster-scoped ClusterRoleBindings, is the foundational knowledge that determines whether access grants are correctly scoped.

The principle of least privilege — grant the minimum permissions required for a task and nothing more — is not a security nicety in Kubernetes; it is the primary defence mechanism against a widespread class of production incidents where a compromised Pod, a runaway controller, or an accidentally deployed debug tool causes collateral damage far beyond its intended scope. A Pod that needs to list ConfigMaps in its own namespace should have exactly that permission and no ability to list Secrets, delete Deployments, or read objects in other namespaces. Implementing this discipline consistently across all ServiceAccounts in a cluster is what separates a cluster with one blast radius from a cluster where a single compromised container is contained to its immediate context.

Analogy🏏Cricket
🏏 Think of it like cricket: The Pod-ReplicaSet-Deployment hierarchy maps precisely onto the three levels of IPL franchise team management. A Pod is a single player on the field at a given moment — the smallest unit of participation, carrying its own identity and fulfilling a specific role in the current game. A ReplicaSet is the franchise's match-day playing XI contract — it specifies that exactly eleven players matching a specific profile must always be on the field; if one is injured and leaves, the team management immediately sends a substitute of the same profile to restore the count. A Deployment is the franchise's season-long team strategy — it manages how the playing XI evolves between matches: when a new batting approach is adopted, the Deployment replaces the old XI with the new one in a controlled rolling substitution rather than swapping all eleven players simultaneously and disrupting team cohesion. Just as the franchise director does not manage individual players directly — the playing XI contract (ReplicaSet) handles the count and the season strategy (Deployment) handles the transitions — you never manage Pods directly in production; the Deployment manages the transition and the ReplicaSet maintains the count. This reveals why the three-level hierarchy exists rather than one omnibus 'workload' object: each level solves one specific problem, and composing three focused abstractions produces better separation of concerns than one object that conflates scheduling, scaling, and update management.
Lesson 22 of 33
0% complete