Skip to content

Server-Side Encryption

FlexFS supports S3 server-side encryption (SSE) for block data stored in object storage. When enabled, the storage provider encrypts blocks at rest using its own key management.

Server-side encryption is enabled via the --sse flag on the mount client:

Terminal window
mount.flexfs start my-volume /mnt/data --sse

Or via fstab mount options:

my-volume /mnt/data flexfs _netdev,nofail,sse 0 0

When SSE is enabled, flexFS includes the x-amz-server-side-encryption: AES256 header on all PUT requests to the block store. The storage provider (S3, GCS in S3-compatibility mode, or S3-compatible stores) handles key management and encryption transparently.

StepWhat happens
WriteMount client uploads a block with the SSE header. The storage provider encrypts the block before writing to disk.
ReadThe storage provider decrypts the block transparently before returning it. No special header is needed on GET requests.

SSE is transparent to the application — no changes are needed beyond enabling the flag.

When proxy servers are in use, the SSE header is passed through from the proxy to the underlying object storage. Blocks cached on the proxy disk are stored in their plaintext form (after any client-side E2E decryption, if applicable). SSE applies only to the blocks as stored in the object storage bucket.

FeatureServer-Side Encryption (SSE)End-to-End Encryption (E2E)
EditionAll editionsEnterprise only
Who encryptsStorage providerMount client
Key managementStorage providerUser-provided secret
Data encrypted atObject storage layerBefore leaving mount client
Metadata encryptedNoYes
Protection from storage providerNo (provider has keys)Yes (provider never sees plaintext)
ProviderSSE supportNotes
Amazon S3YesSSE-S3 (AES256)
Google Cloud StorageYesVia S3-compatibility API
S3-compatible stores (MinIO, Wasabi, Ceph RGW)VariesDepends on the implementation
Azure Blob StorageN/AAzure encrypts at rest by default
Oracle Cloud InfrastructureN/AOCI encrypts at rest by default