Elke PDF-export gaat via nginx → app → S3 → app → client. Berekeningsrekeningen stijgen, time-outs vermenigvuldigen zich. U genereert een vooraf ondertekende URL 15 minuten: de client haalt rechtstreeks uit de bucket. CPU daalt, maar URL stroomt in Slack.
Vooraf ondertekend = tijdelijke mogelijkheid ondertekend door HMAC. Krachtig, gevoelig.
Wanneer te gebruiken
Grote downloads/uploads, mobiele apps, tijdelijke partners. Vermijd zelfgemaakte streaming-proxy.
Niet voor lange authentificatiesessies: gebruik de IAM-rol aan de app-kant.
Veilige generatie
Backend met minimale inloggegevens s3:GetObject op voorvoegsel user/{id}/. Nooit root-sleutels. Korte uitademing.
Optie: voorwaarde Content-Disposition bestandsnaam, SSE-KMS headers.
Directe browserupload
Flow: backend maakt vooraf ondertekende PUT → clientupload → backend valideert etag/grootte → verplaats tag "schoon".
Groottelimiet via beleidsvoorwaarde 'content-length-range'.
Risico's
| Risico | Mitigatie |
|---|---|
| Gedeelde URL | Korte TTL, eenmalige token-metagegevens |
| Opsomming | UUID-sleutels, niet opeenvolgend |
| Upload opnieuw | checksum + virusscan async |
| IAM te breed | strikt voorvoegsel |
Waarneembaarheid
URL voor het genereren van logboeken (gebruiker, object, vervaldatum). Melding over abnormale downloadvolume. CloudTrail S3-gegevensgebeurtenissen als budget.
URL-beveiliging
Minimale zakelijke TTL. UUID-sleutelobject. Toepassingsgebied IAM-voorvoegsel strikt. Generatie van logboeken. Intrekking = IAM roteren + resterende URL's toch ongeldig maken door korte vervaldatum.
Registreer geen duidelijk ondertekende queryreeksen in openbare toegangslogboeken.
Testlek: deel verlopen URL moet 403 zijn.
UX-patronen
Downloaden: vooraf ondertekend GET 5–15 min. Upload groot bestand: meervoudig vooraf ondertekend + voortgangsclient.
Lijstbucket niet vooraf aanmelden: bereik voor één object.
Audit: wie heeft de URL gegenereerd voor welke userId – traceer misbruik.
Mobiele apps die vooraf zijn ingesloten in deep links: de vervaldatum moet overeenkomen met de UX-sessie – risico op herhaling van deep links.
Vooraf ondertekende upload van meerdere delen: het afbreken van de onvolledige MPU-levenscyclus bespaart inode en kosten.
Naleving
Vooraf ondertekende URL PII-export: toegangslogboek + korte vervaldatum + audit van wie de AVG-export heeft aangevraagd.
Verzend geen vooraf ondertekende sms-berichten, zelfs niet met een korte TTL, risico op onderschepping.
Rotatiegerelateerde rotatie van IAM-sleutels vooraf ondertekende geheime app-laag.
Operationele samenvatting
Vooraf aangewezen bandbreedte en tijdelijke toegang voor deelnemers: minimale IAM, korte TTL, UUID-sleutels, auditgeneratie. CORS-bucket aparte CORS API.
Gelekte URL = gelekte gegevens tot vervaldatum – rotatiegeheimen zo serieus.
Architectuurbeslissingsrecord
Wanneer vooraf ondertekend versus proxy-app versus CDN-ondertekende cookies: documenteer de latentie van de afweging, de kosten voor uitgaand verkeer, audit, mobiele UX. Controleer ADR jaarlijks of als x2-verkeer wordt gedownload.
Mobiele deeplink
TTL vooraf ondertekend = kopieer UX “link verloopt 15 min” – letterlijk.
Beveiligingsbeoordeling
Vooraf ondertekende generatielogboeken voor driemaandelijkse audit: TTL-distributie, maximale TTL-afwijkingen.
Bijlage over inhoudsdispositie bij vooraf ondertekende download - minus XSS open browsertabblad.
Voorwaarde IAM SecureTransport true bucket: alleen HTTPS vooraf ondertekend.
Operationeel toezicht
IAM Quarterly Review vooraf aangegeven bereik – kruiprechten. Gemiddeld TTL-auditlogboek. Pentest, vooraf ondertekende URL-sabotagehandtekening: moet mislukken, gesloten. Documenteer de kloof tussen de belofte van de hostingprovider en de veldmeting in de driemaandelijkse evaluatie.
Kwartaalvoortzetting
IAM Quarterly Review vooraf aangegeven bereik – kruiprechten. Gemiddeld TTL-auditlogboek. Pentest, vooraf ondertekende URL-sabotagehandtekening: moet mislukken, gesloten. Documenteer de kloof tussen de belofte van de hostingprovider en de veldmeting in de driemaandelijkse evaluatie.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
ADR vooraf ondertekend
versus proxy versus CDN-cookies. TTL = letterlijke UX-kopie. Intrekking van IAM-rotatie.
Beslis en ga vooruit zonder blinde vlek
- Minimale IAM op voorvoegsel —
s3:GetObjectof Put beperkt totuser/{id}/, nooit root-sleutels. - Minimale zakelijke TTL — minuten tot uren; kopieer UX “link verloopt 15 min” letterlijk.
- UUID-objectsleutels — geen sequentiële opsomming; log genereren zonder ondertekende query in platte tekst.
- Flow upload PUT — geldige backend-etag/grootte, asynchrone scan, tag opschonen.
- Jaarlijkse ADR — vooraf ondertekende versus proxy-app versus CDN-ondertekende cookies op basis van uitgaand verkeer en audit.
Objectopslag en uitgaand verkeer: vergelijker, overzicht, gidsen.
Veelgestelde vragen
GET versus vooraf ondertekende PUT?
GET = tijdelijke downloadclient. PUT = directe browser/app-upload naar bucket zonder via uw server te gaan.
Aanbevolen maximale duur?
Minuten tot uren voor downloadgebruiker. Multipart upload: duur van sessie + marge, nooit dagen zonder rotatie.
URL-lek = datalek?
Ja tot de vervaldatum. Beperk de objectscope, het inhoudstype, de controlesom en trek deze in via IAM-sleutelrotatie bij ernstig lek.
CDN-alternatief?
Ondertekende CloudFront-cookies voor openbare cachebare inhoud; vooraf ondertekende S3 voor eenmalige privétoegang.
Verlaag de TTL voordat u de chunkgrootte optimaliseert: lekkage kost meer dan latentie.
