Grupy zabezpieczeń i pary kluczy
Będą kontrolować ruch przychodzący i wychodzący za pomocą grup zabezpieczeń oraz zarządzać uwierzytelnianiem SSH przy użyciu par kluczy EC2.
Grupy zabezpieczeń i pary kluczy 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.
Czym są Security Groups?
Security group to wirtualna zapora stanowa, która kontroluje ruch przychodzący do instancji EC2 i wychodzący z niej (lub z innych zasobów AWS, takich jak RDS, Lambda czy ELB). Security groups działają na poziomie instancji — każda reguła określa protokół (TCP/UDP/ICMP), zakres portów oraz źródło lub miejsce docelowe (zakres adresów IP albo inna security group). W przeciwieństwie do tradycyjnych zapór security groups są stanowe: jeśli zezwolą Państwo na ruch przychodzący, ruch będący odpowiedzią jest automatycznie dozwolony wychodząco bez jawnej reguły.
Reguły ruchu przychodzącego i wychodzącego
Security groups mają oddzielne zestawy reguł inbound i outbound. Reguły inbound kontrolują ruch docierający do instancji — domyślnie cały ruch przychodzący jest odrzucany. Reguły outbound kontrolują ruch opuszczający instancję — domyślnie cały ruch wychodzący jest dozwolony. Dodają Państwo jawne reguły Allow; security groups nie obsługują jawnych reguł Deny (do jawnego odrzucania ruchu należy używać Network ACLs). Wszystkie reguły w security group są oceniane łącznie z użyciem logicznego OR — dowolna pasująca reguła Allow zezwala na ruch.
# Add an inbound SSH rule to a security group
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.0/24
# Add an inbound HTTP rule
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0Łączenie Security Groups
Security groups obsługują odwołania do security group jako źródła lub miejsca docelowego, co jest bardziej elastyczne i bezpieczniejsze niż określanie zakresów adresów IP. Na przykład security group ALB zezwala na ruch z 0.0.0.0/0 na porcie 443. Security group instancji EC2 zezwala na ruch przychodzący na porcie 8080 wyłącznie z identyfikatora security group ALB — a nie z dowolnego adresu IP. Jeśli ALB zostanie zastąpiony lub przeskaluje się, reguła nadal będzie działać poprawnie bez zmiany adresów IP. Ten wzorzec tworzy warstwową, dynamiczną ochronę architektur wielowarstwowych.
# Allow inbound from another security group (not an IP)
aws ec2 authorize-security-group-ingress \
--group-id sg-ec2-instances \
--protocol tcp \
--port 8080 \
--source-group sg-load-balancerSecurity Groups są stanowe
Stanowość oznacza, że security group śledzi stan połączenia. Jeśli reguła inbound zezwala na ruch TCP na porcie 80 z Internetu, a klient wysyła żądanie, pakiety odpowiedzi (outbound) są automatycznie dozwolone z powrotem do klienta — nawet jeśli nie istnieje reguła outbound dla portu 80. Różni się to zasadniczo od Network ACLs, które są bezstanowe i wymagają jawnych reguł dla obu kierunków ruchu. Stanowość ułatwia konfigurowanie security groups dla typowych wzorców ruchu aplikacji.
Wiele Security Groups dla jednej instancji
Do jednej instancji EC2 można przypisać wiele security groups (domyślnie maksymalnie 5; limit można zmienić). Reguły ze wszystkich przypisanych security groups są łączone za pomocą sumy logicznej (logika OR) — jeśli dowolna security group zezwala na żądanie, żądanie zostaje dopuszczone. Oznacza to, że security groups mogą jedynie dodawać uprawnienia, a nigdy ich ograniczać — aby zaostrzyć dostęp, należy usunąć lub zmodyfikować reguły, a nie dodawać bardziej restrykcyjną security group. Należy pamiętać o tym addytywnym działaniu w pytaniach egzaminacyjnych dotyczących ograniczania dostępu.
Domyślne działanie Security Group
Każda VPC zawiera default security group. Jej domyślne reguły są następujące: inbound zezwala na cały ruch z innych instancji znajdujących się również w default security group, a outbound zezwala na cały ruch do dowolnego miejsca. Jest to celowo liberalna konfiguracja, dzięki której nowe instancje mogą domyślnie się komunikować. W środowiskach produkcyjnych należy utworzyć niestandardową security group z restrykcyjnym zestawem reguł inbound oraz usunąć powiązania instancji z default security group, aby uniknąć przypadkowego ujawnienia.
Key Pairs: jak działają
Key pairs EC2 wykorzystują kryptografię asymetryczną do uwierzytelniania SSH. AWS generuje parę kluczy (można też zaimportować własny klucz publiczny): AWS przechowuje klucz publiczny i wstrzykuje go do instancji podczas uruchamiania; użytkownik pobiera i przechowuje klucz prywatny (plik .pem) — AWS nigdy go nie przechowuje. SSH używa klucza prywatnego do potwierdzenia tożsamości użytkownika wobec serwera bez przesyłania hasła. Klucz prywatny musi mieć restrykcyjne uprawnienia (chmod 400), w przeciwnym razie SSH odmówi jego użycia.
# Create a key pair and save the private key
aws ec2 create-key-pair \
--key-name ProdKey \
--key-type rsa \
--key-format pem \
--query 'KeyMaterial' \
--output text > ProdKey.pem
chmod 400 ProdKey.pemOdzyskiwanie dostępu bez Key Pair
Jeśli utracą Państwo klucz prywatny do instancji Linux EC2, nie będzie można zalogować się przez SSH w standardowy sposób. Dostępne opcje odzyskiwania obejmują: Systems Manager Session Manager (jeśli działa agent SSM i przypisana jest rola IAM — klucz nie jest potrzebny), EC2 Instance Connect (wstrzykuje tymczasowy klucz za pośrednictwem przeglądarki lub CLI — wymaga otwartego portu SSH i uprawnień EIC) albo zatrzymanie instancji, odłączenie głównego woluminu EBS, podłączenie go do innej instancji, zmodyfikowanie pliku authorized_keys, ponowne podłączenie i uruchomienie instancji. W przypadku systemu Windows należy użyć Systems Manager do pobrania hasła.
# Connect using EC2 Instance Connect (temporary key injection)
aws ec2-instance-connect send-ssh-public-key \
--instance-id i-0abcdef1234567890 \
--instance-os-user ec2-user \
--ssh-public-key file://~/.ssh/id_rsa.pub
ssh -i ~/.ssh/id_rsa ec2-user@54.123.45.67Dobra praktyka: ograniczanie dostępu SSH
Pozostawienie SSH (portu 22) otwartego dla 0.0.0.0/0 naraża instancję na ataki brute force i credential stuffing z dowolnego miejsca w Internecie. Dobre praktyki obejmują ograniczenie SSH do konkretnego zakresu adresów IP firmowych lub użycie hosta bastionowego (jump box) w publicznej podsieci, z ściśle kontrolowaną security group, a następnie łączenie się przez SSH z bastiona z prywatnymi instancjami. Jeszcze lepszym rozwiązaniem jest użycie Systems Manager Session Manager, aby całkowicie wyeliminować ekspozycję portu SSH — nie są wtedy potrzebne żadne reguły inbound.
# Example: restrict SSH to a corporate IP range
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 198.51.100.0/24 # Your corporate CIDRLimity i przydziały Security Groups
Najważniejsze domyślne limity security groups (które można zmienić za pośrednictwem Service Quotas) to: maksymalnie 2500 security groups na VPC, 60 reguł inbound i 60 reguł outbound na security group oraz 5 security groups na interfejs sieciowy. W przypadku wskazania innej security group jako źródła każda kombinacja wskazanej security group i reguły jest liczona jako jedna reguła. Po osiągnięciu limitów reguł można je skonsolidować, wskazując identyfikatory security groups zamiast pojedynczych zakresów adresów IP, albo użyć prefix lists do zgrupowania wielu CIDR-ów w jeden łatwy do zarządzania obiekt.
Managed Prefix Lists
Managed prefix list to zestaw bloków CIDR, do którego można odwoływać się w regułach security groups lub tabelach routingu. AWS utrzymuje AWS-managed prefix lists dla usług takich jak S3 i CloudFront, dzięki czemu można zezwalać na ruch do tych usług i z nich bez samodzielnego utrzymywania zakresów adresów IP (które z czasem się zmieniają). Można także tworzyć customer-managed prefix lists w celu grupowania firmowych zakresów adresów IP — aktualizacja prefix list w jednym miejscu powoduje automatyczne zastosowanie zmiany we wszystkich odwołujących się do niej security groups.
# Allow outbound HTTPS to Amazon S3 using the AWS-managed prefix list
aws ec2 authorize-security-group-egress \
--group-id sg-12345678 \
--ip-permissions '[{"IpProtocol":"tcp","FromPort":443,"ToPort":443,"PrefixListIds":[{"PrefixListId":"pl-63a5400a"}]}]'Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji dowiedział się Pan / dowiedziała się Pani, że: security groups to stanowe wirtualne zapory, które domyślnie odrzucają ruch, łączenie security groups za pomocą identyfikatorów jest bezpieczniejsze i bardziej elastyczne niż używanie zakresów adresów IP, a key pairs zapewniają asymetryczne uwierzytelnianie SSH, natomiast Systems Manager Session Manager eliminuje potrzebę otwierania portów SSH. W następnej części omówimy opcje pamięci masowej EC2: Instance Store i EBS.
Często zadawane pytania
Czy lekcja „Grupy zabezpieczeń i pary kluczy” jest bezpłatna?
Tak — pełny tekst „Grupy zabezpieczeń i pary kluczy” 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 „Grupy zabezpieczeń i pary kluczy”?
Będą kontrolować ruch przychodzący i wychodzący za pomocą grup zabezpieczeń oraz zarządzać uwierzytelnianiem SSH przy użyciu par kluczy EC2. Ć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 „Grupy zabezpieczeń i pary kluczy”?
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
- Uruchamianie pierwszej instancji EC2
- Typy instancji i modele cenowe
- Grupy zabezpieczeń i pary kluczy
- Pamięć masowa EC2: Instance Store a EBS