🚀 TỔNG HỢP KIẾN THỨC AMAZON S3 SECURITY
Dịch vụ Amazon S3 không chỉ đơn thuần là nơi lưu trữ dữ liệu—mà nó cung cấp một hệ thống bảo mật toàn diện, bao gồm mã hóa dữ liệu, kiểm soát truy cập, ghi log, MFA Delete, CORS, presigned URL, Access Point, và Object Lambda.
Dưới đây là bản tổng hợp chi tiết:
🔐 1. Các phương thức mã hóa dữ liệu trong S3
Amazon S3 hỗ trợ 4 cơ chế mã hóa để bảo vệ dữ liệu: 1. Server-Side Encryption – SSE-S3 (do AWS quản lý)
Mỗi lần upload hay download object, AWS sẽ gọi API của KMS:
Điều này tính vào hạn ngạch KMS mỗi giây (5500–30000 requests/s tùy vùng).
Nếu vượt giới hạn → phải xin tăng quota. 3. Server-Side Encryption – SSE-C (khóa do khách hàng tự quản lý)
🔒 2. Mã hóa khi truyền dữ liệu (SSL/TLS)
🛡 3. Default Encryption và Bucket Policy
➡ Viết bucket policy từ chối mọi yêu cầu PUT không có header mã hóa (SSE-KMS hoặc SSE-C).
🌐 4. Hiểu về CORS trong S3
CORS là gì?
CORS (Cross-Origin Resource Sharing) là cơ chế trình duyệt cho phép website A truy cập tài nguyên ở website B.
Ví dụ:
Bucket HTML truy cập hình ảnh từ bucket Assets → bucket Assets phải bật CORS phù hợp.
🔐 5. MFA Delete (bảo vệ xóa dữ liệu)
MFA Delete là cơ chế bảo vệ mạnh mẽ của S3:
Không yêu cầu MFA khi:
Điều kiện:
📊 6. S3 Access Logs – Nhật ký truy cập S3
❌ Không được lưu log vào chính bucket đang được theo dõi
Vì sẽ tạo vòng lặp → bucket tăng trưởng vô hạn.
🔗 7. Pre-signed URL
Presigned URL cho phép người khác tạm thời truy cập file mà không cần quyền AWS.
Bạn có thể tạo bằng:
Thời gian hiệu lực:
Người dùng sử dụng URL sẽ nhận quyền giống người tạo URL, ví dụ:
🧊 8. S3 Glacier Vault Lock
Dùng cho compliance:
🔐 9. S3 Object Lock (phải bật versioning)
Object Lock cũng là mô hình WORM, nhưng áp dụng cho từng object.
Có hai chế độ: Compliance Mode
Ngoài ra còn:
🔀 10. S3 Access Points
Access Point giúp quản lý quyền truy cập dễ hơn:
🧩 11. S3 Object Lambda
S3 Object Lambda cho phép tùy chỉnh nội dung object trước khi trả về cho người dùng, bằng cách kết hợp Lambda + Access Point.
Ứng dụng:
Dịch vụ Amazon S3 không chỉ đơn thuần là nơi lưu trữ dữ liệu—mà nó cung cấp một hệ thống bảo mật toàn diện, bao gồm mã hóa dữ liệu, kiểm soát truy cập, ghi log, MFA Delete, CORS, presigned URL, Access Point, và Object Lambda.
Dưới đây là bản tổng hợp chi tiết:
🔐 1. Các phương thức mã hóa dữ liệu trong S3
Amazon S3 hỗ trợ 4 cơ chế mã hóa để bảo vệ dữ liệu: 1. Server-Side Encryption – SSE-S3 (do AWS quản lý)
- AWS tự động mã hóa đối tượng cho bạn.
- Sử dụng chuẩn AES-256.
- Bạn có thể gửi kèm header: x-amz-server-side-encryption: AES256.
- Được bật mặc định cho bucket và object mới.
- S3 dùng KMS để tạo và quản lý khóa mã hóa.
- Lợi ích: kiểm soát khóa + theo dõi hoạt động khóa qua CloudTrail.
- Cần header: x-amz-server-side-encryption: aws:kms.
Mỗi lần upload hay download object, AWS sẽ gọi API của KMS:
- Upload → gọi GenerateDataKey
- Download → gọi Decrypt
Điều này tính vào hạn ngạch KMS mỗi giây (5500–30000 requests/s tùy vùng).
Nếu vượt giới hạn → phải xin tăng quota. 3. Server-Side Encryption – SSE-C (khóa do khách hàng tự quản lý)
- Khóa do bạn quản lý bên ngoài AWS.
- S3 không lưu khóa của bạn.
- Tất cả request phải dùng HTTPS.
- Mỗi request cần gửi khóa trong header.
- Bạn tự mã hóa dữ liệu trước khi tải lên.
- Khi tải xuống, bạn tự giải mã bằng thư viện client.
- Hoàn toàn do khách hàng quản lý khóa và chu trình mã hóa.
🔒 2. Mã hóa khi truyền dữ liệu (SSL/TLS)
- S3 hỗ trợ cả HTTP và HTTPS.
- HTTPS bảo vệ dữ liệu khi truyền (encryption in transit).
- Với SSE-C, bắt buộc phải dùng HTTPS.
- Hầu hết client mặc định sử dụng HTTPS.
🛡 3. Default Encryption và Bucket Policy
- SSE-S3 hiện được bật mặc định cho bucket mới.
- Bạn có thể ép buộc tất cả object phải được mã hóa bằng cách:
➡ Viết bucket policy từ chối mọi yêu cầu PUT không có header mã hóa (SSE-KMS hoặc SSE-C).
🌐 4. Hiểu về CORS trong S3
CORS là gì?
CORS (Cross-Origin Resource Sharing) là cơ chế trình duyệt cho phép website A truy cập tài nguyên ở website B.
- Origin gồm protocol + domain + port.
- Nếu website truy cập tài nguyên từ origin khác → cần được origin kia cho phép.
- S3 cũng cần cấu hình CORS khi hosting static website hoặc chia sẻ tài nguyên giữa hai bucket.
Ví dụ:
Bucket HTML truy cập hình ảnh từ bucket Assets → bucket Assets phải bật CORS phù hợp.
🔐 5. MFA Delete (bảo vệ xóa dữ liệu)
MFA Delete là cơ chế bảo vệ mạnh mẽ của S3:
- Yêu cầu nhập mã MFA khi thực hiện các thao tác quan trọng như:
✔ Xóa vĩnh viễn phiên bản object
✔ Tắt versioning
Không yêu cầu MFA khi:
- Bật versioning
- Liệt kê phiên bản đã xóa
Điều kiện:
- Bucket phải bật versioning
- Chỉ root account mới có quyền bật/tắt MFA Delete
📊 6. S3 Access Logs – Nhật ký truy cập S3
- S3 có thể ghi lại mọi request đến bucket, bao gồm cả yêu cầu bị từ chối.
- Log được lưu vào một bucket khác trong cùng region.
- Lưu ý quan trọng:
❌ Không được lưu log vào chính bucket đang được theo dõi
Vì sẽ tạo vòng lặp → bucket tăng trưởng vô hạn.
🔗 7. Pre-signed URL
Presigned URL cho phép người khác tạm thời truy cập file mà không cần quyền AWS.
Bạn có thể tạo bằng:
- S3 Console
- AWS CLI
- SDK (Python, Java…)
Thời gian hiệu lực:
- Console: 1 – 720 phút
- CLI: tùy chỉnh bằng --expires-in (tối đa 7 ngày)
Người dùng sử dụng URL sẽ nhận quyền giống người tạo URL, ví dụ:
- Tải video premium
- Cho phép khách tải file theo yêu cầu
- Cấp quyền tạm thời để upload
🧊 8. S3 Glacier Vault Lock
Dùng cho compliance:
- Áp dụng mô hình WORM (Write Once Read Many).
- Tạo Vault Lock Policy rồi khóa lại → không thể thay đổi.
- Dùng để giữ dữ liệu lâu dài, chống xóa.
🔐 9. S3 Object Lock (phải bật versioning)
Object Lock cũng là mô hình WORM, nhưng áp dụng cho từng object.
Có hai chế độ: Compliance Mode
- Không ai có thể chỉnh sửa/xóa, kể cả root.
- Không rút ngắn thời gian giữ.
- Hầu hết người dùng không thể sửa/xóa object.
- Một số tài khoản đặc biệt có thể thay đổi retention.
Ngoài ra còn:
- Retention period: giữ object trong thời gian cố định
- Legal Hold: giữ vô thời hạn, bỏ hoặc thêm bất kỳ lúc nào (có IAM permission phù hợp)
🔀 10. S3 Access Points
Access Point giúp quản lý quyền truy cập dễ hơn:
- Mỗi Access Point có DNS riêng + policy riêng.
- Bạn có thể tạo AP cho từng nhóm người dùng: Finance, Sales, Analytics…
- Policy đơn giản hơn nhiều so với bucket policy phức tạp.
🧩 11. S3 Object Lambda
S3 Object Lambda cho phép tùy chỉnh nội dung object trước khi trả về cho người dùng, bằng cách kết hợp Lambda + Access Point.
Ứng dụng:
- Ẩn thông tin nhạy cảm
- Chuyển đổi định dạng (VD: XML → JSON)
- Resize ảnh, watermark theo người dùng truy cập
- Trả về dữ liệu đã xử lý mà không cần tạo bản sao trong S3