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.5

Au 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.


Remarques importantes

Top