Skip to content

Règles de partage et sécurité du bucket S3 (+ utilisation de l'API Key pour y accéder via SUIT) #3021

@maxgfr

Description

@maxgfr

Contexte

Les fichiers uploadés (avis CSE, évaluation conjointe) sont stockés sur S3 en {siren}/{year}/{uuid}.{ext}. Actuellement, aucune politique de bucket n'est configurée (ACL, CORS, lifecycle, chiffrement).

Besoin

  • Isolation par SIREN : un utilisateur ne doit accéder qu'aux fichiers de son entreprise
  • CORS : restreindre les origines autorisées au domaine de l'app
  • Lifecycle rules : suppression automatique des fichiers orphelins (multipart uploads avortés, fichiers non référencés en base)
  • Chiffrement : S3 server-side encryption (SSE-S3 ou SSE-KMS)
  • Accès : les fichiers ne doivent jamais être publics — téléchargement via une route API authentifiée (pre-signed URL ou proxy)

Pistes

  • Bucket policy pour bloquer l'accès public
  • Lifecycle rule : AbortIncompleteMultipartUpload après 1 jour
  • Route API GET /api/download?key=... avec vérification session + SIREN ownership
  • Ou pre-signed URLs avec expiration courte (5 min)

Fichiers concernés

  • packages/app/src/server/services/s3.ts (ajout getSignedUrl ou route proxy)
  • .kontinuous/ (config bucket policy par environnement)
  • docker-compose.yml (minio policy pour le dev local)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

Status

In review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions