Skip to content

Commit 48af774

Browse files
committed
address feedback
1 parent e151564 commit 48af774

File tree

1 file changed

+14
-5
lines changed
  • keps/sig-auth/2907-secrets-store-csi-driver

1 file changed

+14
-5
lines changed

keps/sig-auth/2907-secrets-store-csi-driver/README.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ demonstrate the interest in a KEP within the wider Kubernetes community.
9595

9696
- Extending the Kubernetes Secret object
9797
- Introduce a new Kubernetes type
98+
- Consume only: The proposed CRD and implementation does not provide a way to add/write/edit secrets in the external stores.
9899

99100
## Proposal
100101

@@ -110,16 +111,22 @@ This project introduces a new Container Storage Interface (CSI) driver for fetch
110111

111112
### Notes/Constraints/Caveats (Optional)
112113

113-
Since the proposal is a storage driver, native support for presenting secrets to a process through environment variables is not possible. In addition to the default mount, the driver also supports syncing the mounted content as Kubernetes secret. This is an optional feature and isn't enabled by default.
114+
Since the proposal is a storage driver, native support for presenting secrets to a process through environment variables is not possible. The driver includes a method to sync the mounted content as Kubernetes secret. This is an optional feature, isn't enabled by default, and will not be considered a GA feature of the driver.
114115

115116
### Risks and Mitigations
116117

117118
#### Directory traversal vulnerabilities
118119

119-
The driver<->provider interface has been expanded to allow the driver to be the only process that actually writes files to the pod filesystem. The only hostpath providers need are now the one for creating the unix socket used for communication with the driver process.
120+
[CVE-2020-8567](https://github.com/kubernetes-sigs/secrets-store-csi-driver/issues/384) is an example of this risk. Since then, the interface
121+
between the driver and provider processes has been updated to:
122+
123+
- eliminate the `kubelet/pods` `hostPath` volume mount from providers
124+
- consolidate all filesystem IO to the driver process
120125

121126
The driver protects against directory traversal vulnerabilities by re-using the `atomic_writer` used by Kubernetes Secrets and ConfigMaps which includes protections against writing to unintended paths.
122127

128+
Providers need a single remaining `hostPath` to share a unix domain socket file with the driver process, but this path has no other system critical or security sensitive access.
129+
123130
#### Authenticating to external secret APIs
124131

125132
Authentication and authorization is largely up to the external API and its provider process, but the driver itself does include a few features that enable scoping access to secrets to individual pods.
@@ -143,9 +150,12 @@ Additionally [KEP 1855](https://github.com/kubernetes/enhancements/tree/master/k
143150
- Month+ soak of minor release
144151
- Completion of milestone requirements
145152
- Agreement of stability documented on community call from 3+ provider maintainers
153+
- User facing API groups (`SecretProviderClass` and `SecretProviderClassPodStatus` CRDs) promoted to v1
146154

147155
#### Deprecation
148156

157+
There are currently no planned deprecations. The following rules will be followed if a deprecation is needed.
158+
149159
- Announce deprecation and support policy of the existing flag
150160
- Two versions passed since introducing the functionality that deprecates the flag (to address version skew)
151161
- Address feedback on usage/changed behavior, provided on GitHub issues
@@ -248,9 +258,9 @@ implementation difficulties, etc.).
248258
### Dependencies
249259

250260
- [Kubernetes Container Storage Interface](https://github.com/kubernetes/community/blob/98b3d97d2e7f91bb62b8e88710c29c1675efb689/contributors/design-proposals/storage/container-storage-interface.md)
251-
- [KEP 596](https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/596-csi-inline-volumes)
252-
- Supports windows containers (Kubernetes version v1.18+)
261+
- [KEP 596: CSI Inline Volume Support GA](https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/596-csi-inline-volumes)
253262
- [KEP 1855: Service Account Token for CSI Driver](https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1855-csi-driver-service-account-token)
263+
- Supports windows containers (Kubernetes version v1.18+)
254264

255265
The driver uses CSI Inline Volumes to mount the external secrets-store objects in the pod. The CSI Inline Volumes feature is enabled by default in Kubernetes 1.16+. For windows containers, the CSI Inline Volumes feature is enabled by default in Kubernetes 1.18+.
256266

@@ -368,7 +378,6 @@ https://secrets-store-csi-driver.sigs.k8s.io/troubleshooting.html
368378
## Drawbacks
369379

370380
- Environment Variables: There appears to be a strong desire to consume secrets using environment variables but the only way for this to work currently is through syncing secrets to Kubernetes Secrets.
371-
- Consume only: The proposed CRD and implementation does not provide a way to add/write/edit secrets in the external stores.
372381

373382
## Alternatives
374383

0 commit comments

Comments
 (0)