Failus iš Amazon S3 galite bendrinti niekada nepadarę bucket viešo. Palikite jį privatų, nepalikite išjungto Block Public Access ir vietoj to suteikite žmonėms pasirašytą prieigą prie konkrečių objektų: presigned URL vienkartiniam failui, CloudFront pasirašytus URL, kai prieš bucket jau veikia CDN, arba bendrinimo nuorodą, kuri prideda slaptažodį, galiojimo pabaigos datą ir atsisiuntimų limitą. Visi trys būdai vienodai veikia ir su S3 suderinamais teikėjais, tokiais kaip Cloudflare R2, DigitalOcean Spaces, Wasabi ir Backblaze B2 (CloudFront yra tik AWS).
Saugaus S3 failų bendrinimo būdai trumpai
| Būdas | Kam geriausia | Slaptažodis | Atsisiuntimų limitas | Vienos nuorodos atšaukimas | Visi aplankai | Reikia kodo |
|---|---|---|---|---|---|---|
| Viešas objektas ar bucket | Tikrai vieši ištekliai (svetainė) | Ne | Ne | Ne | Taip | Ne |
| Presigned URL | Vienas failas, vieną kartą, iš CLI ar programos | Ne | Ne | Ne | Ne | CLI ar SDK |
| CloudFront pasirašytas URL | Programos, kurios jau autentifikuoja vartotojus | Ne | Ne | Ne | Su pasirašytais slapukais | Taip |
| Nubbo bendrinimo nuoroda | Nuolatinis bendrinimas su išorės žmonėmis | Taip | Taip | Taip | Taip, su ZIP | Ne |
Kodėl tiesiog nepadaryti failo viešo
Greičiausias būdas bendrinti failą iš S3 yra padaryti jį viešą ir nusiųsti objekto URL. Tai ir rizikingiausias būdas: viską, kas vieša, gali parsisiųsti bet kas, kas suranda ar atspėja adresą, be slaptažodžio, be galiojimo pabaigos ir be jokio įrašo, kas tai paėmė. Pamiršti vieši bucket yra klasikinis duomenų nutekėjimo šaltinis, ir jie atskleidžia ne tik turinį, bet ir failų pavadinimus.
AWS nurodo, kad nauji bucket, prieigos taškai ir objektai pagal numatytuosius nustatymus neleidžia viešos prieigos. Be to, S3 Block Public Access turi keturis nustatymus (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy ir RestrictPublicBuckets), kurie nusveria bet kokią politiką ar ACL, kuri vėliau atvertų bucket. Juos galima nustatyti kiekvienam bucket, paskyrai ar visai AWS Organization, o S3 taiko griežčiausią derinį. AWS rekomenduoja visus keturis įjungti paskyros lygiu, nebent tikrai talpinate viešą turinį, pavyzdžiui, statinę svetainę.
Palikite šį jungiklį įjungtą. Viskas, kas aprašyta toliau, veikia jam esant įjungtam.
1 būdas: presigned URL
Presigned URL yra objekto URL su parašu užklausos eilutėje. Jis suteikia vieną operaciją (dažniausiai atsisiuntimą) su vienu objektu, kol nustos galioti, o S3 tikrina parašą kiekvienos užklausos metu.
aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400
Šis URL veikia 24 valandas. CLI numatytoji reikšmė yra viena valanda, o didžiausia 604 800 sekundžių (7 dienos), kai pasirašote IAM vartotojo raktais. Jei pasirašote laikinais prisijungimo duomenimis, pavyzdžiui, prisiimtu vaidmeniu, URL nustoja veikti, kai baigiasi tų duomenų galiojimas.
Ką gaunate:
- Jokių bucket ar jo politikų pakeitimų.
- Tikslią kontrolę: vienas objektas, vienas metodas, vienas galiojimas.
- Veikia su bet kuriuo teikėju, palaikančiu SigV4 pasirašymą.
Ko negaunate:
- Slaptažodžio. Kas turi URL, gali jį naudoti kiek tik nori kartų, kol jis nustos galioti.
- Atsisiuntimų limito ir atskiros nuorodos atšaukimo. URL anksčiau laiko galite panaikinti tik atšaukę jį pasirašiusius raktus.
- Aplankų. Pasirašote objektą po objekto, todėl norint bendrinti 300 failų aplanką reikia 300 URL.
- Pavadinimų privatumo. URL rodo jūsų bucket pavadinimą, objekto raktą ir jūsų prieigos rakto ID.
Išsamiau apie mechanizmą, įskaitant įkėlimus, kiekvieną X-Amz-* parametrą ir SDK kodą, skaitykite straipsnyje S3 presigned URL paaiškinimas.
2 būdas: CloudFront pasirašyti URL ir pasirašyti slapukai
Jei bucket jau pateikiate per Amazon CloudFront, cache behavior galite pareikalauti pasirašytų URL ar pasirašytų slapukų. Bucket lieka privatus už origin access control (OAC), kurį AWS rekomenduoja vietoj senesnio origin access identity: bucket politika leidžia objektus skaityti tik jūsų distribucijai. Viešuosius raktus užregistruojate patikimų raktų grupėje ir pasirašote atitinkamu privačiuoju raktu.
- Pasirašyti URL tinka pavieniams failams. Su pasirinktine politika taip pat galite nustatyti pradžios laiką ir IP intervalą bei pakartotinai naudoti vieną politiką daugeliui failų su pakaitos simboliais. Jie gali būti trumpalaikiai arba galioti metų metus.
- Pasirašyti slapukai tinka daugeliui failų iš karto, pavyzdžiui, kiekvienam vaizdo įrašo segmentui, nekeičiant jūsų URL.
Tai tinkamas įrankis, kai turite programą, kuri jau autentifikuoja vartotojus ir pateikia turinį dideliu mastu. Norint perduoti kelis failus išorės žmonėms, tai reiškia distribucijos sukūrimą, raktų valdymą ir kodo, pasirašančio kiekvieną užklausą, rašymą.
Kitas integruotas variantas yra bucket politikos apribojimas fiksuotu IP intervalu, bet jis padeda tik tada, kai žinote gavėjų tinklus, o su žmonėmis už jūsų organizacijos ribų taip būna retai.
3 būdas: bendrinimo nuorodos su Nubbo
Nubbo jungiasi prie jūsų bucket ir suteikia bendrinimo nuorodas su kontrolės priemonėmis, kurių trūksta presigned URL, nerašant kodo. Viduje ji vis tiek naudoja presigned URL: Nubbo pirmiausia patikrina nuorodos taisykles ir tik tada išduoda trumpalaikį URL, todėl pavieniai failai keliauja tiesiai iš jūsų bucket į gavėjo naršyklę.
1 žingsnis: prijunkite savo bucket
Užsiregistruokite nemokamai, patvirtinkite el. paštą, tada atidarykite Bucket’ai ir spauskite Prijungti bucket. Vedlys paprašo nurodyti teikėją (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 ar pasirinktinį S3 suderinamą endpoint), prijungimo būdą (automatinis nustatymas su visos prieigos raktu arba raktas, apribotas vienu bucket), jūsų raktą ir jūsų bucket. Jis patikrina raktą ir bucket, o pabaigoje išbando CORS tikru įkėlimu iš jūsų naršyklės. Bucket lieka privatus, o jūsų raktai saugomi užšifruoti AES-256-GCM. Nemokamas planas apima 2 prijungimus.
2 žingsnis: pasirinkite failą ar aplanką
Suraskite elementą naršyklėje ir spauskite Bendrinti. Taip pat galite eiti į puslapį Bendrinama, spausti Nauja nuoroda ir ten pasirinkti bucket bei failą ar aplanką.
3 žingsnis: nustatykite apsaugą
Visos trys kontrolės priemonės neprivalomos ir prieinamos visuose planuose:
| Kontrolė | Kaip veikia |
|---|---|
| Slaptažodis | Nuo 4 iki 50 simbolių. Po 10 neteisingų bandymų nuoroda užrakinama 15 minučių. |
| Galiojimo pabaigos data | Pagal numatytuosius nustatymus išjungta: nuoroda aktyvi, kol failas ar aplankas yra jūsų saugykloje. |
| Maksimalus atsisiuntimų skaičius | Tuščias reiškia neribotai. Pasiekus skaičių, nuoroda nustoja pateikti failą. |
4 žingsnis: sukurkite ir išsiųskite nuorodą
Spauskite Sukurti nuorodą, nukopijuokite ją ir išsiųskite el. paštu, pokalbyje ar kitu jums įprastu būdu. Gavėjas atidaro tvarkingą atsisiuntimo puslapį, ir jam nereikia paskyros. Aplanko nuoroda leidžia naršyti aplanką, atsisiųsti pavienius failus arba viską paimti ZIP archyvu, kurį gavėjo naršyklė sudaro atsisiųsdama kiekvieną failą tiesiai iš jūsų bucket.
5 žingsnis: slaptažodį siųskite atskirai
Siųsti slaptažodį tame pačiame laiške kaip ir nuorodą beprasmiška. Jei nuoroda turi slaptažodį, Siųsti slaptažodį el. paštu jį pristato kaip vienkartinio parodymo nuorodą: slaptažodis parodomas vieną kartą, parodymo nuoroda nustoja galioti po 24 valandų, 3 dienų ar 7 dienų, ir galite pridėti trumpą pastabą. Jums pranešama, kai ji atidaroma.
6 žingsnis: stebėkite ir atšaukite
Puslapyje Bendrinama išvardytos visos nuorodos su jų būsena ir atsisiuntimų skaičiumi. Galite redaguoti slaptažodį, galiojimą ar limitą, išjungti nuorodą (ji iš karto nustoja išduoti naujus atsisiuntimo URL) ir vėliau vėl ją atidaryti tuo pačiu adresu.
Bendrinimas su konkrečiais žmonėmis vietoj nuorodos
Nuoroda veikia visiems, kas ją turi. Kai norite, kad patektų tik konkretūs žmonės, Nubbo funkcija Bendrinti su žmonėmis (Personal ir Pro planuose) siunčia failą ar aplanką konkretiems el. pašto adresams su peržiūros ar atsisiuntimo teise, pasirinktiniu galiojimu ir atsisiuntimų riba bei registruoja kiekvieną prieigą. Gavėjams reikia Nubbo paskyros, o elementą jie randa skiltyje Pasidalyta su manimi. Personal leidžia 10 žmonių vienam elementui ir 50 aktyvių bendrinimų; Pro leidžia 50 ir 500.
Mokami planai taip pat siūlo šifruotas nuorodas: naršyklė sukuria užsandarintą failo kopiją, o raktas keliauja tik pačioje nuorodoje, todėl Nubbo jo perskaityti negali.
Kurį būdą rinktis?
- Vienas failas, vieną kartą, ir turite sukonfigūruotą AWS CLI: presigned URL yra greičiausias kelias.
- Programa, kuri jau prijungia vartotojus ir pateikia daug turinio: CloudFront pasirašyti URL ar slapukai.
- Nuolatinis bendrinimas su žmonėmis už jūsų komandos ribų, visi aplankai ar viskas, kam reikia slaptažodžio ar limito: bendrinimo nuoroda sutaupo laiko ir apsaugo nuo klaidų.
Daugiau nei viena nuoroda
Dvi susijusios funkcijos apima kitus dažnus atvejus. Failų užklausos suteikia viešą įkėlimo nuorodą, kad žmonės galėtų siųsti failus į jūsų bucket, nematydami nieko kito, kas jame yra. Galerijos paverčia nuotraukų ar vaizdo įrašų aplanką naršomu puslapiu su išdėstymais, vandens ženklu ir savo slaptažodžiu. Nemokamame plane gaunate po 3 iš kiekvieno ir neribotas bendrinimo nuorodas; Personal ir Pro šias ribas panaikina. Viena sąžininga pastaba: miniatiūros generuojamos Nubbo serveryje ir saugomos jūsų pačių bucket aplanke .nubbo-thumbs/.
Dažnai užduodami klausimai
Kaip bendrinti failą iš S3 nepadarant jo viešo?
Palikite bucket privatų ir vietoj to suteikite pasirašytą prieigą: presigned URL vienam objektui (per AWS CLI ar SDK), CloudFront pasirašytą URL ar slapuką, jei bucket jau pateikiate per CloudFront, arba bendrinimo nuorodą iš įrankio, pavyzdžiui, Nubbo, kuris virš presigned URL prideda slaptažodį, galiojimą ir atsisiuntimų limitą.
Ar Amazon S3 saugus failų bendrinimui?
Taip, kol bucket lieka privatus. Nauji bucket pagal numatytuosius nustatymus neleidžia viešos prieigos, o S3 Block Public Access neleidžia niekam jų vėliau atverti. Rizika kyla padarius objektus viešus arba nutekėjus pasirašytoms nuorodoms, kurios veikia visiems, kas jas turi, kol nustos galioti.
Ar nauji S3 bucket pagal numatytuosius nustatymus privatūs?
Taip. AWS nurodo, kad nauji bucket, prieigos taškai ir objektai pagal numatytuosius nustatymus neleidžia viešos prieigos, o keturi Block Public Access nustatymai nusveria bet kokią politiką ar ACL, kuri vėliau juos atvertų.
Ar gavėjui reikia AWS ar Nubbo paskyros?
Ne. Presigned URL, CloudFront pasirašytas URL ir Nubbo bendrinimo nuoroda veikia bet kurioje naršyklėje be paskyros. Tik funkcija Bendrinti su žmonėmis, kuri elementą siunčia konkretiems žmonėms, reikalauja, kad jie turėtų Nubbo paskyrą.
Kiek ilgai gali galioti bendrinama S3 nuoroda?
Presigned URL, pasirašytas IAM vartotojo raktais, galioja daugiausia 7 dienas, o su laikinais prisijungimo duomenimis trumpiau. CloudFront pasirašyti URL galioja tiek, kiek nurodo jūsų politika. Nubbo bendrinimo nuoroda neturi galiojimo pabaigos, nebent ją nustatote, nes kiekvienam atsisiuntimui ji išduoda naują trumpalaikį URL.
Ar failai pereina per Nubbo, kai kas nors atsisiunčia per bendrinamą nuorodą?
Ne: naršyklė pavienius failus atsisiunčia tiesiai iš jūsų bucket su presigned URL. Kelių failų ZIP atsisiuntimai sudaromi naršyklėje, kuri kiekvieną failą atsisiunčia tiesiai iš jūsų bucket: Nubbo niekada nemato turinio.
Šaltiniai
Kainos ir ribos paimtos iš toliau nurodytų oficialių puslapių. Teikėjai jas keičia, todėl patikrinkite prieš apsispręsdami.
- Amazon S3: viešos prieigos prie saugyklos blokavimas
- Amazon S3: objektų atsisiuntimas ir įkėlimas su presigned URL
- AWS CLI žinynas: s3 presign
- Amazon CloudFront: prieigos prie Amazon S3 šaltinio ribojimas (OAC)
- Amazon CloudFront: pasirašytų URL naudojimas
- Amazon CloudFront: pasirašyti URL ar pasirašyti slapukai