SG là stateful instance-level firewall; NACL là stateless subnet-level filter.
Security Group (SG) hoạt động ở cấp độ instance (ENI level), là stateful — khi cho phép inbound traffic, outbound response tự động được allow không cần rule riêng; chỉ có allow rules, không có deny rules; áp dụng cho EC2, RDS, Lambda (VPC mode), v.v.
Network ACL (NACL) hoạt động ở cấp độ subnet, là stateless — phải define cả inbound và outbound rules riêng biệt; có cả allow và deny rules; rule được evaluate theo thứ tự số (100, 200...), rule đầu tiên match sẽ áp dụng. Vì stateless, NACL phức tạp hơn để configure đúng — cần cho phép ephemeral ports (1024-65535) cho outbound responses.
Thực tế: Security Group là defense chính, được dùng cho mọi resource; NACL là defense thứ hai ở subnet level, dùng khi cần block toàn bộ subnet hoặc block IP/CIDR range cụ thể (ví dụ chặn IP tấn công DDoS nhanh). Best practice: principle of least privilege cho SG — chỉ mở port cần thiết, chỉ allow source cụ thể (không dùng 0.0.0.0/0 trừ khi cần public access).