Security Groups - wirtualny firewall Twojej instancji
Masz uruchomioną instancję EC2. Ale zanim ktokolwiek się z nią połączy, musisz otworzyć odpowiednie „drzwi". W AWS te drzwi kontrolują Security Groups (SG). To jeden z najważniejszych mechanizmów bezpieczeństwa w EC2 i jedno z najczęściej pytanych zagadnień na egzaminie.
Jak działają Security Groups?
Security Group to zestaw reguł, które kontrolują ruch sieciowy do instancji (inbound) i z instancji (outbound):
- Kontrolują kto może się połączyć z instancją
- Domyślnie: WSZYSTKO zablokowane
- Musisz jawnie zezwolić na ruch
- Przykład: „Pozwól na SSH (port 22) z mojego IP"
- Kontrolują dokąd instancja może wysyłać ruch
- Domyślnie: WSZYSTKO dozwolone
- Rzadko ograniczane, ale można
- Przykład: „Pozwól na HTTPS (port 443) do internetu"
Security Groups są STATEFUL
To kluczowa cecha i ulubione pytanie egzaminacyjne. Stateful oznacza, że jeśli reguła inbound pozwala na ruch przychodzący, odpowiedź automatycznie może wrócić do nadawcy - bez potrzeby osobnej reguły outbound.
Przykład: otwierasz port 80 (HTTP) w inbound. Klient wysyła request do Twojego serwera. Odpowiedź z serwera wraca automatycznie do klienta, mimo że nie masz reguły outbound na port 80.
Anatomia reguły Security Group
Każda reguła składa się z:
- Typ - protokół (SSH, HTTP, HTTPS, Custom TCP/UDP)
- Protokół - TCP, UDP, ICMP
- Port range - np. 22, 80, 443, 3000-4000
- Source/Destination - skąd/dokąd dozwolony ruch
Source może być:
- Konkretne IP:
203.0.113.10/32(jedno IP) - Zakres IP:
10.0.0.0/16(cała sieć) - 0.0.0.0/0: cały internet (ostrożnie!)
- Inny Security Group: np. „pozwól na ruch z SG web-serwerów"
Dobre praktyki Security Groups
Key Pairs - klucze do SSH
Aby połączyć się z instancją Linux przez SSH, potrzebujesz Key Pair. AWS generuje parę kluczy:
- Public key - zapisany na instancji EC2
- Private key - pobierasz go RAZ przy tworzeniu. AWS go nie przechowuje!
Elastic IP - stałe publiczne IP
Domyślnie instancja EC2 dostaje losowe publiczne IP, które zmienia się po każdym stop/start. Jeśli potrzebujesz stałego adresu (np. dla DNS), możesz przypisać Elastic IP:
- Statyczny publiczny adres IPv4
- Możesz przenosić między instancjami
- Darmowy gdy przypisany do running instancji
- Kosztuje gdy NIE jest przypisany (AWS nie lubi marnowania IPv4!)
Typowa aplikacja ma trzy warstwy, każda z osobnym Security Group:
- SG-Web: inbound port 80/443 z 0.0.0.0/0 (internet)
- SG-App: inbound port 8080 z SG-Web (tylko z web serwerów)
- SG-DB: inbound port 3306 z SG-App (tylko z app serwerów)
Baza danych nie jest dostępna bezpośrednio z internetu. Nawet gdyby ktoś zhackował web serwer, nie dostanie się od razu do bazy danych, bo SG-DB pozwala tylko na ruch z SG-App.
AWS ma dwa poziomy firewalla:
- Security Group - na poziomie instancji (ENI), stateful, tylko reguły ALLOW
- Network ACL (NACL) - na poziomie subnetu, stateless, reguły ALLOW i DENY
Wyobraź sobie osiedle mieszkaniowe. NACL to brama wjazdowa na osiedle (kontroluje kto wjeżdża/wyjeżdża). Security Group to drzwi do konkretnego mieszkania. Oba działają niezależnie i ruch musi przejść przez oba.
Na egzaminie kluczowe różnice: SG = stateful + tylko Allow. NACL = stateless + Allow i Deny.
- Security Group = wirtualny firewall na poziomie instancji
- Inbound domyślnie zablokowane, outbound domyślnie otwarte
- SG są STATEFUL (ruch powrotny automatyczny)
- NACL są STATELESS (oba kierunki trzeba jawnie zezwolić)
- Można referencjonować inny SG jako source (zamiast IP)
- Key Pair = klucze SSH. Private key pobierasz RAZ!
- Elastic IP = stały publiczny adres. Kosztuje gdy nieprzypisany
Security Group jest stateful. Co to oznacza w praktyce?
Jakie reguły domyślnie ma NOWY Security Group?
Elastic IP jest przypisany do instancji, ale instancja jest Stopped. Czy płacisz za Elastic IP?