Chiffrement Velero : SSE-C
J'ai récemment mis en place Velero pour sauvegarder les différents objets et les données (volumes) d'un cluster Kubernetes chez Scaleway (Kapsule). Les sauvegardes sont ensuite stockées dans un bucket S3 (toujours chez Scaleway). L'installation est relativement standard en utilisant le chart officiel Helm. Je ne détails pas l'installation, ni la configuration de base de Velero, vous trouverez suffisament de tutoriels sur internet pour ça.
Non je vais principalement parler du chiffrement des backups sur le S3, comme l'impose certaines normes (même si vous devriez le faire par défaut) par l'intermédiaire du SSE-C "Server Side Encryption Customer", c'est à dire que c'est moi qui fourni directement la key (contrairement à du SSE-S3 ou SSE-KMS).
Premièrement il faut créer un fichier, qui sera notre clé de chiffrement/déchiffrement des données (à ne pas perdre évidemment). Ici j'ai nommé la key scaleway.key (car c'est la cible) mais le nom n'a pas réellement d'importance 😄
openssl rand -out scaleway.key 32
Ensuite on récupère cette key en base64, qu'on va mettre de côté :
cat scaleway.key | base64
Puis on adapte les values de Velero (Helm) pour y injecter la key :
extraVolumeMounts:
- name: encryption-key
mountPath: /encryption
extraVolumes:
- name: encryption-key
secret:
secretName: velero-repo-encryption
extraObjects:
- apiVersion: v1
kind: ConfigMap
metadata:
name: velero-repo-encryption
type: Opaque
data:
scaleway.key: <SECRET_EN_BASE64>
Si vous avez un Vault/OpenBao ou un service externe (comme du external-secrets), utilisez-le, c'est quand même plus secure !
Et pour terminer, on vient utiliser cette key dans notre config :
configuration:
uploaderType: kopia
backupStorageLocation:
- name: scaleway
default: true
provider: aws
accessMode: ReadWrite
bucket: xxxxx
config:
profile: scaleway
region: fr-par
s3ForcePathStyle: true
s3Url: https://s3.fr-par.scw.cloud
serverSideEncryption: AES256
customerKeyEncryptionFile: /encryption/scaleway.key
Il reste à relancer le pod Velero (qui devrait être automatique après la nouvelle config) puis à lancer des nouveaux backups pour vérifier le fonctionnement. Vos backups seront maintenant chiffrés.
Le téléchargement depuis l'UI de Scaleway ne sera plus possible (un message d'erreur sera affiché dans ce sens), c'est normal sans la clé. Un article de Scaleway vous montre comment faire dans ce genre de cas :)
J'espère que cet article vous sera utile, ce n'est pas une grosse config, mais un bon point de départ pour bien gérer et sécuriser vos backups avec Velero.

