Pourquoi vouloir mettre en place du stockage WORM avec Cybee ? #
Dans un scénario de ransomware ou de compromission des clés S3, l’attaquant va chercher à supprimer les sauvegardes pour empêcher toute restauration.
L’objectif de S3 Object Lock est justement d’ajouter une propriété WORM (Write Once Read Many) au stockage des sauvegardes : une version d’objet protégée ne peut plus être supprimée ni écrasée pendant une durée donnée (en jours/mois/année)
Cybee chiffre évidemment les données, mais le chiffrement ne protège pas contre la suppression. La propriété d’Object Lock vise donc une autre menace : l’effacement (malveillant ou accidentel) du côté stockage.
Comment Cybee écrit un dépôt sur un bucket S3 #
Un dépôt Cybee est un ensemble d’objets (fichiers) organisés par types. Les plus importants :
- Pack files : les données dédupliquées (chunks) sont regroupées dans des “packs”.
- Index : décrit quels blobs/chunks se trouvent dans quels packs.
- Clichés : “pointeurs” vers l’état sauvegardé (arborescences / trees).
- Locks : fichiers temporaires de verrouillage pendant les opérations de sauvegarde, ….
Le format et l’ordre d’écriture sont importants : la sauvegarde écrit d’abord les packs, puis les index, puis les snapshots. Cela garantit la cohérence même en cas de coupure réseau ou crash.
Ce que fait l’Object Lock de S3 (en mode Gouvernance) #
1) Versioning obligatoire #
L’Object Lock S3 fonctionne uniquement sur un bucket avec du versioning activé. Les métadonnées de verrouillage sont associées à une version d’objet.
2) “Supprimer” n’est pas vraiment supprimer #
Avec le versioning, une suppression “simple” ajoute juste une marque de suppression (delete marker), sans effacer la version protégée.
3) Le mécanisme de durée de rétention #
- Durée de rétention : Avant l’expiration de cette période, la version de l’objet est protégée. Après cette durée de rétention, il faut appliquer une politique qui supprime physiquement les objets possédant une marque de suppression avec une date supérieure à la durée de rétention.
Rappel : ce fonctionnement concerne le mode Gouvernance, il existe dans certains stockage S3 un mode conformité que nous ne détaillerons pas ici
Ce qui se passe quand on combine Cybee + Object Lock S3 #
Lors des sauvegardes #
C’est la stratégie “zéro oubli” : une rétention est définie par défaut sur l’ensemble du bucket de stockage des sauvegardes, et tout objet nouvellement écrit est verrouillé automatiquement.
Lors d’une sauvegarde, Restic créée des fichiers de verrouillage à intervalle régulier : locks. Durée chaque sauvegarde, ces fichiers sont créés puis « supprimés », c’est à dire qu’ils ont des marqueurs de suppression (ou delete markers). Ceci n’affecte en rien les sauvegardes suivantes ou autres actions.
Lors des actions de maintenance des dépôts et de suppression de clichés #
Toutes les actions de maintenance des dépots (comme l’élagage) ou de suppression de cliché suivant la durée de rétention des sauvegardes vont vouloir supprimer des données dans le stockage avec objectif d’optimiser la taille du stockage utilisé.
Pendant toute la durée de rétention du bucket de stockage, ces actions vont juste ajouter une marque de suppression mais pas libérer physiquement d’espace.
Donc il est pertinent d’aligner la temporalité de ces actions d’élagage des dépots (pruning) sur la durée de rétention définie au niveau du bucket de stockage.