Articol

Cum partajezi fișiere S3 fără să faci bucketul public

Partajare sigură de fișiere S3 cu bucketul privat: URL-uri presemnate, URL-uri semnate CloudFront sau linkuri cu parolă, expirare și limită de descărcări.

Poți partaja fișiere din Amazon S3 fără să faci vreodată bucketul public. Păstrează-l privat, lasă Block Public Access activat și oferă-le oamenilor în schimb acces semnat la anumite obiecte: un URL presemnat pentru un fișier ocazional, URL-uri semnate CloudFront când ai deja un CDN în fața bucketului sau un link de partajare care adaugă parolă, dată de expirare și limită de descărcări. Toate trei funcționează la fel la furnizorii compatibili S3, precum Cloudflare R2, DigitalOcean Spaces, Wasabi și Backblaze B2 (CloudFront există doar în AWS).

Opțiunile de partajare sigură S3 pe scurt

MetodăIdeală pentruParolăLimită de descărcăriRevocarea unui linkFoldere întregiCod necesar
Obiect sau bucket publicResurse cu adevărat publice (un site web)NuNuNuDaNu
URL presemnatUn fișier, o dată, din CLI sau din aplicația taNuNuNuNuCLI sau SDK
URL semnat CloudFrontAplicații care își autentifică deja utilizatoriiNuNuNuCu cookie-uri semnateDa
Link de partajare NubboPartajare recurentă cu persoane din afarăDaDaDaDa, cu ZIPNu

De ce să nu faci pur și simplu fișierul public

Cea mai rapidă cale de a partaja un fișier din S3 este să îl faci public și să trimiți URL-ul obiectului. Este și cea mai riscantă: orice e public poate fi descărcat de oricine găsește sau ghicește adresa, fără parolă, fără expirare și fără nicio evidență a celui care l-a luat. Bucketurile publice uitate sunt o sursă clasică de scurgeri de date și expun atât numele fișierelor, cât și conținutul.

AWS afirmă că bucketurile, punctele de acces și obiectele noi nu permit implicit accesul public. Pe deasupra, S3 Block Public Access are patru setări (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy și RestrictPublicBuckets) care au prioritate față de orice politică sau ACL care ar deschide bucketul ulterior. Pot fi setate per bucket, per cont sau pentru o întreagă AWS Organization, iar S3 aplică combinația cea mai restrictivă. AWS recomandă activarea tuturor celor patru la nivel de cont, cu excepția cazului în care găzduiești cu adevărat conținut public, de exemplu un site static.

Lasă acel comutator activat. Tot ce urmează funcționează cu el activat.

Opțiunea 1: URL-uri presemnate

Un URL presemnat este un URL de obiect cu o semnătură în query string. Permite o singură operație (de obicei o descărcare) pe un singur obiect până expiră, iar S3 verifică semnătura la fiecare cerere.

aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400

Acest URL funcționează 24 de ore. Valoarea implicită a CLI-ului este o oră, iar maximul este 604.800 de secunde (7 zile) când semnezi cu chei de utilizator IAM. Dacă semnezi cu date de autentificare temporare, de exemplu un rol asumat, URL-ul moare când acestea expiră.

Ce obții:

  • Nicio modificare a bucketului sau a politicilor lui.
  • Control precis: un obiect, o metodă, o expirare.
  • Funcționează la orice furnizor care acceptă presemnarea SigV4.

Ce nu obții:

  • Nicio parolă. Oricine are URL-ul îl poate folosi, de câte ori vrea, până expiră.
  • Nicio limită de descărcări și nicio revocare per link. Poți opri un URL mai devreme doar revocând cheile care l-au semnat.
  • Niciun folder. Semnezi obiect cu obiect, așa că partajarea unui folder cu 300 de fișiere înseamnă 300 de URL-uri.
  • Confidențialitatea numelor. URL-ul arată numele bucketului, cheia obiectului și ID-ul cheii tale de acces.

Pentru mecanismul în detaliu, inclusiv încărcările, fiecare parametru X-Amz-* și cod SDK, vezi URL-urile presemnate S3 explicate.

Dacă servești deja bucketul prin Amazon CloudFront, poți cere URL-uri semnate sau cookie-uri semnate pe un cache behavior. Bucketul rămâne privat în spatele origin access control (OAC), pe care AWS îl recomandă în locul vechiului origin access identity: o bucket policy permite doar distribuției tale să citească obiectele. Înregistrezi chei publice într-un trusted key group și semnezi cu cheia privată corespunzătoare.

  • URL-urile semnate se potrivesc pentru fișiere individuale. Cu o politică personalizată poți seta și o oră de început și un interval de IP-uri și poți refolosi o politică pentru multe fișiere cu wildcard-uri. Pot avea viață scurtă sau pot dura ani.
  • Cookie-urile semnate se potrivesc pentru multe fișiere deodată, de exemplu toate segmentele unui video, fără să-ți schimbi URL-urile.

Aceasta este unealta potrivită când rulezi o aplicație care își autentifică deja utilizatorii și servește conținut la scară. Ca să dai câteva fișiere unor persoane din afara echipei, înseamnă să configurezi o distribuție, să gestionezi chei și să scrii cod care semnează fiecare cerere.

Restricționarea unei bucket policy la un interval fix de IP-uri este o altă opțiune nativă, dar ajută doar când cunoști rețelele destinatarilor, ceea ce rareori se întâmplă cu persoanele din afara organizației tale.

Opțiunea 3: linkuri de partajare cu Nubbo

Nubbo se conectează la bucketul tău și îți oferă linkuri de partajare cu controalele care lipsesc URL-urilor presemnate, fără să scrii cod. În spate folosește tot URL-uri presemnate: Nubbo verifică mai întâi regulile linkului și abia apoi emite un URL de scurtă durată, așa că fișierele individuale merg direct din bucketul tău în browserul destinatarului.

Pasul 1: conectează-ți bucketul

Înregistrează-te gratuit, confirmă-ți e-mailul, apoi deschide Bucketuri și apasă Conectează bucket. Asistentul îți cere furnizorul (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 sau un endpoint personalizat compatibil S3), modul de conectare (o configurare automată cu o cheie cu acces complet sau o cheie limitată la un singur bucket), cheia și bucketul. Verifică cheia și bucketul și încheie testând CORS cu o încărcare reală din browserul tău. Bucketul rămâne privat, iar cheile tale sunt păstrate criptate cu AES-256-GCM. Planul Gratuit include 2 conexiuni.

Pasul 2: alege fișierul sau folderul

Găsește elementul în explorator și alege Distribuie. Poți merge și în pagina Partajate, să apeși Link nou și să alegi acolo bucketul și fișierul sau folderul.

Pasul 3: setează protecția

Toate cele trei controale sunt opționale și disponibile pe toate planurile:

ControlCum funcționează
ParolăÎntre 4 și 50 de caractere. După 10 încercări greșite, linkul se blochează pentru 15 minute.
Data expirăriiDezactivată implicit: linkul rămâne activ cât timp fișierul sau folderul este în stocarea ta.
Descărcări maximeGol înseamnă nelimitat. Când se atinge numărul, linkul nu mai servește fișierul.

Pasul 4: creează și trimite linkul

Apasă Creează link, copiază-l și trimite-l prin e-mail, chat sau ce folosești. Destinatarul deschide o pagină de descărcare curată și nu are nevoie de cont. Un link de folder îi permite să parcurgă folderul, să descarce fișiere individuale sau să ia totul ca ZIP, pe care browserul lui îl construiește descărcând fiecare fișier direct din bucketul tău.

Pasul 5: trimite parola separat

Dacă trimiți parola în același mesaj cu linkul, pierzi tot rostul. Dacă linkul are parolă, Trimite parola prin email o livrează printr-un link de dezvăluire unică: parola se afișează o singură dată, linkul de dezvăluire expiră după 24 de ore, 3 zile sau 7 zile și poți adăuga o notă scurtă. Ești anunțat când este deschis.

Pasul 6: urmărește și revocă

Pagina Partajate listează fiecare link cu starea și numărul lui de descărcări. Poți edita parola, expirarea sau limita, poți dezactiva un link (nu mai emite imediat URL-uri noi de descărcare) și îl poți redeschide mai târziu cu aceeași adresă.

Un link funcționează pentru oricine îl are. Când vrei să intre doar anumite persoane, funcția Partajează cu persoane din Nubbo (pe planurile Personal și Pro) trimite un fișier sau un folder la anumite adrese de e-mail, cu permisiune de vizualizare sau de descărcare, expirare opțională și plafon de descărcări, și înregistrează fiecare acces. Destinatarii au nevoie de un cont Nubbo și găsesc elementul în Partajate cu mine. Personal permite 10 persoane per element și 50 de partajări active; Pro permite 50 și 500.

Planurile plătite oferă și linkuri criptate: browserul face o copie sigilată a fișierului, iar cheia circulă doar în linkul însuși, așa că Nubbo nu o poate citi.

Ce opțiune să folosești?

  • Un fișier, o singură dată, și ai AWS CLI configurat: un URL presemnat este calea cea mai rapidă.
  • O aplicație care își autentifică deja utilizatorii și servește mult conținut: URL-uri sau cookie-uri semnate CloudFront.
  • Partajare recurentă cu persoane din afara echipei, foldere întregi sau orice are nevoie de parolă ori de limită: un link de partajare îți economisește timp și greșeli.

Două funcții înrudite acoperă celelalte cazuri frecvente. Cererile de fișiere îți oferă un link public de încărcare, ca oamenii să-ți trimită fișiere în bucket fără să vadă nimic altceva din el. Galeriile transformă un folder de fotografii sau videoclipuri într-o pagină navigabilă, cu aranjamente, filigran și propria parolă. Pe planul Gratuit ai câte 3 din fiecare și linkuri de partajare nelimitate; Personal și Pro elimină aceste plafoane. O notă sinceră: miniaturile sunt generate pe serverul Nubbo și stocate în propriul tău bucket, în .nubbo-thumbs/.

Întrebări frecvente

Cum partajez un fișier din S3 fără să îl fac public?

Păstrează bucketul privat și oferă în schimb acces semnat: un URL presemnat pentru un obiect (din AWS CLI sau dintr-un SDK), un URL sau un cookie semnat CloudFront dacă servești deja bucketul prin CloudFront ori un link de partajare dintr-o unealtă precum Nubbo, care adaugă parolă, expirare și limită de descărcări peste URL-urile presemnate.

Este Amazon S3 sigur pentru partajarea fișierelor?

Da, atâta timp cât bucketul rămâne privat. Bucketurile noi nu permit implicit accesul public, iar S3 Block Public Access împiedică pe oricine să le deschidă ulterior. Riscul vine din a face obiecte publice sau din scurgerea linkurilor semnate, care funcționează pentru oricine le are până expiră.

Bucketurile S3 noi sunt private implicit?

Da. AWS afirmă că bucketurile, punctele de acces și obiectele noi nu permit implicit accesul public, iar cele patru setări Block Public Access au prioritate față de orice politică sau ACL care le-ar deschide ulterior.

Destinatarul are nevoie de un cont AWS sau Nubbo?

Nu. Un URL presemnat, un URL semnat CloudFront și un link de partajare Nubbo funcționează în orice browser, fără cont. Doar Partajează cu persoane, care trimite un element unor persoane anume, le cere să aibă un cont Nubbo.

Cât poate dura un link S3 partajat?

Un URL presemnat durează cel mult 7 zile când este semnat cu chei de utilizator IAM și mai puțin cu date de autentificare temporare. URL-urile semnate CloudFront durează cât spune politica ta. Un link de partajare Nubbo nu expiră decât dacă setezi o dată, pentru că emite un URL nou, de scurtă durată, la fiecare descărcare.

Fișierele trec prin Nubbo când cineva descarcă dintr-un link partajat?

Nu: browserul descarcă fișierele individuale direct din bucketul tău cu un URL presemnat. Descărcările ZIP cu mai multe fișiere sunt asamblate în browser, care descarcă fiecare fișier direct din bucketul tău: Nubbo nu vede niciodată conținutul.

Surse

Prețurile și limitele provin din paginile oficiale de mai jos. Furnizorii le schimbă, așa că verifică-le înainte să te decizi.