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

Tính năng
Security Group
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:

Type
Protocol
Port Range
Source
Description

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:

Type
Protocol
Port Range
Destination
Description

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