Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne
Ograniczą dostęp do treści premium za pomocą podpisanych adresów URL i plików cookie oraz zablokują użytkowników z określonych krajów dzięki ograniczeniom geograficznym.
Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Ograniczanie dostępu do treści CloudFront
Domyślnie CloudFront udostępnia treści każdemu odbiorcy, który zna adres URL. W przypadku treści premium lub prywatnych — kursów wideo, płatnych plików do pobrania i zasobów dostępnych tylko dla członków — należy ograniczyć dostęp, aby mogli je pobierać wyłącznie upoważnieni użytkownicy.
CloudFront udostępnia dwa mechanizmy autoryzowanego dostępu: Signed URLs (jeden adres URL zapewnia dostęp do jednego konkretnego obiektu) oraz Signed Cookies (zestaw plików cookie zapewnia dostęp do wielu obiektów pasujących do wzorca ścieżki). Oba mechanizmy wykorzystują podpisy kryptograficzne generowane za pomocą pary kluczy RSA.
Podpisane adresy URL CloudFront
Podpisany adres URL to adres URL CloudFront zawierający podpis kryptograficzny, w którym zakodowano czas wygaśnięcia oraz opcjonalnie ograniczenie adresu IP. Adres URL jest ważny tylko do upływu określonego czasu i tylko z dozwolonego adresu IP (jeśli go określono). Po wygaśnięciu CloudFront zwraca błąd 403 Forbidden.
Podpisane adresy URL najlepiej sprawdzają się w przypadku: przyznawania pojedynczemu użytkownikowi dostępu do konkretnego pliku (np. wygenerowanego raportu PDF), ograniczonych czasowo linków do pobierania lub sytuacji, gdy klient nie może ustawiać ciasteczek (np. aplikacje mobilne albo strumieniowanie RTMP).
# Generate a signed URL using AWS CLI (requires a CloudFront key pair)
aws cloudfront sign \
--url https://d1234abcdef.cloudfront.net/premium/video.mp4 \
--key-pair-id APKA1234567890 \
--private-key file://private-key.pem \
--date-less-than 2026-06-21T00:00:00ZZaufane grupy kluczy
Do generowania podpisów CloudFront potrzebna jest para kluczy CloudFront. Nowoczesne podejście wykorzystuje zaufane grupy kluczy: należy utworzyć parę kluczy RSA, przesłać klucz publiczny do CloudFront, dodać go do grupy kluczy, a następnie powiązać tę grupę z zachowaniem pamięci podręcznej, które wymaga dostępu na podstawie podpisu.
Klucz prywatny jest bezpiecznie przechowywany (np. w Secrets Manager) na serwerze podpisującym. Gdy użytkownik zostanie uwierzytelniony, serwer używa klucza prywatnego do podpisania adresu URL lub zasad dotyczących ciasteczek. CloudFront weryfikuje podpisy za pomocą odpowiedniego klucza publicznego znajdującego się w zaufanej grupie kluczy.
Zaufane grupy kluczy
Aby generować podpisy CloudFront, potrzebują Państwo pary kluczy CloudFront. Nowoczesne podejście wykorzystuje zaufane grupy kluczy: należy utworzyć parę kluczy RSA, przesłać klucz publiczny do CloudFront, dodać go do grupy kluczy, a następnie powiązać grupę kluczy z zachowaniem pamięci podręcznej wymagającym dostępu z podpisem.
Klucz prywatny jest bezpiecznie przechowywany (np. w Secrets Manager) na serwerze podpisującym. Gdy użytkownik się uwierzytelni, serwer używa klucza prywatnego do podpisania adresu URL lub zasad pliku cookie. CloudFront weryfikuje podpisy za pomocą odpowiadającego im klucza publicznego w zaufanej grupie kluczy.
# Upload a public key to CloudFront
aws cloudfront create-public-key \
--public-key-config '{
"Name": "MySigningKey",
"EncodedKey": "-----BEGIN PUBLIC KEY-----\n...<key>...\n-----END PUBLIC KEY-----",
"CallerReference": "2026-06-20-key"
}'Zasady podpisanych adresów URL: gotowe a niestandardowe
Podpisane adresy URL mogą korzystać z jednego z dwóch typów zasad:
- Zasada gotowa: najprostsza forma — określa tylko adres URL zasobu i czas wygaśnięcia. Podpis jest niewielki i łatwy do wygenerowania.
- Zasada niestandardowa: bardziej elastyczna — określa adres URL zasobu z opcjonalnymi symbolami wieloznacznymi (
https://d123.cloudfront.net/videos/*), opcjonalnym czasem rozpoczęcia (not-before) oraz opcjonalnym ograniczeniem adresu IP. Kod JSON zasad jest kodowany w adresie URL za pomocą Base64.
Zasad gotowych należy używać w przypadku prostych linków do pojedynczych plików, a zasad niestandardowych — gdy potrzebne jest dopasowywanie zasobów za pomocą symboli wieloznacznych lub ograniczenia na podstawie adresu IP.
Ograniczenie geograficzne CloudFront
Ograniczenie geograficzne (nazywane również ograniczeniami geograficznymi) blokuje lub zezwala na udostępnianie treści przez CloudFront na podstawie kraju, w którym znajduje się osoba wyświetlająca treść. CloudFront określa kraj użytkownika na podstawie jego adresu IP, korzystając z zewnętrznej bazy danych geolokalizacyjnych.
Ograniczenie geograficzne konfiguruje się dla całej dystrybucji jako lista dozwolonych (dostęp do treści mają tylko wymienione kraje) albo lista zablokowanych (wymienione kraje są blokowane). Użytkownicy z ograniczonych krajów otrzymują odpowiedź HTTP 403. Ograniczenie geograficzne jest narzędziem o szerokim działaniu — dotyczy całej dystrybucji, a nie pojedynczych ścieżek.
# Enable geo-restriction: block two countries
aws cloudfront update-distribution \
--id EDFDVBD6EXAMPLE \
--distribution-config '{
...existing config...
"Restrictions": {
"GeoRestriction": {
"RestrictionType": "blacklist",
"Quantity": 2,
"Items": ["CN", "RU"]
}
}
}' \
--if-match ETVPDKIKX0DEROgraniczenie geograficzne a geolokalizacja Route 53
Ograniczenie geograficzne CloudFront i routing geolokalizacyjny Route 53 wykorzystują informacje geograficzne, ale służą do różnych celów:
- Ograniczenie geograficzne CloudFront: blokuje lub zezwala na udostępnianie treści z lokalizacji brzegowych na poziomie CDN — zwraca kod 403 zablokowanym krajom; jest stosowane dla całej dystrybucji
- Geolokalizacja Route 53: kieruje zapytania DNS do różnych punktów końcowych (innych serwerów lub stron) na podstawie lokalizacji geograficznej — nie blokuje dostępu, lecz kieruje użytkownika do innych treści lub infrastruktury
Ograniczenia geograficznego CloudFront należy używać do kontroli dostępu (blokowania całych krajów), a geolokalizacji Route 53 — do kierowania użytkowników do treści lub infrastruktury odpowiednich dla danego regionu.
Łączenie podpisanych adresów URL z S3 i OAC
Kompletna architektura prywatnego dostarczania treści:
- Wiadro S3 jest prywatne (brak dostępu publicznego)
- CloudFront używa OAC, dzięki czemu tylko dystrybucja może odczytywać dane z S3
- Zachowanie pamięci podręcznej dla prywatnych treści wymaga podpisanych adresów URL lub ciasteczek (z powiązaną zaufaną grupą kluczy)
- Serwer aplikacji uwierzytelnia użytkowników i wystawia podpisane adresy URL lub ciasteczka
- Użytkownicy uzyskują dostęp do treści wyłącznie za pośrednictwem podpisanych adresów URL CloudFront z ograniczonym czasem ważności
Nawet jeśli użytkownik odgadnie adres URL S3 lub udostępni go innej osobie, dostęp zostanie zablokowany. Jeśli udostępni adres URL CloudFront, wygaśnie on po skonfigurowanym czasie. Takie warstwowe podejście zapewnia wielopoziomową ochronę treści cyfrowych.
Szyfrowanie na poziomie pól
Szyfrowanie na poziomie pól to zaawansowana funkcja CloudFront, która umożliwia szyfrowanie wrażliwych pól w żądaniach HTTP POST na brzegu sieci, przed przekazaniem ich do źródła. Nawet jeśli serwer źródłowy zostanie zaatakowany, zaszyfrowane pola (np. numery kart kredytowych lub numery SSN) pozostają nieczytelne bez odpowiedniego klucza prywatnego.
CloudFront szyfruje określone pola na brzegu sieci za pomocą klucza publicznego. Tylko docelowa usługa backendowa posiadająca odpowiadający mu klucz prywatny może odszyfrować dane. Szyfrowanie na poziomie pól dodaje warstwę ochrony w ramach potoku, który jest już zabezpieczony przez TLS.
Wzorzec kontroli dostępu opartej na tokenach
W przypadku aplikacji dynamicznych, które wymagają szczegółowej kontroli dostępu wykraczającej poza blokowanie na poziomie krajów, często stosuje się dostęp oparty na tokenach z użyciem Lambda@Edge:
- Użytkownik uwierzytelnia się za pomocą Cognito lub usługi uwierzytelniania i otrzymuje JWT
- Użytkownik dołącza JWT jako parametr zapytania lub ciasteczko do żądań CloudFront
- Funkcja Viewer-Request Lambda@Edge weryfikuje podpis i deklaracje JWT
- Jeśli token jest prawidłowy, Lambda@Edge przekazuje żądanie do źródła; jeśli jest nieprawidłowy, zwraca kod 401
Zapewnia to szczegółową kontrolę dostępu dla każdego użytkownika i zasobu bezpośrednio na brzegu CloudFront, bez docierania do źródła w przypadku nieautoryzowanych żądań.
Podsumowanie przypadków użycia w praktyce
Typowe scenariusze egzaminacyjne dotyczące podpisanych adresów URL/ciasteczek i ograniczeń geograficznych:
- „Ograniczony czasowo link do pobrania zakupionego pliku” → podpisany adres URL z czasem wygaśnięcia
- „Zalogowani użytkownicy premium mają dostęp do wszystkich filmów w /premium/*” → podpisane ciasteczka z zasadą wykorzystującą symbol wieloznaczny
- „Zablokowanie dostępu użytkownikom z określonych krajów ze względu na licencję” → lista zablokowanych w ramach ograniczenia geograficznego CloudFront
- „Udostępnianie różnych treści w różnych krajach” → geolokalizacja Route 53 + wiele dystrybucji lub źródeł
- „Ochrona pól kart kredytowych nawet przed administratorami źródła” → szyfrowanie na poziomie pól
Szybkie sprawdzenie wiedzy
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji nauczyli się Państwo, że: podpisane adresy URL ograniczają dostęp do pojedynczych plików za pomocą czasu wygaśnięcia i opcjonalnego ograniczenia adresu IP, podpisane ciasteczka zapewniają dostęp do wielu plików pasujących do wzorca ścieżki w ramach jednej uwierzytelnionej sesji, a ograniczenie geograficzne blokuje lub zezwala na dostęp całym krajom na poziomie dystrybucji CloudFront. W następnej części omówimy CloudFront razem z WAF i Lambda@Edge.
Często zadawane pytania
Czy lekcja „Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne” jest bezpłatna?
Tak — pełny tekst „Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne”?
Ograniczą dostęp do treści premium za pomocą podpisanych adresów URL i plików cookie oraz zablokują użytkowników z określonych krajów dzięki ograniczeniom geograficznym. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dystrybucje CloudFront i źródła
- Zachowania pamięci podręcznej i ustawienia TTL
- Podpisane adresy URL, podpisane pliki cookie i ograniczenia geograficzne
- CloudFront z WAF i Lambda@Edge