Node Authorization and NodeRestriction
A kubelet authenticates to the apiserver as system:node:<name> in the group system:nodes, and what that identity may read is decided per request rather than by a role. This guide reads the certificate and then shows why the obvious way to audit it gives the wrong answer.
Cluster Component Security Guide 13 of 42 Intermediate
- Kubernetesapiserver v1.36.4, kubelet v1.36.3
- Runtimecontainerd 2.2.6
- CNICilium 1.18.1
- Built withkubeadm v1.36.3
- TimeAbout 16 min
kubeadm issues the kubelet client certificate with a one-year lifetime and enables rotation. The Node authorizer is the first entry in the apiserver's --authorization-mode=Node,RBAC.
- Host kernel7.0.0-29
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| CKA5001 | 192.168.0.41 | Ubuntu 26.04 LTS | Control Plane Node (tainted NoSchedule) | 2 Core | 4 GB | 50 GB |
| CKA5001-NODE01 | 192.168.0.42 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
| CKA5001-NODE02 | 192.168.0.43 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
| CKA5001-NODE03 | 192.168.0.44 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
This guide includes
Use this when you need to say what a compromised node could actually reach. This matters because the obvious audit - impersonating the node identity and asking - returns an answer that is wrong, because Node authorization is not RBAC.
- finding the kubelet's own credential on disk and reading what it claims to be
- impersonating that identity to ask what it is permitted to do
- seeing why that answer misleads, and what actually constrains a node
Before you start
- guide 12 - the component this identity belongs to.
-
The certificate, and what it claims to be
-
What the obvious audit says, and why it is wrong