Room 28
CLUSTERROLES
The Master Key
- ClusterRoles grant permissions across ALL namespaces or to cluster-scoped resources.
- Create a ClusterRole for viewing nodes and secrets across the cluster.
📜 Mission Briefing
- Create a ClusterRole
cluster-viewerthat canget,listnodes and namespaces. - Bind it to ServiceAccount
escape-viewerin thedefaultnamespace. - Verify the SA can list nodes:
kubectl auth can-i list nodes --as=system:serviceaccount:default:escape-viewer. - The ClusterRole annotation contains the password:
clrole77.
Key Commands
| Command | Purpose |
|---|---|
kubectl create clusterrole NAME --verb=V --resource=R | Create ClusterRole |
kubectl create clusterrolebinding NAME --clusterrole=R --serviceaccount=NS:SA | Bind |
kubectl get clusterroles | List ClusterRoles |
kubectl get clusterrolebindings | List bindings |
ClusterRole vs Role
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cluster-viewer
annotations:
escape-password: "clrole77"
rules:
- apiGroups: [""]
resources: ["nodes", "namespaces", "persistentvolumes"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: view-cluster
subjects:
- kind: ServiceAccount
name: escape-viewer
namespace: default
roleRef:
kind: ClusterRole
name: cluster-viewer
apiGroup: rbac.authorization.k8s.io
# ClusterRole use cases:
# 1. Access cluster-scoped resources (nodes, PVs, namespaces)
# 2. Same permissions across ALL namespaces
# 3. Non-resource URLs (/healthz, /api, etc.)
# Built-in ClusterRoles:
# cluster-admin: Full access to everything
# admin: Full access within a namespace
# edit: Read-write on most resources
# view: Read-only access
# Aggregate ClusterRoles (merge rules from multiple roles)
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: monitoring
labels:
rbac.authorization.k8s.io/aggregate-to-admin: "true"
rules:
- apiGroups: ["monitoring.coreos.com"]
resources: ["prometheuses"]
verbs: ["get", "list"]
Hints
Hint 1
Hint 3
The password is clrole77.