Securite Storage¶
La capability storage fournit des garde-fous de base. Elle ne remplace pas les controles metier, les politiques cloud ou les services de securite du runtime.
Path Traversal¶
Toutes les cles passent par normalize_storage_key() avant d'atteindre un
backend. Une cle ne peut pas etre absolue, contenir .., contenir //, finir
par / ou utiliser le separateur Windows \.
Regle d'application: ne jamais reutiliser directement un nom de fichier fourni par l'utilisateur comme cle de stockage.
| Python | |
|---|---|
Le nom original reste une metadata metier dans le repository, pas une partie obligatoire de la cle objet.
Content-Type¶
content_type est une indication de stockage, pas une preuve. Le service
consommateur doit verifier le type attendu selon son besoin: extension, magic
bytes, parseur metier ou service d'analyse.
Ne pas accepter un contenu executable uniquement parce que le client annonce
text/plain ou image/png.
Taille Maximale¶
FileStoragePort ne decide pas d'une taille maximale globale. Le use case doit
refuser trop tot les fichiers qui depassent la politique du produit.
| Python | |
|---|---|
Pour les uploads HTTP, appliquer aussi une limite au niveau reverse proxy, serveur ASGI ou middleware.
Permissions Backend¶
Les credentials doivent etre bornes au strict necessaire:
- ecriture objet;
- lecture objet;
- lecture metadata;
- suppression objet si le use case le permet.
Ne pas donner de droits d'administration bucket/container a l'application. Les operations de creation de bucket, lifecycle, retention, CORS et CDN restent de la responsabilite de l'infrastructure.
Isolation Tenant¶
En multitenant, choisir explicitement le niveau d'isolation:
| Strategie | Isolation | Cout operationnel |
|---|---|---|
| bucket ou container par tenant | forte | plus de ressources a gerer |
| prefixe par tenant | moyenne | policies plus fines et plus fragiles |
| volume filesystem par tenant | forte si volume dedie | montage et permissions a maintenir |
Le use case ne doit pas accepter un tenant_id arbitraire dans la cle. La cle
derive du contexte d'authentification ou du TenantContext.
Hors Scope Initial¶
Ces controles sont volontairement hors du port initial:
- antivirus;
- quotas;
- lifecycle policies;
- CDN;
- URLs signees;
- upload multipart expose au client final;
- classification DLP;
- chiffrement applicatif bout en bout.
Ils peuvent etre ajoutes autour du use case ou dans un service specialise, sans
changer le contrat minimal de FileStoragePort.