Članek

Kako deliti datoteke S3, ne da bi bucket naredil javen

Varno deljenje datotek S3 iz zasebnega bucketa: presigned URL-ji, podpisani URL-ji CloudFront ali povezave z geslom, rokom in omejitvijo prenosov.

Datoteke iz Amazon S3 lahko deliš, ne da bi bucket kdaj naredil javen. Ohrani ga zasebnega, pusti vklopljen Block Public Access in ljudem namesto tega daj podpisan dostop do določenih objektov: presigned URL za enkratno datoteko, podpisane URL-je CloudFront, ko pred bucketom že imaš CDN, ali povezavo za deljenje, ki doda geslo, datum poteka in omejitev prenosov. Vse tri možnosti delujejo enako pri S3-združljivih ponudnikih, kot so Cloudflare R2, DigitalOcean Spaces, Wasabi in Backblaze B2 (CloudFront je samo za AWS).

Možnosti varnega deljenja datotek S3 na kratko

NačinNajboljše zaGesloOmejitev prenosovPreklic ene povezaveCele mapePotrebna koda
Javen objekt ali bucketRes javna sredstva (spletna stran)NeNeNeDaNe
Presigned URLEna datoteka, enkrat, iz CLI ali tvoje aplikacijeNeNeNeNeCLI ali SDK
Podpisan URL CloudFrontAplikacije, ki že overjajo uporabnikeNeNeNeS podpisanimi piškotkiDa
Povezava za deljenje NubboRedno deljenje z ljudmi zunaj tvoje ekipeDaDaDaDa, z ZIPNe

Zakaj datoteke ne narediti preprosto javne

Najhitrejši način za deljenje datoteke iz S3 je, da jo narediš javno in pošlješ URL objekta. Je pa tudi najbolj tvegan: vse javno lahko pridobi vsak, ki naslov najde ali ugane, brez gesla, brez roka veljavnosti in brez zapisa, kdo jo je vzel. Pozabljeni javni bucketi so klasičen vir uhajanja podatkov in razkrivajo imena datotek kot tudi vsebino.

AWS navaja, da novi bucketi, dostopne točke in objekti privzeto ne dovoljujejo javnega dostopa. Poleg tega ima S3 Block Public Access štiri nastavitve (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy in RestrictPublicBuckets), ki prevladajo nad vsakim pravilnikom ali ACL, ki bi bucket pozneje odprl. Nastaviš jih lahko za posamezen bucket, za račun ali za celotno AWS Organization, S3 pa uporabi najstrožjo kombinacijo. AWS priporoča, da vse štiri vklopiš na ravni računa, razen če res gostiš javno vsebino, na primer statično spletno stran.

To stikalo pusti vklopljeno. Vse spodaj deluje, ko je vklopljeno.

1. možnost: presigned URL-ji

Presigned URL je URL objekta s podpisom v nizu poizvedbe. Omogoča eno operacijo (običajno prenos) nad enim objektom do izteka, S3 pa podpis preveri ob vsaki zahtevi.

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

Ta URL deluje 24 ur. Privzeta vrednost v CLI je ena ura, največja pa 604.800 sekund (7 dni), ko podpisuješ s ključi uporabnika IAM. Če podpisuješ z začasnimi poverilnicami, na primer s prevzeto vlogo, URL ugasne, ko te poverilnice potečejo.

Kaj dobiš:

  • Nobene spremembe bucketa ali njegovih pravilnikov.
  • Natančen nadzor: en objekt, ena metoda, en rok veljavnosti.
  • Deluje pri vsakem ponudniku, ki podpira predpodpisovanje SigV4.

Česa ne dobiš:

  • Gesla. Kdor ima URL, ga lahko uporabi, kolikokrat želi, do izteka.
  • Omejitve prenosov in preklica posamezne povezave. URL lahko predčasno ugasneš samo s preklicem ključev, ki so ga podpisali.
  • Map. Podpisuješ objekt za objektom, zato deljenje mape s 300 datotekami pomeni 300 URL-jev.
  • Zasebnosti imen. URL prikaže ime tvojega bucketa, ključ objekta in ID tvojega dostopnega ključa.

Za poglobljen opis delovanja, vključno z nalaganji, vsakim parametrom X-Amz-* in kodo SDK, glej presigned URL-ji S3 razloženi.

2. možnost: podpisani URL-ji in podpisani piškotki CloudFront

Če bucket že strežeš prek Amazon CloudFront, lahko na vedenju predpomnilnika (cache behavior) zahtevaš podpisane URL-je ali podpisane piškotke. Bucket ostane zaseben za nadzorom dostopa do izvora (OAC), ki ga AWS priporoča namesto starejše identitete za dostop do izvora (OAI): pravilnik bucketa dovoli branje objektov samo tvoji distribuciji. Javne ključe registriraš v zaupanja vredni skupini ključev in podpisuješ z ustreznim zasebnim ključem.

  • Podpisani URL-ji so primerni za posamezne datoteke. S pravilnikom po meri lahko nastaviš tudi čas začetka in obseg IP ter z nadomestnimi znaki en pravilnik uporabiš za veliko datotek. Lahko so kratkotrajni ali veljajo leta.
  • Podpisani piškotki so primerni za veliko datotek hkrati, na primer za vse segmente videa, ne da bi spreminjal svoje URL-je.

To je pravo orodje, ko poganjaš aplikacijo, ki že overja uporabnike in streže vsebino v velikem obsegu. Za predajo nekaj datotek ljudem zunaj tvoje ekipe pa pomeni nastavitev distribucije, upravljanje ključev in pisanje kode, ki podpiše vsako zahtevo.

Omejitev pravilnika bucketa na fiksen obseg IP je še ena izvorna možnost, vendar pomaga samo, ko poznaš omrežja prejemnikov, kar pri ljudeh zunaj tvoje organizacije redko drži.

3. možnost: povezave za deljenje z Nubbo

Nubbo se poveže s tvojim bucketom in ti brez pisanja kode ponudi povezave za deljenje z nadzorom, ki ga presigned URL-ji nimajo. V ozadju še vedno uporablja presigned URL-je: Nubbo najprej preveri pravila povezave in šele nato izda kratkotrajen URL, zato posamezne datoteke potujejo neposredno iz tvojega bucketa v prejemnikov brskalnik.

1. korak: poveži svoj bucket

Brezplačno se registriraj, potrdi svoj e-poštni naslov, nato odpri Bucketi in pritisni Poveži bucket. Čarovnik vpraša po ponudniku (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 ali S3-združljiv endpoint po meri), načinu povezave (samodejna nastavitev s ključem s polnim dostopom ali ključ, omejen na en bucket), tvojem ključu in bucketu. Preveri ključ in bucket, na koncu pa preizkusi CORS z resničnim nalaganjem iz tvojega brskalnika. Bucket ostane zaseben, tvoji ključi pa so shranjeni šifrirani z AES-256-GCM. Paket Brezplačno vključuje 2 povezavi.

2. korak: izberi datoteko ali mapo

Poišči element v raziskovalcu in izberi Deli. Lahko pa greš tudi na stran Deljeno, pritisneš Nova povezava in tam izbereš bucket ter datoteko ali mapo.

3. korak: nastavi zaščito

Vsi trije nadzori so neobvezni in na voljo v vsakem paketu:

NadzorKako deluje
GesloOd 4 do 50 znakov. Po 10 napačnih poskusih se povezava zaklene za 15 minut.
Datum potekaPrivzeto izklopljen: povezava ostane aktivna, dokler je datoteka ali mapa v tvoji shrambi.
Največ prenosovPrazno pomeni neomejeno. Ko je število doseženo, povezava datoteke ne streže več.

4. korak: ustvari in pošlji povezavo

Pritisni Ustvari povezavo, jo kopiraj in pošlji po e-pošti, v klepetu ali kakor koli že komuniciraš. Prejemnik odpre čisto stran za prenos in ne potrebuje računa. Povezava do mape mu omogoča brskanje po mapi, prenos posameznih datotek ali prenos vsega kot ZIP, ki ga njegov brskalnik sestavi tako, da vsako datoteko prenese neposredno iz tvojega bucketa.

5. korak: geslo pošlji ločeno

Pošiljanje gesla v istem sporočilu kot povezavo izniči njegov namen. Če ima povezava geslo, ga Pošlji geslo po e-pošti dostavi kot povezavo za enkraten prikaz: geslo se prikaže enkrat, povezava za prikaz poteče po 24 urah, 3 dneh ali 7 dneh, dodaš pa lahko tudi kratko opombo. Ko jo nekdo odpre, prejmeš obvestilo.

6. korak: spremljaj in prekliči

Stran Deljeno navaja vsako povezavo z njenim stanjem in številom prenosov. Geslo, rok veljavnosti ali omejitev lahko urediš, povezavo deaktiviraš (takoj neha izdajati nove URL-je za prenos) in jo pozneje znova odpreš z istim naslovom.

Deljenje z določenimi osebami namesto povezave

Povezava deluje za vsakogar, ki jo ima. Ko želiš, da dostop dobijo samo imenovane osebe, Deli z ljudmi v Nubbo (v paketih Personal in Pro) datoteko ali mapo pošlje na določene e-poštne naslove z dovoljenjem za ogled ali prenos, neobveznim rokom veljavnosti in omejitvijo prenosov ter zabeleži vsak dostop. Prejemniki potrebujejo račun Nubbo in element najdejo pod Deljeno z mano. Personal dovoli 10 oseb na element in 50 aktivnih deljenj; Pro dovoli 50 in 500.

Plačljivi paketi ponujajo tudi šifrirane povezave: brskalnik ustvari zapečateno kopijo datoteke, ključ pa potuje samo v sami povezavi, zato je Nubbo ne more prebrati.

Katero možnost uporabiti?

  • Ena datoteka, enkrat, in imaš nastavljen AWS CLI: presigned URL je najhitrejša pot.
  • Aplikacija, ki že prijavlja uporabnike in streže veliko vsebine: podpisani URL-ji ali piškotki CloudFront.
  • Redno deljenje z ljudmi zunaj tvoje ekipe, cele mape ali karkoli, kar potrebuje geslo ali omejitev: povezava za deljenje prihrani čas in napake.

Več kot ena povezava

Dve sorodni funkciji pokrivata druge pogoste primere. Zahteve za datoteke ti dajo javno povezavo za nalaganje, da lahko ljudje pošiljajo datoteke v tvoj bucket, ne da bi videli kar koli drugega v njem. Galerije mapo fotografij ali videoposnetkov spremenijo v stran za brskanje s postavitvami, vodnim žigom in lastnim geslom. V paketu Brezplačno dobiš po 3 od vsakega in neomejene povezave za deljenje; Personal in Pro te omejitve odpravita. Iskrena opomba: sličice se ustvarijo na strežniku Nubbo in shranijo v tvoj lastni bucket pod .nubbo-thumbs/.

Pogosta vprašanja

Kako delim datoteko iz S3, ne da bi jo naredil javno?

Bucket ohrani zaseben in namesto tega deli podpisan dostop: presigned URL za en objekt (iz AWS CLI ali SDK), podpisan URL ali piškotek CloudFront, če bucket že strežeš prek CloudFront, ali povezavo za deljenje iz orodja, kot je Nubbo, ki presigned URL-jem doda geslo, rok veljavnosti in omejitev prenosov.

Ali je Amazon S3 varen za deljenje datotek?

Da, dokler bucket ostane zaseben. Novi bucketi privzeto ne dovoljujejo javnega dostopa, S3 Block Public Access pa prepreči, da bi jih kdor koli pozneje odprl. Tveganje prihaja iz javnih objektov ali iz uhajanja podpisanih povezav, ki delujejo za vsakogar, ki jih ima, dokler ne potečejo.

Ali so novi bucketi S3 privzeto zasebni?

Da. AWS navaja, da novi bucketi, dostopne točke in objekti privzeto ne dovoljujejo javnega dostopa, štiri nastavitve Block Public Access pa prevladajo nad vsakim pravilnikom ali ACL, ki bi jih pozneje odprl.

Ali prejemnik potrebuje račun AWS ali Nubbo?

Ne. Presigned URL, podpisan URL CloudFront in povezava za deljenje Nubbo delujejo v katerem koli brskalniku brez računa. Samo Deli z ljudmi, ki element pošlje imenovanim osebam, zahteva, da imajo račun Nubbo.

Kako dolgo lahko velja deljena povezava S3?

Presigned URL velja največ 7 dni, ko je podpisan s ključi uporabnika IAM, z začasnimi poverilnicami pa manj. Podpisani URL-ji CloudFront veljajo toliko, kolikor določa tvoj pravilnik. Povezava za deljenje Nubbo nima roka veljavnosti, razen če ga nastaviš, ker ob vsakem prenosu izda svež kratkotrajen URL.

Ali gredo datoteke skozi Nubbo, ko nekdo prenese deljeno povezavo?

Ne: brskalnik posamezne datoteke prenese neposredno iz tvojega bucketa s presigned URL-jem. Prenosi ZIP z več datotekami se sestavijo v brskalniku, ki vsako datoteko prenese neposredno iz tvojega bucketa: Nubbo vsebine nikoli ne vidi.

Viri

Cene in omejitve so povzete po spodnjih uradnih straneh. Ponudniki jih spreminjajo, zato jih preveri, preden se odločiš.