@@ -78,7 +78,7 @@ SIG Architecture for cross-cutting KEPs).
78
78
- [ Risks and Mitigations] ( #risks-and-mitigations )
79
79
- [ Feature not used] ( #feature-not-used )
80
80
- [ Compromised node] ( #compromised-node )
81
- - [ Compromised resource driver plugin] ( #compromised-resource-driver -plugin )
81
+ - [ Compromised kubelet plugin] ( #compromised-kubelet -plugin )
82
82
- [ User permissions and quotas] ( #user-permissions-and-quotas )
83
83
- [ Usability] ( #usability )
84
84
- [ Design Details] ( #design-details )
@@ -527,8 +527,8 @@ In production, a similar PodTemplateSpec in a Deployment will be used.
527
527
### Publishing node resources
528
528
529
529
The resources available on a node need to be published to the API server. In
530
- the typical case, this is expected to be published by the on-node driver via
531
- the kubelet, as described below . However, the source of this data may vary; for
530
+ the typical case, this is expected to be published by the on-node driver
531
+ as described in the next paragraph . However, the source of this data may vary; for
532
532
example, a cloud provider controller could populate this based upon information
533
533
from the cloud provider API.
534
534
@@ -853,7 +853,7 @@ return quickly without doing any work for pods.
853
853
854
854
# ### Compromised node
855
855
856
- Kubelet is intentionally limited to read-only access for ResourceClass and ResourceClaim
856
+ Kubelet is intentionally limited to read-only access for ResourceClaim
857
857
to prevent that a
858
858
compromised kubelet interferes with scheduling of pending pods, for example
859
859
by updating status information normally set by the scheduler.
@@ -874,22 +874,24 @@ allocation, such an attack is still possible, but the attack code would have to
874
874
be different for each resource driver because all of them will use structured
875
875
parameters differently for reporting resource availability.
876
876
877
- # ### Compromised resource driver plugin
877
+ # ### Compromised kubelet plugin
878
878
879
879
This is the result of an attack against the resource driver, either from a
880
880
container which uses a resource exposed by the driver, a compromised kubelet
881
881
which interacts with the plugin, or due to resource driver running on a node
882
882
with a compromised root account.
883
883
884
- The resource driver plugin only needs read access to objects described in this
885
- KEP, so compromising it does not interfere with dynamic resource allocation for
886
- other drivers.
884
+ The resource driver needs write access for ResourceSlices. It can be deployed so
885
+ that it can only write objects associated with the node, so the impact of a
886
+ compromise would be limited to the node. Other drivers on the node could also
887
+ be impacted because there is no separation by driver.
887
888
888
- A resource driver may need root access on the node to manage
889
+ However, a resource driver may need root access on the node to manage
889
890
hardware. Attacking the driver therefore may lead to root privilege
890
891
escalation. Ideally, driver authors should try to avoid depending on root
891
892
permissions and instead use capabilities or special permissions for the kernel
892
- APIs that they depend on.
893
+ APIs that they depend on. Long term, limiting apiserver access by driver
894
+ name would be useful.
893
895
894
896
A resource driver may also need privileged access to remote services to manage
895
897
network-attached devices. Resource driver vendors and cluster administrators
0 commit comments