Chiffrement côté serveur (SSE-C)
Relution peut chiffrer les objets qu’il stocke dans un bucket compatible S3 à l’aide du chiffrement côté serveur avec une clé fournie par le client (SSE-C). Avec SSE-C, Relution envoie la clé avec chaque requête, et le backend de stockage l’utilise pour chiffrer les objets à l’écriture et les déchiffrer à la lecture. Le backend ne stocke jamais lui-même la clé : sa conservation en toute sécurité relève de la seule responsabilité de l’exploitant.
Prérequis
- Une configuration de stockage objet compatible S3 fonctionnelle - voir Connecter le stockage →.
- Un backend de stockage objet prenant en charge SSE-C. Nous avons vérifié la prise en charge avec SeaweedFS et Hetzner Object Storage. D’autres backends compatibles S3 peuvent fonctionner, mais n’ont pas été testés.
- Une clé de 256 bits (voir ci-dessous).
Générer la clé
SSE-C nécessite une clé de 256 bits (32 octets), fournie sous forme de chaîne encodée en Base64. Une clé peut être générée avec openssl :
openssl rand -base64 32
Conserver la valeur obtenue en toute sécurité. En cas de perte de cette clé, tous les objets chiffrés du bucket S3 ne pourront plus être déchiffrés et seront perdus de manière définitive.
Configuration
SSE-C est activé dès qu’une clé est configurée. La clé peut être fournie soit directement via la propriété relution.storage.s3.serverSideEncryption.key (options A et B), soit sous forme de fichier via relution.storage.s3.serverSideEncryption.keyFile (option C). Si les deux sont définis, le fichier de clé est prioritaire.
Option A : utilisation de application.yml
Ajouter le bloc serverSideEncryption à application.yml :
relution:
storage:
resourceStorageType: S3
s3:
customEndpoint: http://seaweedfs:8333
accessKey: %IHR-ACCESS-KEY%
secretKey: %IHR-SECRET-KEY%
bucketName: relution
serverSideEncryption:
key: %IHR-BASE64-SCHLÜSSEL%
Option B : utilisation de variables d’environnement
Ajouter la variable d’environnement suivante au service relution dans le compose.yml :
services:
relution:
environment:
- RELUTION_STORAGE_S3_SERVERSIDEENCRYPTION_KEY=%IHR-BASE64-SCHLÜSSEL%
Option C : clé sous forme de fichier
Nouveau dans 26.5Au lieu d’indiquer la clé directement, il est possible de la lire depuis un fichier. Cela est particulièrement utile lorsque la clé est montée dans le conteneur sous forme de secret Docker ou Kubernetes. Le chemin vers le fichier de clé est configuré via relution.storage.s3.serverSideEncryption.keyFile :
relution:
storage:
s3:
serverSideEncryption:
keyFile: /chemin/vers/ssec.key
Ou via la variable d’environnement correspondante :
services:
relution:
environment:
- RELUTION_STORAGE_S3_SERVERSIDEENCRYPTION_KEYFILE=/chemin/vers/ssec.key
Le fichier doit contenir la même clé de 256 bits encodée en Base64 que pour l’indication directe (par exemple, générée avec openssl rand -base64 32). Un saut de ligne final est sans conséquence, car la valeur est nettoyée ; les clés binaires ou hexadécimales sont rejetées.
Au démarrage, Relution journalise la lecture avec Reading SSE-C key from file <chemin>. Si le fichier est absent ou ne contient pas une clé de 32 octets, le démarrage s’interrompt avec un message d’erreur correspondant.