Bird
Raised Fist0
Kubernetesdevops~5 mins

RoleBindings and ClusterRoleBindings in Kubernetes - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a RoleBinding in Kubernetes?
A RoleBinding grants permissions defined in a Role to a user or set of users within a specific namespace.
Click to reveal answer
beginner
How does a ClusterRoleBinding differ from a RoleBinding?
A ClusterRoleBinding grants permissions defined in a ClusterRole to users across the entire cluster, not limited to a namespace.
Click to reveal answer
intermediate
Can a RoleBinding reference a ClusterRole?
Yes, a RoleBinding can reference either a Role or a ClusterRole, but its permissions apply only within the RoleBinding's namespace.
Click to reveal answer
beginner
What is the purpose of RBAC in Kubernetes?
RBAC (Role-Based Access Control) manages who can do what actions on which resources in a Kubernetes cluster.
Click to reveal answer
beginner
What subjects can be bound in RoleBindings and ClusterRoleBindings?
Subjects can be users, groups, or service accounts that receive the permissions defined in the Role or ClusterRole.
Click to reveal answer
What scope does a RoleBinding apply to?
AA single namespace
BThe entire cluster
COnly system components
DOnly nodes
Which binding grants cluster-wide permissions?
AClusterRoleBinding
BRoleBinding
CServiceAccountBinding
DNamespaceBinding
Can a ClusterRoleBinding bind to a Role?
AOnly for system users
BYes, always
COnly if in the default namespace
DNo, ClusterRoleBindings bind only to ClusterRoles
Which of these is NOT a valid subject in RoleBindings?
AUser
BPod
CServiceAccount
DGroup
What does RBAC stand for?
ARole-Bound Access Control
BResource-Based Access Control
CRole-Based Access Control
DResource-Bound Access Control
Explain the difference between RoleBinding and ClusterRoleBinding in Kubernetes.
Think about the scope of permissions and what roles they connect to.
You got /4 concepts.
    Describe what subjects are in the context of RoleBindings and ClusterRoleBindings and give examples.
    Subjects are who gets the permissions.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main difference between a RoleBinding and a ClusterRoleBinding in Kubernetes?
      easy
      A. RoleBinding and ClusterRoleBinding are exactly the same.
      B. RoleBinding grants permissions cluster-wide, while ClusterRoleBinding grants permissions within a single namespace.
      C. RoleBinding is used only for system users, ClusterRoleBinding is for regular users.
      D. RoleBinding grants permissions within a single namespace, while ClusterRoleBinding grants permissions cluster-wide.

      Solution

      1. Step 1: Understand RoleBinding scope

        RoleBinding assigns permissions only inside one namespace.
      2. Step 2: Understand ClusterRoleBinding scope

        ClusterRoleBinding assigns permissions across the entire cluster, not limited to a namespace.
      3. Final Answer:

        RoleBinding is namespace-scoped; ClusterRoleBinding is cluster-scoped. -> Option D
      4. Quick Check:

        Scope difference = RoleBinding grants permissions within a single namespace, while ClusterRoleBinding grants permissions cluster-wide. [OK]
      Hint: Remember: RoleBinding = namespace, ClusterRoleBinding = whole cluster [OK]
      Common Mistakes:
      • Confusing the scope of RoleBinding and ClusterRoleBinding
      • Thinking both bindings work cluster-wide
      • Assuming RoleBinding is for system users only
      2. Which of the following is the correct syntax to create a RoleBinding in Kubernetes YAML?
      easy
      A. apiVersion: v1 kind: RoleBinding metadata: name: read-pods subjects: - kind: User name: jane roleRef: kind: Role name: pod-reader
      B. apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods subjects: - kind: User name: jane apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io
      C. apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-pods subjects: - kind: User name: jane roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io
      D. apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods subjects: - kind: User name: jane roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io

      Solution

      1. Step 1: Check apiVersion and kind

        Correct apiVersion for RoleBinding is rbac.authorization.k8s.io/v1 and kind is RoleBinding.
      2. Step 2: Validate subjects and roleRef fields

        Subjects must include kind, name, and apiGroup. roleRef must reference a Role with correct apiGroup.
      3. Final Answer:

        apiVersion: rbac.authorization.k8s.io/v1, kind: RoleBinding, with complete subjects including apiGroup, and roleRef to Role. -> Option B
      4. Quick Check:

        Correct apiVersion and fields = apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods subjects: - kind: User name: jane apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io [OK]
      Hint: RoleBinding YAML needs apiVersion rbac.authorization.k8s.io/v1 and kind RoleBinding [OK]
      Common Mistakes:
      • Using wrong apiVersion or kind
      • Omitting apiGroup in subjects or roleRef
      • Confusing RoleBinding with ClusterRoleBinding syntax
      3. Given this YAML snippet for a ClusterRoleBinding:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: admin-binding
      subjects:
      - kind: User
        name: alice
        apiGroup: rbac.authorization.k8s.io
      roleRef:
        kind: ClusterRole
        name: cluster-admin
        apiGroup: rbac.authorization.k8s.io
      What permission scope does user alice get?
      medium
      A. Permissions cluster-wide with cluster-admin rights
      B. No permissions because ClusterRoleBinding requires a ServiceAccount subject
      C. Permissions only in the default namespace
      D. Permissions only in the namespace where the ClusterRoleBinding is created

      Solution

      1. Step 1: Identify the binding type and role

        The YAML defines a ClusterRoleBinding that binds user alice to the cluster-admin ClusterRole.
      2. Step 2: Understand ClusterRoleBinding scope

        ClusterRoleBinding grants permissions cluster-wide, so alice has admin rights across all namespaces.
      3. Final Answer:

        User alice has cluster-wide admin permissions. -> Option A
      4. Quick Check:

        ClusterRoleBinding + cluster-admin = cluster-wide admin [OK]
      Hint: ClusterRoleBinding with cluster-admin role = full cluster access [OK]
      Common Mistakes:
      • Assuming permissions are limited to one namespace
      • Thinking only ServiceAccounts can be subjects
      • Confusing ClusterRoleBinding with RoleBinding scope
      4. You applied this YAML to create a RoleBinding:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: read-pods
      subjects:
      - kind: User
        name: bob
      roleRef:
        kind: Role
        name: pod-reader
        apiGroup: rbac.authorization.k8s.io
      But bob cannot list pods in the namespace. What is the likely problem?
      medium
      A. The subjects field is missing apiGroup for the user.
      B. The roleRef kind should be ClusterRole instead of Role.
      C. The RoleBinding must be created in the kube-system namespace.
      D. The user bob does not exist in Kubernetes.

      Solution

      1. Step 1: Check subjects field completeness

        The subjects entry for user bob lacks the required apiGroup field, which is needed to identify the user correctly.
      2. Step 2: Understand impact of missing apiGroup

        Without apiGroup, Kubernetes cannot match the user to the RoleBinding, so permissions are not granted.
      3. Final Answer:

        Missing apiGroup in subjects causes permission failure. -> Option A
      4. Quick Check:

        Subjects need apiGroup for user binding [OK]
      Hint: Always include apiGroup in subjects for users [OK]
      Common Mistakes:
      • Omitting apiGroup in subjects
      • Confusing Role and ClusterRole in roleRef
      • Assuming namespace or user existence is the problem
      5. You want to grant a service account named deploy-bot in namespace dev permission to create pods across all namespaces. Which is the correct approach?
      hard
      A. Create a RoleBinding in each namespace binding deploy-bot to a Role with pod creation rights.
      B. Create a RoleBinding in the dev namespace binding deploy-bot to a Role with pod creation rights.
      C. Create a ClusterRoleBinding binding the deploy-bot service account to a ClusterRole with pod creation rights.
      D. Create a ClusterRole with pod creation rights but no binding is needed.

      Solution

      1. Step 1: Identify scope needed

        Permission to create pods across all namespaces requires cluster-wide scope.
      2. Step 2: Choose correct binding type

        A ClusterRoleBinding is needed to bind the deploy-bot service account to a ClusterRole with pod creation rights cluster-wide.
      3. Final Answer:

        Create a ClusterRoleBinding for deploy-bot to a ClusterRole with pod creation rights. -> Option C
      4. Quick Check:

        ClusterRoleBinding = cluster-wide permissions [OK]
      Hint: ClusterRoleBinding for cluster-wide access to service accounts [OK]
      Common Mistakes:
      • Using RoleBinding for cluster-wide permissions
      • Not creating any binding after ClusterRole
      • Creating RoleBinding in only one namespace