AWS Security Group: “Người Gác Cổng” Tận Tụy Ở Cấp Độ Instance
Trong lộ trình chinh phục chứng chỉ AWS Certified Solutions Architect Associate (SAA), Security Group (SG) là một trong những khái niệm quan trọng nhất. Nếu coi VPC là một tòa nhà, Subnet là các tầng, thì Security Group chính là lớp bảo vệ ngay tại cửa từng căn hộ (EC2 Instance).
Bài viết này sẽ đi sâu vào cơ chế hoạt động, các đặc điểm “sống còn” và lý do tại sao tính năng “SG Reference” lại là một cuộc cách mạng trong quản lý hạ tầng đám mây.
1. Security Group là gì?
Về cơ bản, Security Group là một tường lửa ảo (virtual firewall) hoạt động ở cấp độ Instance. Nó đóng vai trò kiểm soát lưu lượng truy cập mạng (Inbound và Outbound) cho các tài nguyên AWS, phổ biến nhất là các máy chủ EC2.
Nguyên lý hoạt động cốt lõi:
- Lọc theo quy tắc (Rule-based): Bạn định nghĩa các cổng (Port), giao thức (Protocol) và nguồn (Source/Destination) được phép.
- Cơ chế Whitelisting: SG chỉ cho phép bạn tạo rule ALLOW. Mặc định, mọi lưu lượng Inbound đều bị chặn (Deny All) và mọi lưu lượng Outbound đều được phép (Allow All).
- Bảo vệ hai đầu: Ngăn chặn truy cập trái phép từ bên ngoài (Inbound) và hạn chế rò rỉ dữ liệu từ bên trong (Outbound).
2. 5 Đặc điểm “Vàng” của Security Group
Để vượt qua bài thi SAA và vận hành tốt thực tế, bạn cần nằm lòng các đặc điểm sau:
- Hoạt động ở Instance Level: SG được gắn trực tiếp vào card mạng (ENI) của instance, không phải ở cấp độ Subnet. Điều này tạo ra sự linh hoạt tối đa cho từng máy chủ riêng lẻ.
- Tính năng Stateful (Trạng thái): Đây là đặc điểm quan trọng nhất. Nếu bạn cho phép một request đi vào (Inbound), hệ thống sẽ tự động mở đường cho phản hồi (Response) đi ra mà không cần quan tâm đến rule Outbound là gì, và ngược lại.
- Chỉ có Allow, không có Deny: Bạn không thể viết rule để “cấm một IP cụ thể”. Bạn chỉ có thể “cho phép những gì tin cậy”, còn lại mặc định bị chặn.
- Hiệu lực tức thì: Mọi thay đổi về Rule sẽ có tác dụng ngay lập tức mà không yêu cầu reboot máy chủ.
- Quan hệ Many-to-Many: Một SG có thể gán cho nhiều Instance, và một Instance có thể sở hữu tối đa 5 SG. Lúc này, các rule sẽ được gộp lại (aggregated) để tính toán quyền truy cập.
3. Phân biệt SG và Network ACL (NACL)
Rất nhiều người nhầm lẫn giữa hai khái niệm này. Hãy nhớ bảng so sánh nhanh dưới đây:
| Đặc điểm | Security Group (SG) | Network ACL (NACL) |
|---|---|---|
| Cấp độ | Instance Level | Subnet Level |
| Trạng thái | Stateful (Tự mở đường về) | Stateless (Phải mở cả 2 chiều) |
| Quy tắc | Chỉ cho phép (Allow) | Cho phép và Chặn (Allow/Deny) |
| Thứ tự ưu tiên | Tất cả rule được gộp lại | Kiểm tra theo số thứ tự (từ thấp đến cao) |
[Image comparing Security Group at instance level vs Network ACL at subnet level]
4. Nghệ thuật Troubleshooting: Timeout hay Connection Refused?
SG hoạt động như một lớp Wrapper (bao bọc) lấy Instance. Điều này dẫn đến hai kịch bản lỗi kinh điển mà bạn cần phân biệt:
- Request bị Timeout: Nếu bạn truy cập ứng dụng và trình duyệt quay vòng vòng rồi báo Timeout, khả năng cao là do Security Group. Traffic đã bị chặn đứng từ bên ngoài, EC2 thậm chí không hề biết có request đó tồn tại.
- Connection Refused: Nếu bạn nhận được thông báo lỗi ngay lập tức, điều đó có nghĩa là Security Group đã hoạt động tốt (đã mở cổng). Traffic đã vào được đến bên trong EC2, nhưng ứng dụng (như Nginx, Apache, MySQL) đang bị tắt, bị lỗi hoặc không lắng nghe trên cổng đó.
5. Security Group Reference: “Vũ khí” cho Auto Scaling
Thay vì lọc lưu lượng dựa trên địa chỉ IP (thứ vốn rất dễ thay đổi trong Cloud), AWS cho phép bạn lọc dựa trên Identity (định danh) của một Security Group khác.
Tại sao nó lại “Awesome”?
Hãy tưởng tượng hệ thống của bạn có hàng chục Web Server nằm trong một nhóm Auto Scaling. Các IP này sẽ thay đổi liên tục khi máy chủ mới mọc ra hoặc bị xóa đi.
- Giải pháp cũ: Phải cập nhật IP của tất cả Web Server vào Database Firewall mỗi khi có thay đổi. (Ác mộng!)
- Giải pháp với SG Reference: Bạn chỉ cần cấu hình Database SG: “Cho phép mọi traffic từ bất kỳ máy nào mang trên mình tấm thẻ bài SG-Web”.
Ví dụ thực tế:
- Instance A (Database) gắn SG-DB.
- Bạn cấu hình Inbound cho SG-DB: cho phép Port 3306 với Source là SG-Web-ID.
- Bất kỳ máy nào (Instance B, C, D…) được gắn SG-Web sẽ nghiễm nhiên được kết nối tới Database mà không cần quan tâm IP là gì.
- Self-reference: Nếu bạn để Source của một SG là chính nó, các máy trong cùng nhóm đó có thể tự do giao tiếp nội bộ (thường dùng cho các cụm Cluster như Kafka, ElasticSearch).
Kết luận
Security Group không chỉ là một công cụ bảo mật đơn thuần, nó là tư duy quản lý theo vai trò (Role-based access) trên hạ tầng mạng. Hiểu rõ SG sẽ giúp bạn thiết kế những hệ thống vừa bảo mật cao, vừa có khả năng mở rộng (Scalability) mạnh mẽ.