Encryption

Encryption of volumes is possible in two different ways - either on the Lightbits side or on the host side.

Host Side Encryption

With this method, the consumer of a volume defines a secret used to encrypt the volume content before it is sent over to Lightbits. This is forced by some customers to meet very high security requirements, for example for health or military applications.

The downside of this is that with host side encryption, server side compression should be disabled, because this will have no effect at all. It is still possible to enable compression, but will probably hurt overall performance.

Configuration

To get a volume encrypted, a secret must be provided and a storageclass - which enables encryption - must be created. The secret can be given globally in the kube-system namespace, or on a per namespace basis.

Host side encryption does not currently support secrets on a per volume basis.

In the simplest case - one encryption secret in the kube-system namespace - the configuration would look like this:

YAML
Copy

The Secret will then look like this:

YAML
Copy

The name of the key for encryption must be: host-encryption-passphrase.

If a finer grained secret handling is required, the CSI spec allows templating of parameters in the storageclass. With this, something like the following is possible:

YAML
Copy

Now, a storage encryption secret called storage-encryption-key must be present in the namespace of the PVC. This must also contain the host-encryption-passphrase - as shown above.

Additional explanation and samples can be found in the official CSI documentation.

Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard