You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-auth/2907-secrets-store-csi-driver/README.md
+14-5Lines changed: 14 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -95,6 +95,7 @@ demonstrate the interest in a KEP within the wider Kubernetes community.
95
95
96
96
- Extending the Kubernetes Secret object
97
97
- 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.
98
99
99
100
## Proposal
100
101
@@ -110,16 +111,22 @@ This project introduces a new Container Storage Interface (CSI) driver for fetch
110
111
111
112
### Notes/Constraints/Caveats (Optional)
112
113
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.
114
115
115
116
### Risks and Mitigations
116
117
117
118
#### Directory traversal vulnerabilities
118
119
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
120
125
121
126
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.
122
127
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
+
123
130
#### Authenticating to external secret APIs
124
131
125
132
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.
- 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)
253
262
-[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+)
254
264
255
265
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+.
- 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.
0 commit comments