Artikel

Så delar du S3-filer utan att göra bucketen publik

Säker delning av S3-filer med en privat bucket: presignerade URL:er, signerade CloudFront-URL:er eller delningslänkar med lösenord, utgångsdatum och gräns.

Du kan dela filer från Amazon S3 utan att någonsin göra bucketen publik. Håll den privat, låt Block Public Access vara på och ge i stället personer signerad åtkomst till specifika objekt: en presignerad URL för en enstaka fil, signerade URL:er i CloudFront när du redan har ett CDN framför bucketen, eller en delningslänk som lägger till lösenord, utgångsdatum och nedladdningsgräns. Alla tre fungerar på samma sätt hos S3-kompatibla leverantörer som Cloudflare R2, DigitalOcean Spaces, Wasabi och Backblaze B2 (CloudFront finns bara hos AWS).

Alternativ för säker delning av S3-filer i korthet

MetodBäst förLösenordNedladdningsgränsÅterkalla en länkHela mapparKod krävs
Publikt objekt eller bucketVerkligt publika tillgångar (en webbplats)NejNejNejJaNej
Presignerad URLEn fil, en gång, från CLI eller din appNejNejNejNejCLI eller SDK
Signerad URL i CloudFrontAppar som redan autentiserar användareNejNejNejMed signerade cookiesJa
Delningslänk i NubboÅterkommande delning med personer utanförJaJaJaJa, med ZIPNej

Varför inte bara göra filen publik

Det snabbaste sättet att dela en fil från S3 är att göra den publik och skicka objektets URL. Det är också det mest riskabla: allt som är publikt kan hämtas av vem som helst som hittar eller gissar adressen, utan lösenord, utan utgångsdatum och utan någon logg över vem som tog den. Bortglömda publika buckets är en klassisk källa till dataläckor, och de exponerar både filnamn och innehåll.

AWS anger att nya buckets, åtkomstpunkter och objekt inte tillåter publik åtkomst som standard. Utöver det har S3 Block Public Access fyra inställningar (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy och RestrictPublicBuckets) som åsidosätter alla policyer eller ACL:er som skulle öppna bucketen senare. De kan ställas in per bucket, per konto eller för en hel AWS Organization, och S3 tillämpar den mest restriktiva kombinationen. AWS rekommenderar att alla fyra slås på på kontonivå om du inte verkligen hostar publikt innehåll, till exempel en statisk webbplats.

Låt den spärren vara på. Allt nedan fungerar med den aktiverad.

Alternativ 1: presignerade URL:er

En presignerad URL är en objekt-URL med en signatur i frågesträngen. Den ger en operation (oftast en nedladdning) på ett objekt tills den går ut, och S3 kontrollerar signaturen vid varje förfrågan.

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

Den URL:en fungerar i 24 timmar. Standard i CLI:t är en timme och max är 604 800 sekunder (7 dagar) när du signerar med nycklar för en IAM-användare. Om du signerar med tillfälliga uppgifter, till exempel en antagen roll, dör URL:en när de uppgifterna går ut.

Det här får du:

  • Ingen ändring av bucketen eller dess policyer.
  • Exakt kontroll: ett objekt, en metod, ett utgångsdatum.
  • Fungerar hos alla leverantörer som stöder presignering med SigV4.

Det här får du inte:

  • Inget lösenord. Den som har URL:en kan använda den, hur många gånger som helst, tills den går ut.
  • Ingen nedladdningsgräns och ingen återkallelse per länk. Du kan bara stoppa en URL i förtid genom att återkalla nycklarna som signerade den.
  • Inga mappar. Du signerar objekt för objekt, så att dela en mapp med 300 filer betyder 300 URL:er.
  • Namnen syns. URL:en visar bucketens namn, objektnyckeln och ditt åtkomstnyckel-ID.

För mekaniken på djupet, inklusive uppladdningar, varje X-Amz-*-parameter och SDK-kod, se presignerade URL:er i S3 förklarade.

Alternativ 2: signerade URL:er och signerade cookies i CloudFront

Om du redan levererar bucketen via Amazon CloudFront kan du kräva signerade URL:er eller signerade cookies på ett cache-beteende. Bucketen förblir privat bakom origin access control (OAC), som AWS rekommenderar framför den äldre origin access identity: en bucketpolicy låter bara din distribution läsa objekten. Du registrerar publika nycklar i en betrodd nyckelgrupp och signerar med motsvarande privata nyckel.

  • Signerade URL:er passar enskilda filer. Med en anpassad policy kan du också ange en starttid och ett IP-intervall, och återanvända en policy för många filer med jokertecken. De kan vara kortlivade eller gälla i flera år.
  • Signerade cookies passar många filer på en gång, till exempel alla segment i en video, utan att ändra dina URL:er.

Det här är rätt verktyg när du driver en applikation som redan autentiserar användare och levererar innehåll i stor skala. För att lämna över några filer till personer utanför ditt team innebär det att sätta upp en distribution, hantera nycklar och skriva kod som signerar varje förfrågan.

Att begränsa en bucketpolicy till ett fast IP-intervall är ett annat inbyggt alternativ, men det hjälper bara när du känner till mottagarnas nätverk, vilket sällan är fallet med personer utanför din organisation.

Alternativ 3: delningslänkar med Nubbo

Nubbo ansluter till din bucket och ger dig delningslänkar med de kontroller som presignerade URL:er saknar, utan att du behöver skriva kod. Under huven används fortfarande presignerade URL:er: Nubbo kontrollerar först länkens regler och delar först därefter ut en kortlivad URL, så enskilda filer går direkt från din bucket till mottagarens webbläsare.

Steg 1: Anslut din bucket

Registrera dig gratis, verifiera din e-postadress, öppna sedan Buckets och tryck på Anslut bucket. Guiden frågar efter din leverantör (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 eller en anpassad S3-kompatibel endpoint), hur du vill ansluta (en automatisk konfiguration med en nyckel med full åtkomst, eller en nyckel som är begränsad till en bucket), din nyckel och din bucket. Den kontrollerar nyckeln och bucketen, och avslutar med att testa CORS med en riktig uppladdning från din webbläsare. Bucketen förblir privat och dina nycklar lagras krypterade med AES-256-GCM. Gratis-planen inkluderar 2 anslutningar.

Steg 2: Välj filen eller mappen

Hitta objektet i utforskaren och välj Dela. Du kan också gå till sidan Delat, trycka på Ny länk och välja bucket och fil eller mapp där.

Steg 3: Ställ in skyddet

Alla tre kontrollerna är valfria och finns i alla planer:

KontrollSå fungerar den
Lösenord4 till 50 tecken. Efter 10 felaktiga försök låses länken i 15 minuter.
UtgångsdatumAv som standard: länken förblir aktiv så länge filen eller mappen finns i din lagring.
Max antal nedladdningarTomt betyder obegränsat. När antalet är nått slutar länken leverera filen.

Steg 4: Skapa och skicka länken

Tryck på Skapa länk, kopiera den och skicka den via mejl, chatt eller vad du nu använder. Mottagaren öppnar en ren nedladdningssida och behöver inget konto. En mapplänk låter dem bläddra i mappen, ladda ner enskilda filer eller ta allt som en ZIP, som deras webbläsare bygger genom att ladda ner varje fil direkt från din bucket.

Steg 5: Skicka lösenordet separat

Att skicka lösenordet i samma meddelande som länken motverkar hela syftet. Om länken har ett lösenord levererar Skicka lösenord via e-post det som en engångslänk: lösenordet visas en gång, länken går ut efter 24 timmar, 3 dagar eller 7 dagar, och du kan lägga till en kort anteckning. Du får ett meddelande när den öppnas.

Steg 6: Följ upp och återkalla

Sidan Delat listar varje länk med status och antal nedladdningar. Du kan redigera lösenord, utgångsdatum eller gräns, inaktivera en länk (den slutar dela ut nya nedladdnings-URL:er direkt) och öppna den igen senare med samma adress.

Dela med specifika personer i stället för en länk

En länk fungerar för alla som har den. När du bara vill släppa in namngivna personer skickar Nubbos Dela med personer (i planerna Personal och Pro) en fil eller mapp till specifika e-postadresser med behörighet att visa eller ladda ner, valfritt utgångsdatum och nedladdningstak, och loggar varje åtkomst. Mottagarna behöver ett Nubbo-konto och hittar objektet under Delat med mig. Personal tillåter 10 personer per objekt och 50 aktiva delningar; Pro tillåter 50 och 500.

Betalda planer erbjuder också krypterade länkar: webbläsaren gör en förseglad kopia av filen och nyckeln finns bara i själva länken, så Nubbo kan inte läsa den.

Vilket alternativ ska du använda?

  • En fil, en gång, och du har AWS CLI konfigurerat: en presignerad URL är snabbast.
  • En applikation som redan loggar in användare och levererar mycket innehåll: signerade URL:er eller cookies i CloudFront.
  • Återkommande delning med personer utanför ditt team, hela mappar eller allt som behöver lösenord eller gräns: en delningslänk sparar tid och misstag.

Mer än en enskild länk

Två närliggande funktioner täcker de andra vanliga fallen. Filförfrågningar ger dig en publik uppladdningslänk så att andra kan skicka filer till din bucket utan att se något annat i den. Gallerier gör om en mapp med foton eller videor till en sida att bläddra i, med layouter, vattenstämpel och eget lösenord. Med Gratis-planen får du 3 av varje och obegränsat med delningslänkar; Personal och Pro tar bort de taken. En ärlig anmärkning: miniatyrer skapas på Nubbos server och lagras i din egen bucket under .nubbo-thumbs/.

Vanliga frågor

Hur delar jag en fil från S3 utan att göra den publik?

Håll bucketen privat och dela ut signerad åtkomst i stället: en presignerad URL för ett objekt (från AWS CLI eller en SDK), en signerad URL eller cookie i CloudFront om du redan levererar bucketen via CloudFront, eller en delningslänk från ett verktyg som Nubbo som lägger till lösenord, utgångsdatum och nedladdningsgräns ovanpå presignerade URL:er.

Är Amazon S3 säkert för fildelning?

Ja, så länge bucketen förblir privat. Nya buckets tillåter inte publik åtkomst som standard och S3 Block Public Access hindrar att någon öppnar dem senare. Risken kommer från att göra objekt publika eller från att signerade länkar läcker, eftersom de fungerar för alla som har dem tills de går ut.

Är nya S3-buckets privata som standard?

Ja. AWS anger att nya buckets, åtkomstpunkter och objekt inte tillåter publik åtkomst som standard, och de fyra inställningarna i Block Public Access åsidosätter alla policyer eller ACL:er som skulle öppna dem senare.

Behöver mottagaren ett konto hos AWS eller Nubbo?

Nej. En presignerad URL, en signerad URL i CloudFront och en delningslänk i Nubbo fungerar alla i vilken webbläsare som helst utan konto. Bara Dela med personer, som skickar ett objekt till namngivna personer, kräver att de har ett Nubbo-konto.

Hur länge kan en delad S3-länk gälla?

En presignerad URL gäller som mest 7 dagar när den signeras med nycklar för en IAM-användare, och kortare med tillfälliga uppgifter. Signerade URL:er i CloudFront gäller så länge din policy säger. En delningslänk i Nubbo har inget utgångsdatum om du inte anger ett, eftersom den skapar en ny kortlivad URL vid varje nedladdning.

Passerar filerna genom Nubbo när någon laddar ner via en delad länk?

Nej: webbläsaren laddar ner enskilda filer direkt från din bucket med en presignerad URL. ZIP-nedladdningar av flera filer sätts ihop i webbläsaren, som laddar ner varje fil direkt från din bucket: Nubbo ser aldrig innehållet.

Källor

Priser och gränser kommer från de officiella sidorna nedan. Leverantörerna ändrar dem, så kontrollera innan du bestämmer dig.