Cikk

Hogyan oszthatsz meg S3-fájlokat a bucket nyilvánossá tétele nélkül

Biztonságos S3-fájlmegosztás privát buckettel: presigned URL, CloudFront signed URL vagy megosztási link jelszóval, lejárattal és letöltési korláttal.

Az Amazon S3-ból úgy is megoszthatsz fájlokat, hogy a bucketet soha nem teszed nyilvánossá. Tartsd privátként, hagyd bekapcsolva a Block Public Access beállítást, és helyette adj aláírt hozzáférést bizonyos objektumokhoz: egy presigned URL-t egy alkalmi fájlhoz, CloudFront signed URL-eket, ha már CDN-t futtatsz a bucket előtt, vagy egy megosztási linket, amely jelszót, lejárati dátumot és letöltési korlátot ad hozzá. Mindhárom ugyanígy működik az S3-kompatibilis szolgáltatóknál, például a Cloudflare R2, a DigitalOcean Spaces, a Wasabi és a Backblaze B2 esetén (a CloudFront csak AWS-en érhető el).

Biztonságos S3-fájlmegosztási lehetőségek egy pillantással

MódszerMire a legjobbJelszóLetöltési korlátEgy link visszavonásaTeljes mappákKell kód?
Nyilvános objektum vagy bucketValóban nyilvános tartalmak (egy weboldal)NemNemNemIgenNem
Presigned URLEgy fájl, egyszer, a CLI-ből vagy az alkalmazásodbólNemNemNemNemCLI vagy SDK
CloudFront signed URLFelhasználókat már hitelesítő alkalmazásokNemNemNemSigned cookie-kkalIgen
Nubbo megosztási linkRendszeres megosztás külső személyekkelIgenIgenIgenIgen, ZIP-pelNem

Miért ne tedd egyszerűen nyilvánossá a fájlt

A leggyorsabb módja egy S3-fájl megosztásának, ha nyilvánossá teszed, és elküldöd az objektum URL-jét. Ez egyben a legkockázatosabb is: bármi, ami nyilvános, letölthető bárki által, aki megtalálja vagy kitalálja a címet, jelszó, lejárat és annak nyilvántartása nélkül, hogy ki vitte el. A nyilvánosan hagyott bucketek klasszikus forrásai az adatszivárgásnak, és a tartalom mellett a fájlneveket is felfedik.

Az AWS szerint az új bucketek, hozzáférési pontok és objektumok alapból nem engedélyeznek nyilvános hozzáférést. Ráadásul az S3 Block Public Access négy beállítással (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy és RestrictPublicBuckets) felülír minden olyan policyt vagy ACL-t, amely később megnyitná a bucketet. Ezek bucketenként, fiókonként vagy egy teljes AWS Organizationre beállíthatók, és az S3 a legszigorúbb kombinációt alkalmazza. Az AWS azt javasolja, hogy mind a négyet kapcsold be fiókszinten, hacsak nem tárolsz valóban nyilvános tartalmat, például egy statikus weboldalt.

Hagyd bekapcsolva ezt a kapcsolót. Az alábbiak mind működnek vele.

1. lehetőség: presigned URL-ek

A presigned URL egy objektum-URL, amelynek lekérdezési karakterláncában aláírás van. Egy műveletre (általában letöltésre) ad jogot egy objektumon a lejáratig, és az S3 minden kérésnél ellenőrzi az aláírást.

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

Ez az URL 24 óráig működik. A CLI alapértelmezése egy óra, a maximum 604 800 másodperc (7 nap), ha IAM-felhasználói kulcsokkal írsz alá. Ha ideiglenes hitelesítő adatokkal, például felvett szereppel írsz alá, az URL akkor szűnik meg, amikor ezek a hitelesítő adatok lejárnak.

Amit kapsz:

  • Semmi sem változik a bucketen vagy a policyjain.
  • Pontos irányítás: egy objektum, egy metódus, egy lejárat.
  • Bármely szolgáltatónál működik, amely támogatja a SigV4 előaláírást.

Amit nem kapsz:

  • Nincs jelszó. Aki birtokolja az URL-t, használhatja, ahányszor csak akarja, a lejáratig.
  • Nincs letöltési korlát és nincs linkenkénti visszavonás. Egy URL-t csak úgy szüntethetsz meg korábban, ha visszavonod az aláíró kulcsokat.
  • Nincsenek mappák. Objektumonként írsz alá, így egy 300 fájlos mappa megosztása 300 URL-t jelent.
  • A nevek védelme. Az URL megmutatja a bucketed nevét, az objektumkulcsot és az access key ID-det.

A működés részleteiért, a feltöltésekkel, az egyes X-Amz-* paraméterekkel és SDK-kóddal együtt, lásd Az S3 presigned URL-ek magyarázata cikket.

Ha a bucketet már Amazon CloudFronton keresztül szolgálod ki, egy cache behaviorön megkövetelheted a signed URL-eket vagy signed cookie-kat. A bucket privát marad az origin access control (OAC) mögött, amelyet az AWS a régebbi origin access identity helyett javasol: egy bucket policy csak a disztribúciódnak engedi az objektumok olvasását. Nyilvános kulcsokat regisztrálsz egy megbízható kulcscsoportban, és a hozzájuk tartozó privát kulccsal írsz alá.

  • A signed URL-ek egyes fájlokhoz valók. Egyéni policyvel kezdési időpontot és IP-tartományt is megadhatsz, és helyettesítő karakterekkel egy policyt sok fájlhoz is újrahasznosíthatsz. Lehetnek rövid életűek, vagy évekig is tarthatnak.
  • A signed cookie-k egyszerre sok fájlhoz valók, például egy videó összes szegmenséhez, az URL-ek megváltoztatása nélkül.

Ez a megfelelő eszköz, ha olyan alkalmazást futtatsz, amely már hitelesíti a felhasználókat, és nagy léptékben szolgál ki tartalmat. Ha néhány fájlt kell átadnod a csapatodon kívüli embereknek, ez egy disztribúció beállítását, kulcsok kezelését és minden kérést aláíró kód megírását jelenti.

A bucket policy rögzített IP-tartományra korlátozása egy másik natív lehetőség, de csak akkor segít, ha ismered a címzettek hálózatait, ami a szervezeteden kívüli embereknél ritkán van így.

3. lehetőség: megosztási linkek a Nubbóval

A Nubbo csatlakozik a bucketedhez, és kód írása nélkül olyan megosztási linkeket ad, amelyekben megvannak a presigned URL-ekből hiányzó ellenőrzések. A háttérben továbbra is presigned URL-eket használ: a Nubbo előbb ellenőrzi a link szabályait, és csak utána ad ki egy rövid élettartamú URL-t, így az egyes fájlok közvetlenül a bucketedből jutnak a címzett böngészőjébe.

1. lépés: csatlakoztasd a bucketedet

Regisztrálj ingyen, erősítsd meg az e-mail-címedet, majd nyisd meg a Bucketek oldalt, és kattints a Bucket csatlakoztatása gombra. A varázsló megkérdezi a szolgáltatódat (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 vagy egy egyéni S3-kompatibilis endpoint), a csatlakozás módját (automatikus beállítás teljes hozzáférésű kulccsal, vagy egy bucketre korlátozott kulcs), a kulcsodat és a bucketedet. Ellenőrzi a kulcsot és a bucketet, és végül egy valódi, a böngésződből indított feltöltéssel teszteli a CORS-t. A bucket privát marad, a kulcsaidat pedig AES-256-GCM titkosítással tároljuk. Az Ingyenes csomag 2 kapcsolatot tartalmaz.

2. lépés: válaszd ki a fájlt vagy a mappát

Keresd meg az elemet a fájlkezelőben, és válaszd a Megosztás lehetőséget. A Megosztva oldalra is mehetsz, ahol az Új link gombra kattintva ott választhatod ki a bucketet és a fájlt vagy mappát.

3. lépés: állítsd be a védelmet

Mindhárom ellenőrzés opcionális, és minden csomagban elérhető:

EllenőrzésHogyan működik
Jelszó4 és 50 karakter között. 10 hibás próbálkozás után a link 15 percre zárolódik.
Lejárati dátumAlapból ki van kapcsolva: a link addig aktív, amíg a fájl vagy mappa a tárhelyeden van.
Max. letöltésÜresen hagyva korlátlan. Ha eléri a számot, a link többé nem szolgálja ki a fájlt.

4. lépés: hozd létre és küldd el a linket

Kattints a Link létrehozása gombra, másold ki, és küldd el e-mailben, csevegőben vagy bármin, amit használsz. A címzett egy letisztult letöltési oldalt nyit meg, és nincs szüksége fiókra. Egy mappalinkkel böngészheti a mappát, letölthet egyes fájlokat, vagy mindent elvihet ZIP-ként, amelyet a böngészője úgy állít össze, hogy minden fájlt közvetlenül a bucketedből tölt le.

5. lépés: küldd el külön a jelszót

Ha a jelszót ugyanabban az üzenetben küldöd el, mint a linket, értelmét veszti. Ha a linknek van jelszava, a Jelszó küldése emailben funkció egyszer megnyitható linkként kézbesíti: a jelszó egyszer jelenik meg, a megnyitó link 24 óra, 3 nap vagy 7 nap után lejár, és rövid megjegyzést is fűzhetsz hozzá. Értesítést kapsz, amikor megnyitják.

6. lépés: kövesd és vond vissza

A Megosztva oldal minden linket az állapotával és a letöltésszámával együtt listáz. Szerkesztheted a jelszót, a lejáratot vagy a korlátot, kikapcsolhatsz egy linket (azonnal leáll az új letöltési URL-ek kiadása), és később ugyanazzal a címmel újra megnyithatod.

Egy link mindenkinek működik, akinél ott van. Ha azt szeretnéd, hogy csak megnevezett személyek férjenek hozzá, a Nubbo Megosztás emberekkel funkciója (a Personal és a Pro csomagban) egy fájlt vagy mappát konkrét e-mail-címekre küld el megtekintési vagy letöltési jogosultsággal, opcionális lejárattal és letöltési korláttal, és minden hozzáférést naplóz. A címzetteknek Nubbo-fiók kell, és a Velem megosztva részen találják az elemet. A Personal elemenként 10 személyt és 50 aktív megosztást enged; a Pro 50-et és 500-at.

A fizetős csomagok titkosított linkeket is kínálnak: a böngésző lezárt másolatot készít a fájlról, a kulcs pedig csak magában a linkben utazik, így a Nubbo nem tudja elolvasni.

Melyik lehetőséget válaszd?

  • Egy fájl, egyszer, és be van állítva az AWS CLI: a presigned URL a leggyorsabb út.
  • Egy alkalmazás, amely már bejelentkezteti a felhasználókat, és sok tartalmat szolgál ki: CloudFront signed URL-ek vagy cookie-k.
  • Rendszeres megosztás a csapatodon kívüli emberekkel, teljes mappák vagy bármi, amihez jelszó vagy korlát kell: a megosztási link időt és hibákat spórol meg.

Egyetlen linken túl

Két kapcsolódó funkció fedi le a többi gyakori esetet. A fájlkérések nyilvános feltöltési linket adnak, így mások fájlokat küldhetnek a bucketedbe anélkül, hogy bármi mást látnának benne. A galériák egy fotókat vagy videókat tartalmazó mappát böngészhető oldallá alakítanak elrendezésekkel, vízjellel és saját jelszóval. Az Ingyenes csomagban mindkettőből 3-at kapsz, és korlátlan megosztási linket; a Personal és a Pro megszünteti ezeket a korlátokat. Egy őszinte megjegyzés: az előnézeti képek a Nubbo szerverén készülnek, és a saját bucketedbe kerülnek a .nubbo-thumbs/ alá.

Gyakori kérdések

Hogyan oszthatok meg egy fájlt az S3-ból anélkül, hogy nyilvánossá tenném?

Tartsd privátként a bucketet, és helyette aláírt hozzáférést adj: egy presigned URL-t egy objektumhoz (az AWS CLI-ből vagy egy SDK-ból), egy CloudFront signed URL-t vagy cookie-t, ha a bucketet már CloudFronton keresztül szolgálod ki, vagy egy megosztási linket egy olyan eszközből, mint a Nubbo, amely jelszót, lejáratot és letöltési korlátot ad a presigned URL-ek fölé.

Biztonságos az Amazon S3 fájlmegosztásra?

Igen, amíg a bucket privát marad. Az új bucketek alapból nem engedélyeznek nyilvános hozzáférést, az S3 Block Public Access pedig megakadályozza, hogy később bárki megnyissa őket. A kockázatot az objektumok nyilvánossá tétele vagy az aláírt linkek kiszivárgása jelenti, mert ezek a lejáratig bárkinek működnek, akinél ott vannak.

Alapból privátak az új S3 bucketek?

Igen. Az AWS szerint az új bucketek, hozzáférési pontok és objektumok alapból nem engedélyeznek nyilvános hozzáférést, a négy Block Public Access beállítás pedig felülír minden olyan policyt vagy ACL-t, amely később megnyitná őket.

Kell a címzettnek AWS- vagy Nubbo-fiók?

Nem. A presigned URL, a CloudFront signed URL és a Nubbo megosztási linkje is működik bármilyen böngészőben fiók nélkül. Csak a Megosztás emberekkel funkcióhoz, amely egy elemet megnevezett személyeknek küld el, kell, hogy legyen Nubbo-fiókjuk.

Meddig tarthat egy megosztott S3-link?

Egy presigned URL IAM-felhasználói kulcsokkal aláírva legfeljebb 7 napig tart, ideiglenes hitelesítő adatokkal kevesebb ideig. A CloudFront signed URL-ek addig tartanak, ameddig a policyd mondja. A Nubbo megosztási linkjének nincs lejárata, hacsak nem állítasz be egyet, mert minden letöltésnél friss, rövid élettartamú URL-t ad ki.

Áthaladnak a fájlok a Nubbón, amikor valaki letölt egy megosztott linkről?

Nem: az egyes fájlokat a böngésző egy presigned URL-lel közvetlenül a bucketedből tölti le. A több fájlt tartalmazó ZIP-letöltéseket a böngésző állítja össze, minden fájlt közvetlenül a bucketedből letöltve: a Nubbo soha nem látja a tartalmat.

Források

Az árak és korlátok az alábbi hivatalos oldalakról származnak. A szolgáltatók módosítják őket, ezért döntés előtt ellenőrizd.