Bảo mật AWS: Bảo mật Mạng (AWS Security: Network Security)
#exam-tip
Tổng quan: Bảo mật mạng dành cho các workloads ML trên AWS, bao phủ các khái niệm cốt lõi về VPC, security groups, NACLs, VPC endpoints, VPC peering, PrivateLink, và cấu hình SageMaker VPC. Đây là những kiến thức bắt buộc phải nắm để có thể triển khai các training jobs và inference endpoints một cách an toàn và hoàn toàn cách ly.
Mục lục
- Bảo mật AWS: Bảo mật Mạng (AWS Security: Network Security)
- 1. Bảo mật Mạng (Network Security)
#important- 1.1 VPC (Virtual Private Cloud)
#exam-tip - 1.2 NACL (Network Access Control Lists)
#exam-tip - 1.3 Nhóm Bảo mật (Security Groups)
#exam-tip - 1.4 VPC Flow Logs
#exam-tip - 1.5 VPC Endpoints
#important#exam-tip - 1.6 Kết nối Ngang hàng VPC (VPC Peering)
#exam-tip - 1.7 AWS PrivateLink
#exam-tip - 1.8 VPN & Direct Connect
#exam-tip - 1.9 Cấu hình SageMaker VPC (SageMaker VPC Configuration)
#important#exam-tip
- 1.1 VPC (Virtual Private Cloud)
- Related Topics
- 1. Bảo mật Mạng (Network Security)
1. Bảo mật Mạng (Network Security) #important
1.1 VPC (Virtual Private Cloud) #exam-tip
Mục đích: Tạo ra một mạng riêng biệt, bị cô lập hoàn toàn trên đám mây AWS (giống như bạn bê nguyên cái trung tâm dữ liệu của công ty lên mây vậy).
Các Thành phần Nòng cốt:
1. VPC
- Là một mạng riêng (Private network) đi kèm với một dải địa chỉ IP (CIDR block, ví dụ: 10.0.0.0/16).
- Tính cô lập (Isolation) - Mặc định là không một ai từ internet có thể chọc vào các tài nguyên bên trong.
- Default VPC (VPC mặc định) - AWS tự động đẻ sẵn cho bạn một cái (cái này thì thông sẵn ra internet).
2. Mạng con (Subnets)
Phân loại:
| Loại Subnet | Kết nối Internet | Luồng đi (Route) | Phù hợp cho |
|---|---|---|---|
| Public (Công khai) | ✅ Có (qua IGW) | Trỏ thẳng ra Internet Gateway | Web servers, bastion hosts |
| Private (Kín đáo) | ❌ Không (hoặc qua NAT) | Trỏ ra NAT Gateway (chỉ cho phép luồng đi ra ngoài) | Databases, training jobs, endpoints |
Thực tiễn Tốt nhất cho SageMaker: #exam-tip
- Training jobs: Nhốt vào Private subnet (cấm tiệt internet trực tiếp).
- Endpoints: Nhốt vào Private subnet.
- Studio: Nhốt vào Private subnet kết hợp với VPC endpoints.
3. Cổng Internet (Internet Gateway - IGW)
- Cấp quyền truy cập internet cho các public subnets.
- Chỉ có duy nhất một cái cho mỗi VPC.
- Hai chiều (Bidirectional) - Cho phép dữ liệu đi ra và đi vào thoải mái.
4. Cổng NAT (NAT Gateway) #exam-tip
Mục đích: Cho phép các tài nguyên nằm trong private subnets được phép chui ra ngoài internet (outbound only), nhưng cấm cửa không cho ai từ internet chui ngược vào trong (no inbound).
Use Cases:
- Để tải các packages (pip, yum) về máy lúc đang chạy training.
- Để gọi ra các public APIs bên ngoài.
- Để kéo các Docker images từ internet về.
Kịch bản Bài thi: #exam-tip
- “SageMaker training job đang kẹt trong private subnet nhưng lại cần tải packages” → Đập ngay NAT Gateway.
- “Chạy training job bị văng lỗi báo ‘Could not resolve host’“ → Gắn thêm NAT Gateway hoặc cấu hình VPC Endpoints vào.
So kèo NAT Gateway vs NAT Instance:
| Tiêu chí | NAT Gateway | NAT Instance |
|---|---|---|
| Quản lý | AWS lo trọn gói từ A-Z | Tự mình phải nai lưng ra quản lý cái máy EC2 này |
| Tính sẵn sàng | Cực cao (sống dai ở cấp độ AZ) | Điểm đen chết chóc (Single point of failure) |
| Băng thông | Lên tới 45 Gbps | Hên xui tùy thuộc vào con máy EC2 xịn hay dỏm |
| Tiền | Kha khá ($$) | Rẻ ($) nhưng tốn mồ hôi công sức vận hành |
| Bài thi | Lựa chọn luôn luôn Ưu tiên | Đồ cổ lỗ sĩ (Legacy option) |
1.2 NACL (Network Access Control Lists) #exam-tip
Mục đích: Làm cái tường lửa chắn ngay cửa ngõ của cấp độ subnet (phi trạng thái - stateless).
Đặc điểm:
- Phi trạng thái (Stateless) - Phải tự tay viết cả luật cho luồng đi VÀO (inbound) lẫn luồng đi RA (outbound) một cách riêng biệt.
- Số thứ tự luật (Rule numbers) - Đọc luật từ trên xuống dưới (số nhỏ đọc trước).
- Default NACL (Mặc định) - Thả cửa cho mọi luồng giao thông (vào ra thoải mái).
- Custom NACL (Tự chế) - Mặc định cấm cửa tất cả (Deny all).
Ví dụ về Luật NACL:
Luật số | Hướng đi | Giao thức | Cổng | Nguồn/Đích | Cho phép/Cấm
100 | Inbound | TCP | 443 | 0.0.0.0/0 | ALLOW
200 | Inbound | TCP | 80 | 0.0.0.0/0 | ALLOW
* | Inbound | Tất cả | Tất cả| 0.0.0.0/0 | DENY
100 | Outbound | TCP | 1024-65535 | 0.0.0.0/0 | ALLOW (cổng ngẫu nhiên)
* | Outbound | Tất cả | Tất cả| 0.0.0.0/0 | DENY
1.3 Nhóm Bảo mật (Security Groups) #exam-tip
Mục đích: Làm tường lửa ở cấp độ tài nguyên/máy chủ (có trạng thái - stateful).
Đặc điểm:
- Có trạng thái (Stateful) - Cứ luồng đi ra lọt thì lúc dữ liệu trả về (return traffic) cũng sẽ tự động được thả qua cửa.
- Chỉ có luật ALLOW (Cho phép) - Không có chỗ nào để viết luật Deny (vì nó mặc định cấm ngầm - implicit deny).
- Mặc định - Khóa mõm mọi luồng đi VÀO (inbound), thả rông mọi luồng đi RA (outbound).
- Gắn cho: EC2, RDS, SageMaker endpoints, EFS.
Ví dụ: Security Group của một con SageMaker Endpoint
Luật Đi Vào (Inbound Rules):
- Loại: HTTPS, Cổng: 443, Nguồn: Security Group của con Application
(Chỉ cho phép luồng HTTPS xuất phát từ tầng ứng dụng chui vào)
Luật Đi Ra (Outbound Rules):
- Loại: Tất cả, Đích đến: 0.0.0.0/0
(Thả rông mọi luồng đi ra - để lấy đường cho dữ liệu trả về)
Đọ sức NACL vs Security Groups: #important
| Tiêu chí | NACL | Security Groups |
|---|---|---|
| Cấp độ chắn | Subnet (Mạng con) | Instance/Tài nguyên cụ thể |
| Trạng thái | Phi trạng thái (Phải viết cả luật ra lẫn luật vào) | Có trạng thái (Cho vào thì tự động cho ra) |
| Thể loại Luật | Có cả Allow + Deny | Chỉ có mỗi luật Allow |
| Cách xử lý | Đọc từ trên xuống dưới theo Rule # | Gom lại đánh giá chung tất cả |
| Mặc định | Mở toang cửa (Allow all) | Khóa chặt cửa vào (Deny all inbound) |
| Use case | Phóng hỏa, khóa mõm cả cái subnet | Kiểm soát tỉ mỉ từng con máy một |
Mẹo Bài thi: #exam-tip
- “Chặn cổ một cái IP cụ thể” → Dùng NACL (vì Security Groups không có luật cấm - deny).
- “Kiểm soát ai được chọc vào SageMaker endpoint” → Dùng Security Group.
- “Tường lửa có trạng thái (Stateful firewall)” → Dùng Security Group.
- “Bảo kê ở cấp độ mạng con (Subnet-level protection)” → Dùng NACL.
1.4 VPC Flow Logs #exam-tip
Mục đích: Bắt gọn và lưu lại toàn bộ lịch sử các luồng IP traffic chạy lướt qua VPC, subnet, hoặc một cái card mạng (network interface).
Ghi lại những gì:
- IP Nguồn/IP Đích.
- Các Cổng (Ports).
- Giao thức (Protocol).
- Số Byte/Số gói tin.
- Tình trạng là bị chặn hay được cho qua (Accept/reject).
Use Cases:
- Sửa lỗi (Troubleshooting) - Trả lời câu hỏi “Ủa sao cái training job của tao không chui vào S3 được?”.
- Giám sát Bảo mật - Đánh hơi xem có luồng traffic nào mờ ám hay không.
- Tuân thủ (Compliance) - Báo cáo kiểm toán (audit) về những ai đã truy cập mạng.
Nơi cất giữ log:
- CloudWatch Logs.
- S3.
- Kinesis Data Firehose.
Kịch bản Bài thi:
- “Mò lỗi tại sao con SageMaker không moi được data từ S3” → Bật VPC Flow Logs lên, ngồi căng mắt tìm mấy cái traffic bị dán nhãn ‘rejected’.
1.5 VPC Endpoints #important #exam-tip
Mục đích: Truy cập các dịch vụ của AWS một cách kín đáo (privately) mà không cần phải lết xác ra ngoài internet (nghĩa là vứt luôn IGW và NAT Gateway đi).
Phân loại:
1. Gateway Endpoints (Hàng Chùa - Free)
- Dành cho: Chỉ dùng được với đúng S3 và DynamoDB.
- Cách thức: Ghi thẳng vào Route table.
- Chi phí: Không tốn một xu.
- Use: Món đồ quốc dân để cho con SageMaker chui vào S3.
Ví dụ Route:
Destination: pl-12345 (Danh sách các IP của S3)
Target: vpce-abc123 (Cái Gateway Endpoint)
2. Interface Endpoints (PrivateLink) (Phải trả tiền)
- Dành cho: Tất tần tật phần còn lại của thế giới AWS (SageMaker, CloudWatch, KMS, v.v…).
- Cách thức: Cắm một cái cạc mạng ảo (Elastic Network Interface - ENI) ngay trong lòng subnet.
- Chi phí: $0.01/giờ + tiền phí truyền dữ liệu.
- Use: Gọi các hàm SageMaker API, CloudWatch, KMS từ bên trong private subnet.
Danh sách VPC Endpoints thường dùng cho SageMaker: #exam-tip
Những món BẮT BUỘC phải có nếu nhốt SageMaker trong VPC:
com.amazonaws.region.sagemaker.api (Gọi SageMaker API)
com.amazonaws.region.sagemaker.runtime (Gọi endpoints)
com.amazonaws.region.s3 (Giao tiếp S3 - Bắt buộc xài Gateway Endpoint)
com.amazonaws.region.logs (Ghi CloudWatch Logs)
com.amazonaws.region.ecr.api (Móc mỏ ECR - để kéo images)
com.amazonaws.region.ecr.dkr (Chui vào ECR - Docker registry)
Kịch bản Bài thi: #exam-tip
| Kịch bản | Giải pháp |
|---|---|
| “SageMaker bị nhốt trong private subnet, không có internet, muốn chui vào S3” | Dùng S3 Gateway Endpoint (hàng free) |
| “Training job cần xả log ra CloudWatch, không có internet” | Dùng CloudWatch Logs Interface Endpoint |
| “Muốn Lambda từ private subnet gọi thẳng vào endpoint” | Cài SageMaker Runtime Interface Endpoint |
| “Kéo Docker images về để train, nhưng không có NAT Gateway” | Cài cặp ECR Interface Endpoints (cả api lẫn dkr) |
| “Muốn bớt tiền nuôi NAT Gateway khi gọi S3” | Dùng S3 Gateway Endpoint (free hoàn toàn, đỡ phải xài NAT) |
Đọ sức Gateway Endpoint vs Interface Endpoint:
| Tiêu chí | Gateway Endpoint | Interface Endpoint |
|---|---|---|
| Các Dịch vụ | Chỉ S3, DynamoDB | Toàn bộ các dịch vụ AWS khác |
| Cách Triển khai | Bơm vào Route table | Cắm ENI vào subnet |
| Tiền | Chùa (Free) | $0.01/giờ + phí truyền dữ liệu |
| Phân giải DNS | Dùng public DNS của AWS vẫn chạy tuốt | Phải dùng Private DNS hoặc DNS băm riêng của endpoint |
1.6 Kết nối Ngang hàng VPC (VPC Peering) #exam-tip
Mục đích: Bắt cầu nối 2 cái VPC lại với nhau (có thể cùng chung một tài khoản, hoặc khác tài khoản, khác cả quốc gia/region luôn).
Use Cases:
- Đa tài khoản (Multi-account): Nối VPC của account Dev sang VPC của account Prod.
- Xuyên biên giới (Cross-region): Nối VPC bên Mỹ (US-EAST) sang VPC bên Châu Âu (EU-WEST).
- Trung tâm Dịch vụ (Shared services): Xây một cái VPC chà bá ở giữa chứa các công cụ dùng chung để các VPC con chạy vào xài ké.
Đặc điểm:
- Không có tính bắc cầu (Not transitive) - Nếu A nối B, B nối C, thì A KHÔNG THỂ nhảy sang C được (bắt buộc phải tự xây thêm cầu nối A sang C).
- Cấm trùng lặp dải IP (No overlapping CIDR) - 2 thằng VPC mà xài chung một dải IP là dẹp, không cho nối.
- Cập nhật Route table - Phải báo cho cả 2 bên biết đường để đi sang nhà nhau.
Kịch bản Bài thi:
- “Muốn share một cái data lake cho nhiều accounts cùng xài” → Combo: VPC Peering + cấp quyền S3 cross-account access.
1.7 AWS PrivateLink #exam-tip
Mục đích: Khoe một dịch vụ cho các VPC khác chui vào xài một cách bảo mật tuyệt đối (cấm xài internet, cũng không thèm xài VPC peering luôn).
Cách Nó Hoạt Động:
- Thằng cho thuê dịch vụ (Service provider) sẽ đẻ ra một cái VPC Endpoint Service (chạy đằng sau là một cái Network Load Balancer).
- Thằng khách hàng (Service consumer) sẽ đẻ ra một cái Interface Endpoint ngay trong cái VPC của nhà nó.
- Luồng dữ liệu cứ thế chạy kín đáo tít sâu bên trong mạng nội bộ của AWS.
Use Cases:
- Bọn bán SaaS - Khoe APIs cho các VPC của khách hàng vào xài.
- Trung tâm Dịch vụ (Shared services) - Xây một con inference endpoint ở giữa, rồi cho cả trăm cái VPC từ các team khác nhau thọc vào xài ké.
- Kiến trúc Microservices - Xây các APIs nội bộ gọi nhau giữa các VPCs.
Đọ sức PrivateLink vs VPC Peering:
| Tiêu chí | PrivateLink | VPC Peering |
|---|---|---|
| Khả năng Bành trướng (Scalability) | Chấp hàng trăm ngàn khách hàng | Chỉ kết nối 1-kèm-1 |
| Trùng IP | Vẫn chạy tốt (vì xài trò ảo thuật DNS) | Cấm tiệt |
| Tính Bắc cầu | Không (nhưng bành trướng thì vô biên) | Không |
| Use case | Phơi mặt dịch vụ ra ngoài cho thiên hạ xài | Nối thông mâm mạng với nhau |
Kịch bản Bài thi:
- “Đem con SageMaker endpoint phơi cho 100 cái VPC của khách hàng chọc vào” → Phải quất PrivateLink (chứ rảnh đâu mà đi nối 100 cái VPC peering).
1.8 VPN & Direct Connect #exam-tip
AWS VPN
Mục đích: Đục một đường hầm mã hóa nối từ phòng máy ở công ty (on-premises) chạy vắt ngang qua internet để chui vào AWS.
Đặc điểm:
- Khởi tạo siêu tốc (Quick setup) - Vài phút đến chừng vài tiếng là có mạng xài.
- Giá rổ: Bèo ($).
- Tốc độ (Speed): Kịch trần 1.25 Gbps cho một đường hầm.
- Use: Cần mạng xài liền, hoặc dùng làm đường cua lốp dự phòng (backup) cho thằng Direct Connect.
AWS Direct Connect
Mục đích: Kéo một đường cáp quang nối từ công ty (on-premises) đâm thẳng vào tim của AWS.
Đặc điểm:
- Thời gian triển khai: Tính bằng tuần hoặc vài tháng (vì phải đi hì hục kéo dây vật lý).
- Giá rổ: Đắt lòi họng (\(\)).
- Tốc độ (Speed): Tự tin tuyên bố 1 Gbps tới 100 Gbps.
- Độ Lì đòn (Reliability): Sợi cáp quang riêng (sống khỏe và ổn định hơn internet tỉ lần).
- Use: Chuyên bốc vác khối lượng dữ liệu khổng lồ, cần độ trễ thấp và ổn định.
Kịch bản Bài thi: #exam-tip
| Kịch bản | Giải pháp |
|---|---|
| “Tháng nào cũng phải bốc 10TB training data từ nhà máy (on-prem) hất lên AWS” | Đóng ngay Direct Connect (việc nặng nhọc diễn ra đều đặn) |
| “Cần một đường link an toàn gấp để nhảy vào test thử” | Chơi VPN (nhanh gọn lẹ) |
| “Làm đường truyền sơ cua cho cái Direct Connect” | Dùng VPN làm đường failover (dự phòng) |
| “Có mỗi 50GB, tải đúng một lần rồi thôi” | Chạy AWS DataSync trần trụi qua internet (rảnh đâu mà build Direct Connect) |
1.9 Cấu hình SageMaker VPC (SageMaker VPC Configuration) #important #exam-tip
SageMaker VPC Mode:
Khi nào thì phải Khóa mỏ bằng VPC Mode:
- ✅ Dữ liệu siêu siêu nhạy cảm (tuân thủ luật HIPAA, PCI).
- ✅ Cần phải chui vào lôi data từ các kho kín đáo (như RDS, hoặc databases nằm ở on-prem).
- ✅ Quy định bắt buộc mọi hệ thống phải bị cô lập khỏi internet.
- ✅ Luật An ninh mạng của công ty đè xuống.
Khi nào TUYỆT ĐỐI KHÔNG dùng VPC Mode:
- ❌ Train bằng mấy cái tập dữ liệu công cộng (public datasets) nằm phơi thây trên internet (kéo về cực khổ).
- ❌ Đang chạy thử nghiệm, múa lửa (prototyping - cắm VPC vào chỉ tổ lỗi tùm lum tốn thời gian).
Cấu hình:
from sagemaker.estimator import Estimator
estimator = Estimator(
image_uri='my-algorithm',
role=role,
instance_type='ml.m5.xlarge',
# Chỗ để cấu hình VPC
subnets=['subnet-abc123', 'subnet-def456'], # Nhét nó vào Private subnets
security_group_ids=['sg-xyz789']
)
Các Điều kiện Kiên quyết khi chạy VPC Mode: #exam-tip
Bắt buộc phải sắm đủ các món đồ chơi sau:
- Private subnets (Tối thiểu 2 cái để phòng hờ chết máy - high availability).
- Security group cấu hình hở cổng cho phép dữ liệu đi ra (outbound traffic).
- S3 VPC Endpoint (Dùng loại Gateway Endpoint - hàng free).
- Các SageMaker API/Runtime VPC Endpoints (Dùng loại Interface Endpoints).
- Cổng NAT (NAT Gateway) HOẶC Một mâm VPC Endpoints (để hốt tụi ECR, CloudWatch, KMS).
Lựa chọn A: Mua NAT Gateway (Đơn giản, nhưng tốn tiền $$)
- Training job → NAT Gateway → Internet → Tải packages, kéo Docker images.
Lựa chọn B: Chơi khô máu với VPC Endpoints (Rắc rối hơn nhiều, nhưng bớt tốn tiền $)
- Mua S3 Gateway Endpoint (free).
- Mua một cặp ECR Interface Endpoints (api + dkr).
- Mua CloudWatch Logs Interface Endpoint.
- Mua SageMaker API Interface Endpoint.
- Mua thêm KMS Interface Endpoint (nếu có bật tính năng mã hóa).
Sơ đồ Tư duy Giải Bài thi (Decision Tree): #exam-tip
- “Nhốt SageMaker trong VPC, muốn tiết kiệm tiền, được phép chui ra internet lấy đồ” → Mua NAT Gateway.
- “Nhốt SageMaker trong VPC, ra lệnh cấm tuyệt đối không một giọt internet nào được rò rỉ” → Mua cả mâm VPC Endpoints (dẹp cái NAT đi).
- “Đang chạy training trong VPC thì bị văng lỗi ‘Connection timeout’ (quá hạn kết nối)” → Nguyên nhân chắc chắn do quên mua NAT Gateway hoặc mua thiếu VPC Endpoints.
Các Thảm họa VPC Thường Gặp (Common Errors):
| Lỗi (Error) | Nguyên nhân (Cause) | Cách sửa (Solution) |
|---|---|---|
| “Cannot resolve host” | Mất cmn mạng internet | Mua thêm NAT Gateway hoặc lắp VPC Endpoints vào |
| “Access denied to S3” | Quên không lắp ống nước S3 VPC Endpoint | Đóng ngay cái S3 Gateway Endpoint vào |
| “Cannot pull Docker image” | Không móc mỏ được vào ECR | Bơm thêm cặp ECR VPC Endpoints hoặc dùng NAT Gateway |
| “Training job stuck” (Bị treo cứng) | Do thằng Security group bóp cổ | Nhớ mở luật cho phép xuất khẩu (outbound) HTTPS (443) trong security group |