Članak

Kako dijeliti S3 datoteke bez da bucket učiniš javnim

Sigurno dijeljenje S3 datoteka uz privatni bucket: presigned URL-ovi, CloudFront signed URL-ovi ili poveznice s lozinkom, istekom i limitom preuzimanja.

Datoteke iz Amazon S3 možeš dijeliti, a da bucket nikad ne učiniš javnim. Drži ga privatnim, ostavi Block Public Access uključen i umjesto toga ljudima daj potpisani pristup određenim objektima: presigned URL za jednokratnu datoteku, CloudFront signed URL-ove kad već imaš CDN ispred bucketa ili poveznicu za dijeljenje koja dodaje lozinku, datum isteka i ograničenje preuzimanja. Sva tri načina rade jednako na S3 kompatibilnim pružateljima kao što su Cloudflare R2, DigitalOcean Spaces, Wasabi i Backblaze B2 (CloudFront postoji samo na AWS-u).

Opcije sigurnog dijeljenja S3 datoteka ukratko

MetodaNajbolje zaLozinkaOgraničenje preuzimanjaOpoziv jedne povezniceCijele mapePotreban kod
Javni objekt ili bucketStvarno javne resurse (web stranicu)NeNeNeDaNe
Presigned URLJednu datoteku, jednom, iz CLI-ja ili aplikacijeNeNeNeNeCLI ili SDK
CloudFront signed URLAplikacije koje već autentificiraju korisnikeNeNeNeUz signed kolačićeDa
Nubbo poveznica za dijeljenjeRedovito dijeljenje s ljudima izvanaDaDaDaDa, uz ZIPNe

Zašto datoteku jednostavno ne učiniti javnom

Najbrži način za dijeljenje datoteke iz S3 jest učiniti je javnom i poslati URL objekta. To je ujedno i najrizičnije: sve što je javno može preuzeti svatko tko pronađe ili pogodi adresu, bez lozinke, bez isteka i bez zapisa o tome tko ju je uzeo. Zaboravljeni javni bucketi klasičan su izvor curenja podataka, a otkrivaju i nazive datoteka, ne samo sadržaj.

AWS navodi da novi bucketi, pristupne točke i objekti zadano ne dopuštaju javni pristup. Povrh toga, S3 Block Public Access ima četiri postavke (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy i RestrictPublicBuckets) koje nadjačavaju svaku politiku ili ACL koji bi kasnije otvorili bucket. Mogu se postaviti po bucketu, po računu ili za cijelu AWS Organization, a S3 primjenjuje najstrožu kombinaciju. AWS preporučuje uključivanje sve četiri na razini računa osim ako stvarno ne hostaš javni sadržaj, kao što je statična web stranica.

Ostavi taj prekidač uključen. Sve u nastavku radi s njim.

Opcija 1: presigned URL-ovi

Presigned URL je URL objekta s potpisom u query stringu. Omogućuje jednu operaciju (obično preuzimanje) na jednom objektu dok ne istekne, a S3 provjerava potpis pri svakom zahtjevu.

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

Taj URL radi 24 sata. Zadana vrijednost CLI-ja je jedan sat, a najviše 604.800 sekundi (7 dana) kad potpisuješ ključevima IAM korisnika. Ako potpisuješ privremenim vjerodajnicama, kao što je preuzeta uloga, URL prestaje raditi kad te vjerodajnice isteknu.

Što dobivaš:

  • Nikakvu promjenu bucketa ni njegovih politika.
  • Preciznu kontrolu: jedan objekt, jedna metoda, jedan istek.
  • Radi kod svakog pružatelja koji podržava SigV4 potpisivanje.

Što ne dobivaš:

  • Nema lozinke. Tko god ima URL, može ga koristiti, koliko god puta želi, dok ne istekne.
  • Nema ograničenja preuzimanja ni opoziva po poveznici. URL možeš ranije poništiti samo opozivom ključeva koji su ga potpisali.
  • Nema mapa. Potpisuješ objekt po objekt, pa dijeljenje mape od 300 datoteka znači 300 URL-ova.
  • Privatnost naziva. URL prikazuje naziv tvog bucketa, ključ objekta i ID tvog pristupnog ključa.

Za detaljan opis mehanike, uključujući prijenose, svaki parametar X-Amz-* i SDK kod, pogledaj objašnjenje S3 presigned URL-ova.

Opcija 2: CloudFront signed URL-ovi i signed kolačići

Ako bucket već poslužuješ preko Amazon CloudFronta, na ponašanju predmemorije (cache behavior) možeš zahtijevati signed URL-ove ili signed kolačiće. Bucket ostaje privatan iza origin access control (OAC), koji AWS preporučuje umjesto starijeg origin access identity: bucket politika dopušta samo tvojoj distribuciji čitanje objekata. Javne ključeve registriraš u pouzdanoj grupi ključeva (trusted key group) i potpisuješ odgovarajućim privatnim ključem.

  • Signed URL-ovi odgovaraju pojedinačnim datotekama. S prilagođenom politikom možeš postaviti i vrijeme početka i raspon IP adresa te jednu politiku koristiti za mnogo datoteka pomoću zamjenskih znakova. Mogu biti kratkotrajni ili trajati godinama.
  • Signed kolačići odgovaraju mnogo datoteka odjednom, na primjer svim segmentima videozapisa, bez mijenjanja tvojih URL-ova.

To je pravi alat kad imaš aplikaciju koja već autentificira korisnike i poslužuje sadržaj u velikom opsegu. Za predaju nekoliko datoteka ljudima izvan tvog tima to znači postavljanje distribucije, upravljanje ključevima i pisanje koda koji potpisuje svaki zahtjev.

Ograničavanje bucket politike na fiksni raspon IP adresa još je jedna izvorna opcija, ali pomaže samo kad znaš mreže primatelja, što je kod ljudi izvan tvoje organizacije rijetko slučaj.

Opcija 3: poveznice za dijeljenje uz Nubbo

Nubbo se povezuje s tvojim bucketom i daje ti poveznice za dijeljenje s kontrolama koje presigned URL-ovima nedostaju, bez pisanja koda. U pozadini i dalje koristi presigned URL-ove: Nubbo najprije provjerava pravila poveznice i tek tada izdaje kratkotrajni URL, pa pojedinačne datoteke putuju izravno iz tvog bucketa u preglednik primatelja.

Korak 1: poveži svoj bucket

Registriraj se besplatno, potvrdi svoju e-adresu, zatim otvori Bucketi i pritisni Poveži bucket. Čarobnjak traži tvog pružatelja (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 ili prilagođeni S3 kompatibilni endpoint), način povezivanja (automatsko postavljanje s ključem s potpunim pristupom ili ključ ograničen na jedan bucket), tvoj ključ i tvoj bucket. Provjerava ključ i bucket, a završava testiranjem CORS-a stvarnim prijenosom iz tvog preglednika. Bucket ostaje privatan, a tvoji se ključevi spremaju šifrirani algoritmom AES-256-GCM. Plan Besplatno uključuje 2 veze.

Korak 2: odaberi datoteku ili mapu

Pronađi stavku u pregledniku datoteka i odaberi Podijeli. Možeš i otići na stranicu Dijeljeno, pritisnuti Nova poveznica i ondje odabrati bucket te datoteku ili mapu.

Korak 3: postavi zaštitu

Sve tri kontrole su opcionalne i dostupne na svakom planu:

KontrolaKako radi
LozinkaOd 4 do 50 znakova. Nakon 10 pogrešnih pokušaja poveznica se zaključava na 15 minuta.
Datum istekaZadano isključen: poveznica ostaje aktivna dok je datoteka ili mapa u tvojoj pohrani.
Maksimalan broj preuzimanjaPrazno znači neograničeno. Kad se dosegne broj, poveznica prestaje posluživati datoteku.

Korak 4: izradi i pošalji poveznicu

Pritisni Izradi poveznicu, kopiraj je i pošalji e-poštom, chatom ili čime god se služiš. Primatelj otvara urednu stranicu za preuzimanje i ne treba mu račun. Poveznica na mapu omogućuje pregledavanje mape, preuzimanje pojedinačnih datoteka ili preuzimanje svega kao ZIP, koji primateljev preglednik sastavlja preuzimajući svaku datoteku izravno iz tvog bucketa.

Korak 5: pošalji lozinku zasebno

Slanje lozinke u istoj poruci kao i poveznicu poništava njezinu svrhu. Ako poveznica ima lozinku, Pošalji lozinku e-poštom isporučuje je kao jednokratnu poveznicu za prikaz: lozinka se prikazuje jednom, poveznica za prikaz istječe nakon 24 sata, 3 dana ili 7 dana, a možeš dodati i kratku napomenu. Obavijestit ćemo te kad se otvori.

Korak 6: prati i opozovi

Stranica Dijeljeno navodi svaku poveznicu s njezinim statusom i brojem preuzimanja. Možeš urediti lozinku, istek ili ograničenje, deaktivirati poveznicu (odmah prestaje izdavati nove URL-ove za preuzimanje) i kasnije je ponovno otvoriti s istom adresom.

Dijeljenje s određenim ljudima umjesto poveznice

Poveznica radi za svakoga tko je ima. Kad želiš da pristup imaju samo imenovane osobe, Nubbova značajka Podijeli s ljudima (na planovima Personal i Pro) šalje datoteku ili mapu na određene e-adrese s dopuštenjem pregleda ili preuzimanja, opcionalnim istekom i ograničenjem preuzimanja te bilježi svaki pristup. Primateljima treba Nubbo račun, a stavku pronalaze pod Podijeljeno sa mnom. Personal dopušta 10 osoba po stavci i 50 aktivnih dijeljenja; Pro dopušta 50 i 500.

Plaćeni planovi nude i šifrirane poveznice: preglednik izrađuje zapečaćenu kopiju datoteke, a ključ putuje samo u samoj poveznici, pa je Nubbo ne može pročitati.

Koju opciju odabrati?

  • Jedna datoteka, jednom, a AWS CLI ti je konfiguriran: presigned URL je najbrži put.
  • Aplikacija koja već prijavljuje korisnike i poslužuje mnogo sadržaja: CloudFront signed URL-ovi ili kolačići.
  • Redovito dijeljenje s ljudima izvan tvog tima, cijele mape ili bilo što što treba lozinku ili ograničenje: poveznica za dijeljenje štedi vrijeme i sprječava pogreške.

Više od jedne poveznice

Dvije povezane značajke pokrivaju ostale česte slučajeve. Zahtjevi za datoteke daju ti javnu poveznicu za prijenos kako bi ljudi mogli slati datoteke u tvoj bucket, a da ne vide ništa drugo u njemu. Galerije pretvaraju mapu fotografija ili videozapisa u stranicu za pregledavanje s rasporedima, vodenim žigom i vlastitom lozinkom. Na planu Besplatno dobivaš po 3 od svakog i neograničene poveznice za dijeljenje; Personal i Pro uklanjaju ta ograničenja. Jedna iskrena napomena: minijature se generiraju na Nubbovom serveru i spremaju u tvoj vlastiti bucket pod .nubbo-thumbs/.

Česta pitanja

Kako podijeliti datoteku iz S3 bez da je učinim javnom?

Drži bucket privatnim i umjesto toga daj potpisani pristup: presigned URL za jedan objekt (iz AWS CLI-ja ili SDK-a), CloudFront signed URL ili kolačić ako bucket već poslužuješ preko CloudFronta, ili poveznicu za dijeljenje iz alata poput Nubba koji povrh presigned URL-ova dodaje lozinku, istek i ograničenje preuzimanja.

Je li Amazon S3 siguran za dijeljenje datoteka?

Jest, dokle god bucket ostaje privatan. Novi bucketi zadano ne dopuštaju javni pristup, a S3 Block Public Access sprječava da ih itko kasnije otvori. Rizik dolazi od pretvaranja objekata u javne ili od curenja potpisanih poveznica, koje rade za svakoga tko ih ima dok ne isteknu.

Jesu li novi S3 bucketi zadano privatni?

Jesu. AWS navodi da novi bucketi, pristupne točke i objekti zadano ne dopuštaju javni pristup, a četiri postavke Block Public Access nadjačavaju svaku politiku ili ACL koji bi ih kasnije otvorili.

Treba li primatelju AWS ili Nubbo račun?

Ne. Presigned URL, CloudFront signed URL i Nubbo poveznica za dijeljenje rade u bilo kojem pregledniku bez računa. Samo Podijeli s ljudima, koji šalje stavku imenovanim osobama, zahtijeva da one imaju Nubbo račun.

Koliko dugo može trajati podijeljena S3 poveznica?

Presigned URL traje najviše 7 dana kad je potpisan ključevima IAM korisnika, a kraće uz privremene vjerodajnice. CloudFront signed URL-ovi traju koliko kaže tvoja politika. Nubbo poveznica za dijeljenje nema istek osim ako ga ne postaviš, jer pri svakom preuzimanju izdaje novi kratkotrajni URL.

Prolaze li datoteke kroz Nubbo kad netko preuzima s podijeljene poveznice?

Ne: preglednik pojedinačne datoteke preuzima izravno iz tvog bucketa pomoću presigned URL-a. ZIP preuzimanja više datoteka sastavljaju se u pregledniku, koji svaku datoteku preuzima izravno iz tvog bucketa: Nubbo nikad ne vidi sadržaj.

Izvori

Cijene i ograničenja potječu sa službenih stranica u nastavku. Pružatelji ih mijenjaju, pa ih provjeri prije nego što se odlučiš.