Hai lớp kiểm soát khác nhau
Security Group và Network ACL đều lọc network traffic nhưng không cùng abstraction. SG gắn với resource/ENI, stateful và chỉ có allow. NACL gắn với subnet, stateless và có allow/deny theo thứ tự rule.
Cách đọc incident
Khi ALB gọi app, hãy kiểm tra inbound SG của app, outbound SG của ALB, NACL của subnet và route. Với NACL, request và response là hai chiều độc lập; ephemeral port bị deny có thể tạo timeout dù request rule đúng.
Bài tập
Vẽ flow ALB → app → database, ghi rule tối thiểu ở từng lớp và viết một failure mode cho SG, NACL và route table. Mục tiêu là biết control nào đang chặn, không phải mở mọi port cho đến khi chạy được.
Bài giảng chuyên sâu
Đọc một timeout bằng hai chiều traffic
Giả sử ALB gọi app ở TCP 443. Security Group của app cho inbound từ SG của ALB nên request có thể đến, nhưng NACL của subnet app stateless: nó phải cho phép request và response theo đúng ephemeral port. SG stateful nên return traffic của connection hợp lệ được tự động cho phép; NACL đánh giá rule theo thứ tự và có explicit deny.
Quy trình chẩn đoán: (1) xác nhận route và subnet, (2) kiểm tra SG nguồn/đích, (3) kiểm tra NACL cả hai chiều, (4) kiểm tra target health/log. Không mở toàn bộ port để thử. Rule đúng phải giới hạn source CIDR/SG, port và hướng; nếu cần deny theo subnet thì dùng NACL như guardrail, không biến nó thành policy duy nhất.
Failure drill: đổi giả định từ ALB → app sang Internet → app. Nếu app cần nhận trực tiếp, boundary đã thay đổi và câu trả lời có thể sai hoàn toàn. Ghi lại control gần resource và control ở subnet để tránh nhầm abstraction.