Możesz udostępniać pliki z Amazon S3, nigdy nie upubliczniając bucketu. Utrzymuj go jako prywatny, zostaw włączone Block Public Access i zamiast tego dawaj ludziom podpisany dostęp do konkretnych obiektów: podpisane adresy URL (presigned URL) dla pojedynczego pliku, podpisane URL CloudFront, gdy przed bucketem już działa CDN, albo link udostępniający z hasłem, datą wygaśnięcia i limitem pobrań. Wszystkie trzy działają tak samo u dostawców zgodnych z S3, takich jak Cloudflare R2, DigitalOcean Spaces, Wasabi i Backblaze B2 (CloudFront jest tylko w AWS).
Opcje bezpiecznego udostępniania plików z S3 w skrócie
| Metoda | Najlepsza do | Hasło | Limit pobrań | Odebranie jednego linku | Całe foldery | Wymagany kod |
|---|---|---|---|---|---|---|
| Publiczny obiekt lub bucket | Naprawdę publiczne zasoby (strona internetowa) | Nie | Nie | Nie | Tak | Nie |
| Presigned URL | Jeden plik, jednorazowo, z CLI lub twojej aplikacji | Nie | Nie | Nie | Nie | CLI lub SDK |
| Podpisany URL CloudFront | Aplikacje, które już uwierzytelniają użytkowników | Nie | Nie | Nie | Z podpisanymi cookies | Tak |
| Link udostępniający Nubbo | Regularne udostępnianie osobom z zewnątrz | Tak | Tak | Tak | Tak, z ZIP | Nie |
Dlaczego po prostu nie upublicznić pliku
Najszybszy sposób na udostępnienie pliku z S3 to upublicznić go i wysłać URL obiektu. To też najbardziej ryzykowny sposób: wszystko, co publiczne, może pobrać każdy, kto znajdzie lub zgadnie adres, bez hasła, bez daty wygaśnięcia i bez śladu, kto to wziął. Zapomniane publiczne buckety to klasyczne źródło wycieków danych, a ujawniają zarówno nazwy plików, jak i ich zawartość.
AWS podaje, że nowe buckety, punkty dostępu i obiekty domyślnie nie pozwalają na publiczny dostęp. Do tego S3 Block Public Access ma cztery ustawienia (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy i RestrictPublicBuckets), które mają pierwszeństwo przed każdą polityką lub ACL, która mogłaby później otworzyć bucket. Można je ustawić dla bucketu, dla konta lub dla całej AWS Organization, a S3 stosuje najbardziej restrykcyjne połączenie. AWS zaleca włączenie wszystkich czterech na poziomie konta, chyba że naprawdę hostujesz publiczne treści, na przykład statyczną stronę.
Zostaw ten przełącznik włączony. Wszystko poniżej działa, gdy jest włączony.
Opcja 1: presigned URL
Presigned URL to URL obiektu z podpisem w query stringu. Pozwala na jedną operację (zwykle pobranie) na jednym obiekcie aż do wygaśnięcia, a S3 sprawdza podpis przy każdym żądaniu.
aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400
Ten URL działa przez 24 godziny. Domyślnie w CLI to jedna godzina, a maksimum to 604 800 sekund (7 dni), gdy podpisujesz kluczami użytkownika IAM. Jeśli podpisujesz tymczasowymi danymi uwierzytelniającymi, na przykład z przejętej roli, URL przestaje działać, gdy te dane wygasną.
Co zyskujesz:
- Żadnych zmian w buckecie ani jego politykach.
- Precyzyjną kontrolę: jeden obiekt, jedna metoda, jedna data wygaśnięcia.
- Działa u każdego dostawcy, który obsługuje podpisywanie SigV4.
Czego nie dostajesz:
- Hasła. Kto ma URL, może go używać dowolnie wiele razy, aż wygaśnie.
- Limitu pobrań ani odbierania dostępu do pojedynczego linku. URL możesz unieważnić wcześniej tylko przez odebranie kluczy, którymi go podpisano.
- Folderów. Podpisujesz obiekt po obiekcie, więc udostępnienie folderu z 300 plikami oznacza 300 URL.
- Prywatności nazw. URL pokazuje nazwę twojego bucketu, klucz obiektu i identyfikator twojego klucza dostępu.
Szczegóły działania, w tym przesyłanie, każdy parametr X-Amz-* i kod SDK, znajdziesz w artykule Presigned URL w S3.
Opcja 2: podpisane URL i podpisane cookies CloudFront
Jeśli już serwujesz bucket przez Amazon CloudFront, możesz wymagać podpisanych URL lub podpisanych cookies w danym cache behavior. Bucket pozostaje prywatny za origin access control (OAC), które AWS zaleca zamiast starszego origin access identity: polityka bucketu pozwala odczytywać obiekty tylko twojej dystrybucji. Rejestrujesz klucze publiczne w zaufanej grupie kluczy (trusted key group) i podpisujesz odpowiadającym im kluczem prywatnym.
- Podpisane URL sprawdzają się przy pojedynczych plikach. Z polityką niestandardową możesz też ustawić czas rozpoczęcia i zakres IP oraz użyć jednej polityki dla wielu plików dzięki symbolom wieloznacznym. Mogą działać krótko albo przez lata.
- Podpisane cookies sprawdzają się przy wielu plikach naraz, na przykład przy wszystkich segmentach filmu, bez zmiany twoich URL.
To właściwe narzędzie, gdy prowadzisz aplikację, która już uwierzytelnia użytkowników i serwuje treści na dużą skalę. Jeśli chcesz tylko przekazać kilka plików osobom spoza zespołu, oznacza to konfigurowanie dystrybucji, zarządzanie kluczami i pisanie kodu, który podpisuje każde żądanie.
Ograniczenie polityki bucketu do stałego zakresu IP to kolejna natywna opcja, ale pomaga tylko wtedy, gdy znasz sieci odbiorców, co rzadko się zdarza w przypadku osób spoza twojej organizacji.
Opcja 3: linki udostępniające w Nubbo
Nubbo łączy się z twoim bucketem i daje ci linki udostępniające z funkcjami, których brakuje presigned URL, bez pisania kodu. Pod spodem nadal korzysta z presigned URL: Nubbo najpierw sprawdza reguły linku i dopiero wtedy generuje krótko ważny URL, więc pojedyncze pliki trafiają prosto z twojego bucketu do przeglądarki odbiorcy.
Krok 1: połącz swój bucket
Zarejestruj się za darmo, potwierdź e-mail, a następnie otwórz Buckety i naciśnij Połącz bucket. Kreator zapyta o dostawcę (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 lub niestandardowy endpoint zgodny z S3), sposób połączenia (automatyczna konfiguracja z kluczem z pełnym dostępem albo klucz ograniczony do jednego bucketu), twój klucz i twój bucket. Sprawdza klucz i bucket, a na koniec testuje CORS prawdziwym przesłaniem z twojej przeglądarki. Bucket pozostaje prywatny, a twoje klucze są przechowywane w postaci zaszyfrowanej algorytmem AES-256-GCM. Plan Bezpłatny obejmuje 2 połączenia.
Krok 2: wybierz plik lub folder
Znajdź element w eksploratorze i wybierz Udostępnij. Możesz też przejść na stronę Udostępnione, nacisnąć Nowy link i tam wybrać bucket oraz plik lub folder.
Krok 3: ustaw zabezpieczenia
Wszystkie trzy opcje są opcjonalne i dostępne w każdym planie:
| Opcja | Jak działa |
|---|---|
| Hasło | Od 4 do 50 znaków. Po 10 błędnych próbach link blokuje się na 15 minut. |
| Data wygaśnięcia | Domyślnie wyłączona: link jest aktywny, dopóki plik lub folder jest w twojej pamięci. |
| Maksymalna liczba pobrań | Puste pole oznacza brak limitu. Po osiągnięciu limitu link przestaje udostępniać plik. |
Krok 4: utwórz i wyślij link
Naciśnij Utwórz link, skopiuj go i wyślij e-mailem, na czacie lub czymkolwiek, z czego korzystasz. Odbiorca otwiera przejrzystą stronę pobierania i nie potrzebuje konta. Link do folderu pozwala przeglądać folder, pobierać pojedyncze pliki lub wszystko naraz jako ZIP, który jego przeglądarka składa, pobierając każdy plik prosto z twojego bucketu.
Krok 5: wyślij hasło osobno
Wysyłanie hasła w tej samej wiadomości co link mija się z celem. Jeśli link ma hasło, Wyślij hasło e-mailem przekazuje je jako jednorazowy link do odsłonięcia: hasło wyświetla się raz, link do odsłonięcia wygasa po 24 godzinach, 3 dniach lub 7 dniach, a ty możesz dodać krótką notatkę. Dostajesz powiadomienie, gdy zostanie otwarty.
Krok 6: śledź i odbieraj dostęp
Strona Udostępnione wyświetla każdy link z jego stanem i liczbą pobrań. Możesz zmienić hasło, datę wygaśnięcia lub limit, dezaktywować link (od razu przestaje generować nowe URL do pobrania) i później ponownie go otworzyć pod tym samym adresem.
Udostępnianie konkretnym osobom zamiast linku
Link działa dla każdego, kto go ma. Gdy chcesz wpuścić tylko wskazane osoby, funkcja Udostępnij osobom w Nubbo (w planach Personal i Pro) wysyła plik lub folder na konkretne adresy e-mail z uprawnieniem do oglądania lub pobierania, opcjonalną datą wygaśnięcia i limitem pobrań, a także rejestruje każdy dostęp. Odbiorcy potrzebują konta Nubbo i znajdują element w sekcji Udostępnione mi. Personal pozwala na 10 osób na element i 50 aktywnych udostępnień; Pro na 50 i 500.
Płatne plany oferują też szyfrowane linki: przeglądarka tworzy zapieczętowaną kopię pliku, a klucz trafia wyłącznie do samego linku, więc Nubbo nie może go odczytać.
Którą opcję wybrać?
- Jeden plik, jednorazowo, a masz skonfigurowane AWS CLI: presigned URL to najszybsza droga.
- Aplikacja, która już loguje użytkowników i serwuje dużo treści: podpisane URL lub cookies CloudFront.
- Regularne udostępnianie osobom spoza zespołu, całe foldery albo cokolwiek, co wymaga hasła lub limitu: link udostępniający oszczędza czas i pomyłki.
Więcej niż pojedynczy link
Dwie powiązane funkcje obejmują pozostałe typowe przypadki. Prośby o pliki dają ci publiczny link do przesyłania, dzięki któremu inni mogą wysyłać pliki do twojego bucketu, nie widząc niczego innego, co się w nim znajduje. Galerie zamieniają folder ze zdjęciami lub filmami w stronę do przeglądania z układami, znakiem wodnym i własnym hasłem. W planie Bezpłatnym dostajesz po 3 z każdych i linki udostępniające bez limitu; Personal i Pro znoszą te limity. Uczciwa uwaga: miniatury są generowane na serwerze Nubbo i przechowywane w twoim własnym buckecie w .nubbo-thumbs/.
Najczęściej zadawane pytania
Jak udostępnić plik z S3, nie upubliczniając go?
Utrzymuj bucket jako prywatny i zamiast tego przekazuj podpisany dostęp: presigned URL do jednego obiektu (z AWS CLI lub SDK), podpisany URL lub cookie CloudFront, jeśli już serwujesz bucket przez CloudFront, albo link udostępniający z narzędzia takiego jak Nubbo, które dodaje hasło, datę wygaśnięcia i limit pobrań do presigned URL.
Czy Amazon S3 jest bezpieczny do udostępniania plików?
Tak, o ile bucket pozostaje prywatny. Nowe buckety domyślnie nie pozwalają na publiczny dostęp, a S3 Block Public Access uniemożliwia późniejsze ich otwarcie. Ryzyko wynika z upubliczniania obiektów lub z wycieku podpisanych linków, które działają dla każdego, kto je ma, aż do wygaśnięcia.
Czy nowe buckety S3 są domyślnie prywatne?
Tak. AWS podaje, że nowe buckety, punkty dostępu i obiekty domyślnie nie pozwalają na publiczny dostęp, a cztery ustawienia Block Public Access mają pierwszeństwo przed każdą polityką lub ACL, która mogłaby je później otworzyć.
Czy odbiorca potrzebuje konta AWS lub Nubbo?
Nie. Presigned URL, podpisany URL CloudFront i link udostępniający Nubbo działają w każdej przeglądarce bez konta. Tylko Udostępnij osobom, które wysyła element do wskazanych osób, wymaga, aby miały konto Nubbo.
Jak długo może działać udostępniony link do S3?
Presigned URL działa najwyżej 7 dni, gdy jest podpisany kluczami użytkownika IAM, i krócej przy tymczasowych danych uwierzytelniających. Podpisane URL CloudFront działają tak długo, jak określa twoja polityka. Link udostępniający Nubbo nie wygasa, chyba że ustawisz datę, bo przy każdym pobraniu generuje nowy, krótko ważny URL.
Czy pliki przechodzą przez Nubbo, gdy ktoś pobiera udostępniony link?
Nie: przeglądarka pobiera pojedyncze pliki prosto z twojego bucketu za pomocą presigned URL. Pobrania ZIP z wieloma plikami są składane w przeglądarce, która pobiera każdy plik prosto z twojego bucketu: Nubbo nigdy nie widzi zawartości.
Źródła
Ceny i limity pochodzą z poniższych oficjalnych stron. Dostawcy je zmieniają, więc sprawdź je, zanim się zdecydujesz.
- Amazon S3: blokowanie publicznego dostępu do pamięci
- Amazon S3: pobieranie i przesyłanie obiektów za pomocą presigned URL
- Dokumentacja AWS CLI: s3 presign
- Amazon CloudFront: ograniczanie dostępu do źródła Amazon S3 (OAC)
- Amazon CloudFront: korzystanie z podpisanych URL
- Amazon CloudFront: wybór między podpisanymi URL a podpisanymi cookies