Security Group
🔐 Security Group là gì?
Security Group là một tường lửa ảo (virtual firewall) hoạt động ở cấp độ instance (EC2, RDS, v.v.) trong VPC.
Nó kiểm soát:
Inbound rules: Luồng vào instance (ai được phép truy cập)
Outbound rules: Luồng ra từ instance (instance được phép đi đâu)
💡 SG hoạt động theo nguyên tắc “cho phép” (allow-only), không có deny rule.
🔹 So sánh SG với Network ACL
Cấp độ áp dụng
Instance (ENI - Network Interface)
Subnet
Loại rule
Chỉ allow
Allow & Deny
State
Stateful (biết chiều về)
Stateless (phải tạo rule 2 chiều)
Dễ dùng
Rất dễ quản lý
Phức tạp hơn
🛡️ Cách hoạt động của Security Group
Khi có một request đến EC2, SG sẽ kiểm tra Inbound Rule
Khi EC2 gửi request ra ngoài, SG sẽ kiểm tra Outbound Rule
Nếu Inbound cho phép, thì response về tự động được cho phép (vì SG stateful)
🔧 Ví dụ cụ thể
Bạn có 1 web server trên EC2, muốn:
Cho phép HTTP (port 80) từ mọi nơi
Cho phép SSH (port 22) từ địa chỉ IP cá nhân bạn
Cho phép outbound đi mọi nơi (ví dụ tải package, kết nối DB, v.v.)
Security Group sẽ như sau:
🔽 Inbound Rules:
HTTP
TCP
80
0.0.0.0/0
Cho phép truy cập web
SSH
TCP
22
203.0.113.5/32
IP của bạn (giả định)
🔼 Outbound Rules:
All traffic
All
All
0.0.0.0/0
Cho phép ra ngoài
📌 Một số best practices
Không để SSH 0.0.0.0/0 nếu không cần thiết (rất dễ bị tấn công brute-force)
Dùng Security Group riêng cho từng layer: Web, App, DB
Dùng SG chaining: SG này cho phép truy cập từ SG khác (rất hay trong microservices)
🔄 SG có thể dùng lại nhiều lần
Ví dụ: bạn có 10 EC2 đều là web server → chỉ cần tạo 1 SG cho web, rồi gán vào tất cả.
🧠 SG nâng cao: Refer SG to SG
Giả sử:
Web SG → gán vào EC2 frontend
DB SG → gán vào RDS hoặc EC2 backend
Bạn có thể set rule:
DB SG: Inbound: TCP 3306 from Web SG → Cho phép mọi instance trong Web SG kết nối đến DB qua MySQL port.
Last updated