Encryption
For more detail on encryption at rest in StorageOS, please see the reference page.
Enabling encryption on a volume
Encrypting a volume is done by simply creating a volume with the
storageos.com/encryption=true
label. This can be set on the PVC or on
the PVC’s StorageClass.
This label is all that is needed. If it is present, the mutating admission webhook that runs as part of the StorageOS API Manager will create the encryption key, link it to the PVC and store it in a secret.
Encryption is enabled when a volume is provisioned, and it can not be removed during during the volume’s lifetime.
An example encrypted volume
-
Option 1: Label the PVC
Add the label in the PVC definition, for instance:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: encrypted-vol labels: storageos.com/encryption: "true" # Label <----- spec: storageClassName: "fast" accessModes: - ReadWriteOnce resources: requests: storage: 1G
The encryption label as set on a PVC takes precedence over the encryption label as set on the PVC’s StorageClass.
-
Option 2: Add a parameter to the StorageClass
Add a parameter to the StorageClass definition. This will cause the above label to be present on PVCs created using this StorageClass. For instance:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: storageos-encrypted parameters: fsType: ext4 storageos.com/encryption: "true" # Label <-------- # Change the NameSpace below if StorageOS doesn't run in kube-system csi.storage.k8s.io/controller-expand-secret-name: csi-controller-expand-secret csi.storage.k8s.io/controller-publish-secret-name: csi-controller-publish-secret csi.storage.k8s.io/node-publish-secret-name: csi-node-publish-secret csi.storage.k8s.io/provisioner-secret-name: csi-provisioner-secret csi.storage.k8s.io/controller-expand-secret-namespace: kube-system # NameSpace that runs StorageOS Daemonset csi.storage.k8s.io/controller-publish-secret-namespace: kube-system # NameSpace that runs StorageOS Daemonset csi.storage.k8s.io/node-publish-secret-namespace: kube-system # NameSpace that runs StorageOS Daemonset csi.storage.k8s.io/provisioner-secret-namespace: kube-system # NameSpace that runs StorageOS Daemonset provisioner: storageos # CSI driver (recommended)