Secrets Store CSI Driver (formally secrets-store.csi.k8s.io) is a Kubernetes SIG Auth project that uses the Container Storage Interface to mount secrets, certificates, and keys from external secret backends directly into pod filesystems as ephemeral tmpfs volumes, bypassing the Kubernetes Secret object and etcd entirely. The driver runs as a DaemonSet on every node; when a pod referencing a CSI volume of type secrets-store.csi.k8s.io is scheduled, the driver communicates with a provider plugin over gRPC to retrieve the secret content from the configured backend, writes it to a per-pod tmpfs mount, and makes it available inside the container at the specified path. When the pod terminates, the tmpfs is unmounted and the data is gone — secrets have no persistence beyond the lifetime of the pod that requested them.
The central configuration object is the SecretProviderClass CRD, which specifies the provider to use (Vault, Azure Key Vault, AWS Secrets Manager, GCP Secret Manager), the objects to retrieve and their target filenames inside the volume, and any provider-specific authentication parameters. Each provider ships as a separate plugin installed alongside the driver. A pod requests the secrets by declaring a volume of type csi referencing the driver and a named SecretProviderClass, then mounting that volume into a container; no other changes to the pod spec are needed. By default, secrets are available only as files at the mount path. An optional sync-to-Kubernetes-Secret feature creates a native Secret object mirroring the mounted content — useful for workloads that require environment variables rather than files — but with an important caveat: the synced Secret only exists while at least one pod mounting the volume is running, and is deleted when all such pods are gone. The driver also supports periodic rotation: it re-fetches secret content from the backend on a configurable interval and updates the mounted files in place, allowing applications to detect and reload credential changes without a pod restart.
The defining advantage of the CSI driver over ESO is that secrets never enter etcd or the Kubernetes API: they flow from the external backend directly into the pod’s memory-backed filesystem, reducing the blast radius of a control-plane compromise. This matters most in environments with strict data residency or compliance requirements, or in CoCo and confidential computing deployments where minimising the trust surface of the Kubernetes control plane is a design goal. The trade-off is operational friction: the pod spec must be modified to declare the CSI volume (whereas ESO works with standard Secret references that require no pod changes), and the sync-to-Secret behaviour has the lifecycle coupling noted above. In practice, ESO and the CSI driver are deployed complementarily rather than exclusively — ESO for the broad workload base that can tolerate etcd storage, and the CSI driver for specific workloads where the stronger isolation is worth the additional configuration cost.
