Článek

Jak sdílet soubory z S3, aniž byste bucket zveřejnili

Bezpečné sdílení souborů S3 se soukromým bucketem: presigned URL, podepsané URL CloudFront nebo odkazy ke sdílení s heslem, vypršením a limitem stažení.

Soubory z Amazon S3 můžete sdílet, aniž byste kdy bucket zveřejnili. Nechte ho soukromý, ponechte zapnutý Block Public Access a místo toho dejte lidem podepsaný přístup ke konkrétním objektům: presigned URL pro jednorázový soubor, podepsané URL CloudFront, pokud už před bucketem provozujete CDN, nebo odkaz ke sdílení, který přidává heslo, datum vypršení a limit stažení. Všechny tři fungují stejně u poskytovatelů kompatibilních s S3, jako jsou Cloudflare R2, DigitalOcean Spaces, Wasabi a Backblaze B2 (CloudFront je jen pro AWS).

Možnosti bezpečného sdílení souborů S3 v kostce

MetodaNejlepší proHesloLimit staženíZrušení jednoho odkazuCelé složkyPotřeba kódu
Veřejný objekt nebo bucketSkutečně veřejné assety (web)NeNeNeAnoNe
Presigned URLJeden soubor, jednou, z CLI nebo vaší aplikaceNeNeNeNeCLI nebo SDK
Podepsaná URL CloudFrontAplikace, které už ověřují uživateleNeNeNeS podepsanými cookiesAno
Odkaz ke sdílení z NubboOpakované sdílení s lidmi zvenkuAnoAnoAnoAno, se ZIPNe

Proč soubor prostě nezveřejnit

Nejrychlejší způsob, jak sdílet soubor z S3, je zveřejnit ho a poslat URL objektu. Je to ale také nejriskantnější: cokoli veřejného si může stáhnout kdokoli, kdo adresu najde nebo uhodne, bez hesla, bez vypršení a bez záznamu o tom, kdo si to vzal. Zapomenuté veřejné buckety jsou klasickým zdrojem úniků dat a odhalují nejen obsah, ale i názvy souborů.

AWS uvádí, že nové buckety, přístupové body a objekty ve výchozím stavu veřejný přístup nepovolují. Navíc má S3 Block Public Access čtyři nastavení (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy a RestrictPublicBuckets), která mají přednost před jakoukoli zásadou nebo ACL, které by bucket později otevřely. Lze je nastavit pro bucket, pro účet nebo pro celou AWS Organization a S3 uplatní nejpřísnější kombinaci. AWS doporučuje zapnout všechna čtyři na úrovni účtu, pokud skutečně nehostujete veřejný obsah, například statický web.

Nechte tento přepínač zapnutý. Vše níže funguje i s ním.

Možnost 1: presigned URL

Presigned URL je URL objektu s podpisem v query stringu. Umožňuje jednu operaci (obvykle stažení) na jednom objektu, dokud nevyprší, a S3 podpis kontroluje při každém požadavku.

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

Tato URL funguje 24 hodin. Výchozí hodnota CLI je jedna hodina a maximum 604 800 sekund (7 dní) při podpisu klíči uživatele IAM. Pokud podepisujete dočasnými přihlašovacími údaji, například převzatou rolí, URL zanikne, když tyto údaje vyprší.

Co získáte:

  • Žádnou změnu bucketu ani jeho zásad.
  • Přesnou kontrolu: jeden objekt, jedna metoda, jedna platnost.
  • Funguje u každého poskytovatele, který podporuje podepisování SigV4.

Co nezískáte:

  • Heslo. Kdo má URL, může ji použít, kolikrát chce, dokud nevyprší.
  • Limit stažení ani zrušení jednotlivých odkazů. URL můžete předčasně zneplatnit jen odvoláním klíčů, které ji podepsaly.
  • Složky. Podepisujete objekt po objektu, takže sdílení složky s 300 soubory znamená 300 URL.
  • Soukromí názvů. URL ukazuje název vašeho bucketu, klíč objektu a ID vašeho přístupového klíče.

Mechaniku do hloubky, včetně nahrávání, jednotlivých parametrů X-Amz-* a kódu SDK, najdete v článku presigned URL v S3.

Možnost 2: podepsané URL a podepsané cookies CloudFront

Pokud už bucket servírujete přes Amazon CloudFront, můžete u cache behavior vyžadovat podepsané URL nebo podepsané cookies. Bucket zůstává soukromý za origin access control (OAC), které AWS doporučuje místo staršího origin access identity: zásada bucketu dovolí číst objekty jen vaší distribuci. Veřejné klíče zaregistrujete v trusted key group a podepisujete odpovídajícím soukromým klíčem.

  • Podepsané URL se hodí pro jednotlivé soubory. S vlastní zásadou můžete nastavit i čas začátku a rozsah IP a jednu zásadu použít pro mnoho souborů pomocí zástupných znaků. Mohou být krátkodobé, nebo platit roky.
  • Podepsané cookies se hodí pro mnoho souborů najednou, například pro všechny segmenty videa, bez změny vašich URL.

To je správný nástroj, když provozujete aplikaci, která už ověřuje uživatele a servíruje obsah ve velkém. Pro předání pár souborů lidem mimo váš tým to znamená nastavit distribuci, spravovat klíče a psát kód, který každý požadavek podepíše.

Další nativní možností je omezit zásadu bucketu na pevný rozsah IP, ale pomůže jen tehdy, když znáte sítě příjemců, což u lidí mimo vaši organizaci platí jen zřídka.

Možnost 3: odkazy ke sdílení s Nubbo

Nubbo se připojí k vašemu bucketu a dá vám odkazy ke sdílení s kontrolami, které presigned URL chybí, a to bez psaní kódu. Pod kapotou stále používá presigned URL: Nubbo nejdřív zkontroluje pravidla odkazu a teprve potom vydá krátkodobou URL, takže jednotlivé soubory putují přímo z vašeho bucketu do prohlížeče příjemce.

Krok 1: Připojte svůj bucket

Zaregistrujte se zdarma, ověřte svůj e-mail, pak otevřete Buckety a stiskněte Připojit bucket. Průvodce se zeptá na poskytovatele (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 nebo vlastní endpoint kompatibilní s S3), způsob připojení (automatické nastavení s klíčem s plným přístupem, nebo klíč omezený na jeden bucket), váš klíč a váš bucket. Ověří klíč i bucket a na konci otestuje CORS skutečným nahráním z vašeho prohlížeče. Bucket zůstává soukromý a vaše klíče se ukládají zašifrované pomocí AES-256-GCM. Tarif Zdarma zahrnuje 2 připojení.

Krok 2: Vyberte soubor nebo složku

Najděte položku v průzkumníku a zvolte Sdílet. Můžete také přejít na stránku Sdílené, stisknout Nový odkaz a vybrat tam bucket a soubor nebo složku.

Krok 3: Nastavte ochranu

Všechny tři kontroly jsou volitelné a dostupné v každém tarifu:

KontrolaJak funguje
Heslo4 až 50 znaků. Po 10 chybných pokusech se odkaz na 15 minut zamkne.
Datum vypršení platnostiVe výchozím stavu vypnuto: odkaz zůstává aktivní, dokud je soubor nebo složka ve vašem úložišti.
Maximální počet staženíPrázdné znamená bez omezení. Po dosažení počtu přestane odkaz soubor poskytovat.

Krok 4: Vytvořte a pošlete odkaz

Stiskněte Vytvořit odkaz, zkopírujte ho a pošlete e-mailem, v chatu nebo čímkoli, co používáte. Příjemce otevře přehlednou stránku ke stažení a účet nepotřebuje. Odkaz na složku umožní složku procházet, stahovat jednotlivé soubory nebo si vzít vše jako ZIP, který jeho prohlížeč sestaví tak, že stáhne každý soubor přímo z vašeho bucketu.

Krok 5: Pošlete heslo zvlášť

Poslat heslo ve stejné zprávě jako odkaz postrádá smysl. Pokud má odkaz heslo, Odeslat heslo e-mailem ho doručí jako jednorázový odkaz k odhalení: heslo se ukáže jednou, odkaz k odhalení vyprší po 24 hodinách, 3 dnech nebo 7 dnech a můžete přidat krátkou poznámku. Když ho někdo otevře, dostanete upozornění.

Krok 6: Sledujte a rušte

Stránka Sdílené vypisuje každý odkaz s jeho stavem a počtem stažení. Můžete upravit heslo, platnost nebo limit, odkaz deaktivovat (okamžitě přestane vydávat nové URL ke stažení) a později ho znovu otevřít se stejnou adresou.

Sdílení s konkrétními lidmi místo odkazu

Odkaz funguje pro každého, kdo ho má. Když chcete pustit dovnitř jen konkrétní lidi, funkce Sdílet s lidmi v Nubbo (v tarifech Personal a Pro) pošle soubor nebo složku na konkrétní e-mailové adresy s oprávněním k zobrazení nebo stažení, volitelnou platností a limitem stažení a zaznamená každý přístup. Příjemci potřebují účet Nubbo a položku najdou v Sdíleno se mnou. Personal umožňuje 10 lidí na položku a 50 aktivních sdílení; Pro 50 a 500.

Placené tarify nabízejí také šifrované odkazy: prohlížeč vytvoří zapečetěnou kopii souboru a klíč putuje jen v samotném odkazu, takže ho Nubbo nemůže přečíst.

Kterou možnost použít?

  • Jeden soubor, jednou, a máte nastavené AWS CLI: presigned URL je nejrychlejší cesta.
  • Aplikace, která už přihlašuje uživatele a servíruje hodně obsahu: podepsané URL nebo cookies CloudFront.
  • Opakované sdílení s lidmi mimo váš tým, celé složky nebo cokoli, co potřebuje heslo či limit: odkaz ke sdílení ušetří čas i chyby.

Víc než jeden odkaz

Ostatní běžné případy pokrývají dvě související funkce. Žádosti o soubory vám dají veřejný odkaz pro nahrávání, přes který vám lidé mohou posílat soubory do bucketu, aniž by v něm viděli cokoli jiného. Galerie promění složku fotek nebo videí v procházitelnou stránku s rozvrženími, vodoznakem a vlastním heslem. V tarifu Zdarma máte od každého 3 a neomezené odkazy ke sdílení; Personal a Pro tyto limity odstraňují. Jedna poctivá poznámka: náhledy se generují na serveru Nubbo a ukládají se do vašeho vlastního bucketu pod .nubbo-thumbs/.

Časté dotazy

Jak sdílet soubor z S3, aniž bych ho zveřejnil?

Nechte bucket soukromý a místo toho rozdávejte podepsaný přístup: presigned URL pro jeden objekt (z AWS CLI nebo SDK), podepsanou URL nebo cookie CloudFront, pokud už bucket servírujete přes CloudFront, nebo odkaz ke sdílení z nástroje jako Nubbo, který k presigned URL přidává heslo, datum vypršení a limit stažení.

Je Amazon S3 bezpečné pro sdílení souborů?

Ano, pokud bucket zůstane soukromý. Nové buckety ve výchozím stavu veřejný přístup nepovolují a S3 Block Public Access komukoli zabrání je později otevřít. Riziko vzniká zveřejněním objektů nebo únikem podepsaných odkazů, které fungují pro kohokoli, kdo je má, dokud nevyprší.

Jsou nové buckety S3 ve výchozím stavu soukromé?

Ano. AWS uvádí, že nové buckety, přístupové body a objekty ve výchozím stavu veřejný přístup nepovolují a čtyři nastavení Block Public Access mají přednost před jakoukoli zásadou nebo ACL, které by je později otevřely.

Potřebuje příjemce účet AWS nebo Nubbo?

Ne. Presigned URL, podepsaná URL CloudFront i odkaz ke sdílení z Nubbo fungují v jakémkoli prohlížeči bez účtu. Jen Sdílet s lidmi, které posílá položku konkrétním lidem, vyžaduje, aby měli účet Nubbo.

Jak dlouho může sdílený odkaz S3 platit?

Presigned URL platí nejvýše 7 dní při podpisu klíči uživatele IAM a méně s dočasnými přihlašovacími údaji. Podepsané URL CloudFront platí tak dlouho, jak určí vaše zásada. Odkaz ke sdílení z Nubbo nevyprší, pokud mu platnost nenastavíte, protože při každém stažení vydá novou krátkodobou URL.

Procházejí soubory přes Nubbo, když někdo stahuje sdílený odkaz?

Ne: prohlížeč stahuje jednotlivé soubory přímo z vašeho bucketu přes presigned URL. ZIP archivy s více soubory sestavuje prohlížeč, který stahuje každý soubor přímo z vašeho bucketu: Nubbo obsah nevidí.

Zdroje

Ceny a limity pocházejí z níže uvedených oficiálních stránek. Poskytovatelé je mění, proto si je před rozhodnutím ověřte.