Comparateur indépendant · sans classement payant
Accueil / Blog / Technique / URLs S3 pré-signées : donner un accès temporaire sans proxy coûteux

URLs S3 pré-signées : donner un accès temporaire sans proxy coûteux

Servir 10 Go de exports utilisateur via votre app PHP saturait le CPU. Les URLs pré-signées délèguent le téléchargement au stockage — avec une date d'expiration à ne pas oublier.

Rédaction Hébergeurs.eu 5 min Mis à jour 19 juil. 2026

Chaque export PDF passe par nginx → app → S3 → app → client. Facture compute grimpe, timeouts multiplient. Vous générez une URL pré-signée 15 minutes : le client tire directement depuis le bucket. CPU tombe, mais l'URL circule dans Slack.

Pré-signé = capability temporaire signée HMAC. Puissant, sensible.

Quand utiliser

Gros downloads/uploads, mobile apps, partenaires temporaires. Évitez proxy streaming maison.

Pas pour auth session longue — utilisez IAM role app-side.

Génération sécurisée

Backend avec credentials minimaux s3:GetObject sur prefix user/{id}/. Jamais clés root. Expiration courte.

Option : condition Content-Disposition filename, SSE-KMS headers.

Upload direct navigateur

Flow : backend crée presigned PUT → client upload → backend valide etag/size → move tag « clean ».

Limite taille via policy condition content-length-range.

Risques

RisqueMitigation
URL partagéeTTL court, one-time token metadata
EnumérationUUID keys, pas sequential
Replay uploadchecksum + virus scan async
IAM trop largeprefix strict

Observabilité

Log génération URL (user, object, expiry). Alert download volume anomaly. CloudTrail S3 data events si budget.

Sécurité URL

TTL minimal métier. Objet key UUID. Scope IAM prefix strict. Log génération. Révocation = rotate IAM + invalider URLs restantes par expiry courte anyway.

Ne logguez pas query string signée en clair dans access logs publics.

Test fuite : partager URL expirée doit 403.

Patterns UX

Download : presigned GET 5–15 min. Upload gros fichier : multipart presigned + progress client.

Ne pas presign list bucket — scope objet unique.

Audit : qui a généré URL pour quel userId — trace abuse.

Mobile apps embedding presigned in deep links : expiry must match UX session — deep link replay risk.

Multipart upload presigned : abort incomplete MPU lifecycle saves inode and cost.

Compliance

Presigned URL PII export : log accès + expiry court + audit qui a demandé export RGPD.

Ne pas envoyer presigned par SMS non chiffré — même TTL court, interception risk.

Rotation clés IAM liée rotation presigned secret app layer.

Synthèse opérationnelle

Presigned délègue bande passante et accès temporaire — IAM minimal, TTL court, keys UUID, audit génération. CORS bucket distinct API CORS.

Fuite URL = fuite data jusqu'à expiry — rotation secrets si grave.

Architecture decision record

Quand presigned vs proxy app vs CDN signed cookies — document tradeoff latence, coût egress, audit, UX mobile. Revoyez ADR annuellement ou si x2 trafic download.

TTL presigned = copy UX « lien expire 15 min » — littéral.

Revue sécurité

Audit trimestriel logs génération presigned : TTL distribution, anomalies TTL max.

Content-Disposition attachment sur presigned download — moins XSS open browser tab.

Condition IAM SecureTransport true bucket — HTTPS only presigned.

Suivi opérationnel

Revue trimestrielle IAM presigned scope — creep permissions. TTL moyen audit log. Pen test presigned URL tamper signature — must fail closed. Documentez les écarts entre promesse hébergeur et mesure terrain dans la revue trimestrielle.

Poursuite trimestrielle

Revue trimestrielle IAM presigned scope — creep permissions. TTL moyen audit log. Pen test presigned URL tamper signature — must fail closed. Documentez les écarts entre promesse hébergeur et mesure terrain dans la revue trimestrielle.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

ADR presigned

vs proxy vs CDN cookies. TTL = copy UX littérale. IAM rotate révocation.

Décider et avancer sans angle mort

  1. IAM minimal sur prefixs3:GetObject ou Put limité à user/{id}/, jamais clés root.
  2. TTL minimal métier — minutes à heures ; copy UX « lien expire 15 min » littérale.
  3. Clés objet UUID — pas de séquential enumeration ; log génération sans query signée en clair.
  4. Flow upload PUT — backend valide etag/size, scan async, tag clean.
  5. ADR annuel — presigned vs proxy app vs CDN signed cookies selon egress et audit.

Stockage objet et egress : comparateur, annuaire, guides.

Questions fréquentes

GET vs PUT pré-signé ?

GET = download temporaire client. PUT = upload direct navigateur/app vers bucket sans passer par votre serveur.

Durée max recommandée ?

Minutes à heures pour download user. Upload multipart : durée couvrant session + marge, jamais jours sans rotation.

Fuite URL = fuite données ?

Oui jusqu'à expiration. Limitez objet scope, Content-Type, checksum, et révoquez via rotation clés IAM si fuite grave.

Alternative CDN ?

Signed cookies CloudFront pour contenu public cacheable ; presigned S3 pour accès privé one-off.


Réduisez le TTL avant d'optimiser le chunk size — la fuite coûte plus que la latence.

Comparez les hébergeurs européens

Filtrez par conformité, localisation et usage — puis ouvrez les fiches pour vérifier le périmètre réel.

Voir l'annuaire
Blog

À lire aussi

Tous les articles →