Cấu trúc quy tắc NSG (Network Security Group) trong Azure
NSG là tường lửa phân tán (Distributed Firewall) tầng 3/4 của Azure, chứa danh sách quy tắc (Rules) được xử lý theo thứ tự Priority (Độ ưu tiên) từ thấp đến cao (số nhỏ hơn = ưu tiên cao hơn). Mỗi quy tắc định nghĩa: Source, Destination, Port, Protocol, Action (Allow/Deny), Direction (Inbound/Outbound).
Quy tắc mặc định (Default Rules) – Tự động tạo khi khởi tạo NSG
Azure tự động chèn các quy tắc mặc định với Priority rất cao (số lớn, ưu tiên thấp nhất) để đảm bảo hành vi cơ bản. Không thể xóa, chỉ có thể ghi đè (Override) bằng quy tắc Priority thấp hơn (số nhỏ hơn).
Default Inbound Rules (Mặc định vào)
| Tên quy tắc | Priority | Source | Destination | Service/Port | Action | Mục đích |
|---|---|---|---|---|---|---|
| AllowVNetInBound | 65000 | VirtualNetwork | VirtualNetwork | Any | Allow | Cho phép traffic giữa các tài nguyên trong cùng VNet (kể cả peered VNet). |
| AllowAzureLoadBalancerInBound | 65001 | AzureLoadBalancer | Any | Any | Allow | Cho phép Health Probe của Azure Load Balancer (để duy trì backend pool). |
| DenyAllInBound | 65500 | Any | Any | Any | Deny | Quy tắc từ chối TẤT CẢ traffic inbound còn lại (Implicit Deny). Đây là quy tắc mặc định CUỐI CÙNG (Final Default Rule) cho Inbound. |
Default Outbound Rules (Mặc định ra)
| Tên quy tắc | Priority | Source | Destination | Service/Port | Action | Mục đích |
|---|---|---|---|---|---|---|
| AllowVNetOutBound | 65000 | VirtualNetwork | VirtualNetwork | Any | Allow | Cho phép traffic ra giữa các tài nguyên trong VNet. |
| AllowInternetOutBound | 65001 | Any | Internet | Any | Allow | Cho phép traffic ra Internet (Mặc định cho phép ra ngoài). |
| DenyAllOutBound | 65500 | Any | Any | Any | Deny | Quy tắc từ chối TẤT CẢ traffic outbound còn lại. Đây là quy tắc mặc định CUỐI CÙNG cho Outbound. |
⚠️ Lưu ý quan trọng về "Final Default Rule"
- Không có một quy tắc "Final Rule" duy nhất – có 2 quy tắc mặc định cuối cùng riêng biệt: DenyAllInBound (Priority 65500) và DenyAllOutBound (Priority 65500).
- Chúng đại diện cho nguyên tắc Implicit Deny (Từ chối ngầm định): Mọi traffic không khớp quy tắc Allow nào ở Priority cao hơn sẽ bị chặn.
- Bạn KHÔNG THỂ sửa/xóa các quy tắc mặc định này. Chỉ có thể tạo quy tắc mới Priority < 65000 để ghi đè (Override).
- AllowInternetOutBound (65001) cho phép ra Internet mặc định. Nếu muốn chặn ra Internet, phải tạo quy tắc Deny Priority < 65001 (ví dụ 4000) Destination: Internet.
Best Practice cấu hình NSG
- Explicit Allow: Chỉ tạo quy tắc Allow cho traffic cần thiết (Principle of Least Privilege).
- Service Tags: Dùng
VirtualNetwork,AzureLoadBalancer,Internet,Storage,Sql,ApiManagement... thay vì CIDR cứng. - Application Security Groups (ASG): Gom VM theo ứng dụng (Web, App, DB) → Rule nguồn/đích là ASG → Dễ quản trị, scale.
- Priority Planning: Dành khoảng Priority (100-4099 cho Custom, 4100-6499 cho Management). Tránh trùng lặp.
- Flow Logs + NSG Diagnostics: Bật NSG Flow Logs → Log Analytics / Storage → Phân tích traffic, tuning rule.
- Test trước khi Apply Production: Dùng IP Flow Verify (Network Watcher) để simulate traffic match rule nào.
NSG vs Azure Firewall
| Đặc điểm | NSG | Azure Firewall |
|---|---|---|
| Layer | L3/L4 (IP, Port, Protocol) | L3/L4/L7 (App-ID, FQDN, TLS Inspect, IDPS) |
| Scope | Subnet / NIC (Distributed) | Centralized (Hub VNet), Hub-Spoke |
| Stateful | Có | Có (Full L7 State) |
| Threat Intelligence | Không (chỉ custom rule) | Có (Microsoft TI, Custom) |
| SNAT/DNAT | Không | Có |
| Cost | Miễn phí (chỉ trả VM/NIC) | Theo giờ + Data processed |
Thường dùng KẾT HỢP: NSG tại Subnet/NIC (Micro-segmentation) + Azure Firewall tại Hub (Perimeter, Egress control, Threat Intel).