Tech: ajout d'une option pour alerter sur des fichiers ayant disparu de notre bucket#5548
Conversation
francoisfreitag
left a comment
There was a problem hiding this comment.
Rien ne tourne avec cette option pour le moment. Le plan serait de la faire tourner en local de temps à autre ?
Que peut-on faire pour corriger, mis à part supprimer l’entrée de la table et éventuellement vérifier si des liens pointaient vers le fichier ? Si c’est le cas, autant le faire immédiatement et retirer l’entrée de base de données.
Pour la gestion des fichiers, on est toujours en attente de https://www.notion.so/gip-inclusion/Nettoyer-les-fichiers-S3-non-r-f-renc-s-dans-le-syst-me-suite-18a5f321b604819283fade43dcd46d72. Idéalement, les responsabilités seraient inversées : la DB donnera la liste des fichiers sur le S3 (et permettrait de supprimer les fichiers non référencés). Mettre des pansements en attendant me semble un peu investir à fond perdu.
J’avais le secret espoir d’augmenter la fréquence de sync data pour réduire la durée avant la détection d’un fichier malveillant téléversé. Il ne faudrait pas que cette option soit par défaut.
|
Cette option consommera un peu plus de RAM que sans (~200/250Mo) donc je pensais d'abord expérimenter à la main puis la rajouter au cron (soit systématiquement si on est large en RAM, soit une fois par jour, à un moment où les autres commandes ne tournent pas dans le cas contraire). Il n'y a actuellement aucune raison que les fichiers disparaissent (:crossed_fingers: ) donc je ne pense pas qu'on ait besoin d'automatiser la gestion du cas (en tout cas je l'espère :sweat_smile: et cette option permettra de se rassurer). C'est juste la suppression du filtre |
|
On supprime des fichiers à la main pour le RGPD (CVs). Il était aussi question de supprimer les fichiers inutilisés, mais là on vise 2030 🙈 |
Bien vu 👍 |
|
Plutôt que le |
| "--check-existing", | ||
| action=argparse.BooleanOptionalAction, | ||
| default=False, | ||
| help="Set to True to also check that all existing File objects reference existing bucket objects.", |
There was a problem hiding this comment.
| help="Set to True to also check that all existing File objects reference existing bucket objects.", | |
| help="Check that all existing File objects reference existing bucket objects.", |
| known_permanent_files_nb = 0 | ||
| if check_existing: | ||
| known_keys = set(File.objects.values_list("key", flat=True)) | ||
| self.logger.info("Checking existing files: %d file(s) in database before sync", len(known_keys)) |
There was a problem hiding this comment.
Si on en est là, on peut se douter qu’il y aura toujours plus d’un fichier en prod.
| self.logger.info("Checking existing files: %d file(s) in database before sync", len(known_keys)) | |
| self.logger.info("Checking existing files: %d files in database before sync", len(known_keys)) |
| if known_keys: | ||
| # keys are present in database as File object but missing from our bucket | ||
| self.logger.error( | ||
| "Found %d database file(s) with unknown keys: %s", len(known_keys), sorted(known_keys) |
There was a problem hiding this comment.
| "Found %d database file(s) with unknown keys: %s", len(known_keys), sorted(known_keys) | |
| "%d database files do not exist in the bucket: %s", len(known_keys), sorted(known_keys) |
186c992 to
ff35385
Compare
It will alert on existing File object in database referencing unknown keys in the bucket
ff35385 to
a5639b5
Compare
🤔 Pourquoi ?
Pour être alerté que l'on fournit des liens vers des objets n'existant pas.
🍰 Comment ?
🚨 À vérifier
🏝️ Comment tester ?
💻 Captures d'écran