AWS So sánh Security Group và Network ACL
Có bài viết học luyện thi AWS mới nhất tại https://cloudemind.com/security-group-vs-nacl/ - Cloudemind.com
AWS So sánh Security Group và Network ACL
Security Group (SG) và Network Access Control List (ACL) (đôi lúc Network ACL được viết tắt NACL) là hai khái niệm rất quan trọng trong thiết kế xây dựng một giải pháp trên AWS Cloud. Cả Security Group và NACL đều giúp gia cố và bảo mật cho hệ thống mạng riêng ảo (VPC – Virtual Private Cloud) trên AWS nhưng scope của mỗi bạn này là khác nhau, hoạt động ở các lớp (layer) khác nhau. Hãy cùng tìm hiểu để hiểu rõ hơn nhé.
Operation Scope – Phạm vi hoạt động
Điểm chung của SG và NACL hoạt động như một lớp tường lửa (firewall) bảo vệ tài nguyên của bạn thông qua việc control inbound và outbound traffic. SG bảo vệ các Instances còn NACL bảo vệ Subnet (có thể bao gồm nhiều tài nguyên và Instances). Như thế scope của NACL hoạt động rộng hơn, bao trùm hơn so với SG.
Nhắc thêm một chút khái niệm thông thường khi triển khai một workload trên AWS bạn sẽ khởi tạo một VPC (Virtual Private Cloud), Scope của VPC này sẽ trải dài trên Region. Một Region sẽ nằm trong phạm vi của một quốc gia nào đó, giả dụ Singapore. Một số quốc gia có thể có nhiều Region, ví dụ như Mỹ (N. Virginia, Ohio, Oregon…). Trong mỗi Region có thể có nhiều Vùng Sẵn Sàng gọi là Availability Zone (AZ). VPC giống như tạo một mạng riêng (isolated network) để bảo vệ workload của bạn. Subnet là concept nằm trong của một VPC, VPC có thể trải dài trên nhiều AZ nhưng thuộc một Region, còn Subnet sẽ trải dài trên một AZ (không cross AZ).
Về Subnet có phân biệt Public subnet và Private subnet. Trong scope bài này Kevin chỉ nhắc lại kiến thức cơ bản về Networking trên AWS.
Như thế SG và NACl giống như một bộ trong phòng, ngoài chống. SG bảo vệ lớp trong ở mỗi instance, NACL bảo vệ lớp ngoài ở mức độ Subnet. Khi một flow truy xuất cần phải vượt qua NACL trước rồi mới đến Instance, rồi từ Instance trả về cho subnet thông qua NACL Outbound Rules…
SG và NACL hiểu đơn giản hơn như là 02 loại cửa, cửa chính NACL cho phép vào toàn bộ ngôi nhà, cửa từng phòng SG cho phép truy xuất phòng bên trong ngôi nhà. Bạn đôi khi được vào cửa chính (NACL) nhưng chưa chắc được cho phép vào phòng ngủ con gái người ta (SG). Để được vào phòng ngủ (Instance hay tài nguyên) bạn cần được cho phép vào cả hai cửa (NACL, SG).
Hai nữa là rất quan trọng,
Với SG bạn chỉ có Allow Rule, không thể tạo Deny Rule.
Với NACL bạn có thể tạo cả Allow và Deny Rules. Đây chính là điểm khác biệt cơ bản nhất của SG và NACL.
SG có tính chất Stateful, còn NACL có tính chất Stateless.
Stateful (dành cho SG): Khi bạn đặc tả cho phép chiều inbound từ nguồn A, đồng nghĩa chiều outbound cũng cho phép trả về nguồn A.
Stateless (dành cho NACL): Khi bạn đặc tả cho phép chiều Inbound từ nguồn A, việc phản hồi cũng cần đặc tả rõ ở chiều outbound (explicity). Nếu không thì dữ liệu không thể gởi về nguồn A, mặc dù bạn đã cho phép ở inbound.
4. When create a new SG, NACL
Default SG: ALLOW ALL Inbound & Outbound.
Custom SG: No Inbound rule, Allow all outbound rule.
Default SG là SG được tạo ra mặc định khi bạn tạo 1 VPC. Với mỗi Region bạn sẽ có một Default VPC được tạo sẵn Default SG. Khi bạn khởi tạo instance mà không chọn SG thì AWS sẽ dùng Default SG cho instance của bạn.
Với các Default SG cho phép Inbound và Outbound thoải mái, với Custom SG thì cho phép outbound thoải mái, nhưng inbound từ host khác mặc định không có.
Default NACL: ALLOW ALL Inbound & Outbound.
Custom NACL: Allow All Outbound, DENY All Inbound.
Riêng với NACl có một tính chất đặc biệt là khi evaluate rules sẽ quét từ nhỏ đến lớn (mỗi rule được định danh bởi 1 số, AWS recommend bạn mỗi lần add 1 rule nên nhảy khoảng cách 10 hoặc 100 để sau này nhỡ có chèn rule thì còn trống). Khi evaluate từ nhỏ đến lớn gặp rule nào mà match thì sẽ apply rule đó ngay mà không quan tâm các rule sau thế nào. Rule cuối cùng của NACl là Deny All bạn không thể chỉnh sửa.
Ví dụ: Nếu Rule 10 của bạn là allow SSH, còn Rule 100 bạn deny SSH trong NACL thì kết quả là Allow SSH do khi evaluate hệ thống sẽ gặp Rule Allow trước và cho phép, không quan tâm (regardless) các rules còn lại thế nào. Đây là một kiến thức quan trọng khi các bạn sắp xếp rule hiệu quả ^^
5. Một số giới hạn của SG và NACL
Maximum VPC per Region: 05 (Included default VPC).
Rules per NACL: 20 separated between inbound and outbound rules, IPv4 and IPv6. Can be increased to 40 but impact performance. Included default deny rule.
NACL Rule Number Max: 32767 for IPv4, 32768 for IPv6.
Inbound or Outbound Rules per SG: 60
SG per Network Interface: 5 (max: 16)
Total rule SG per NI: 1000
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html
https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html
Xem thêm: https://cloudemind.com/security-group-vs-nacl/