Chiffrement Velero : SSE-C

sse-c 24/12/2025

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.

Enabling server-side encryption (SSE-C) | Scaleway Documentation
Enable server-side encryption with customer-provided keys (SSE-C) in Scaleway.

Tags

🌱 DJΞRFY 🚀

👨🏻‍💻 Cloud Solutions Architect. Like #Linux, #Apple, #Kubernetes, #Docker, #Unraid, #Traefik, #Hacking, #Chia. Member of @Pool.Energy staff (Chia blockchain) 🌱 ¯\_(ツ)_/¯