Skip to content

Commit b01f7f3

Browse files
committed
dra: some more edits related to permissions
1 parent cd1f5aa commit b01f7f3

File tree

1 file changed

+12
-10
lines changed
  • keps/sig-node/4381-dra-structured-parameters

1 file changed

+12
-10
lines changed

keps/sig-node/4381-dra-structured-parameters/README.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ SIG Architecture for cross-cutting KEPs).
7878
- [Risks and Mitigations](#risks-and-mitigations)
7979
- [Feature not used](#feature-not-used)
8080
- [Compromised node](#compromised-node)
81-
- [Compromised resource driver plugin](#compromised-resource-driver-plugin)
81+
- [Compromised kubelet plugin](#compromised-kubelet-plugin)
8282
- [User permissions and quotas](#user-permissions-and-quotas)
8383
- [Usability](#usability)
8484
- [Design Details](#design-details)
@@ -527,8 +527,8 @@ In production, a similar PodTemplateSpec in a Deployment will be used.
527527
### Publishing node resources
528528

529529
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
532532
example, a cloud provider controller could populate this based upon information
533533
from the cloud provider API.
534534

@@ -853,7 +853,7 @@ return quickly without doing any work for pods.
853853

854854
#### Compromised node
855855

856-
Kubelet is intentionally limited to read-only access for ResourceClass and ResourceClaim
856+
Kubelet is intentionally limited to read-only access for ResourceClaim
857857
to prevent that a
858858
compromised kubelet interferes with scheduling of pending pods, for example
859859
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
874874
be different for each resource driver because all of them will use structured
875875
parameters differently for reporting resource availability.
876876

877-
#### Compromised resource driver plugin
877+
#### Compromised kubelet plugin
878878

879879
This is the result of an attack against the resource driver, either from a
880880
container which uses a resource exposed by the driver, a compromised kubelet
881881
which interacts with the plugin, or due to resource driver running on a node
882882
with a compromised root account.
883883

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.
887888

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
889890
hardware. Attacking the driver therefore may lead to root privilege
890891
escalation. Ideally, driver authors should try to avoid depending on root
891892
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.
893895

894896
A resource driver may also need privileged access to remote services to manage
895897
network-attached devices. Resource driver vendors and cluster administrators

0 commit comments

Comments
 (0)