S3 (Simple Storage Service) P2
Amazon S3 – Security
User-Based (Dựa trên người dùng)
- IAM Policies:
→ Định nghĩa rõ API nào được phép gọi đối với một IAM user cụ thể
→ Quản lý từ IAM Service (Identity & Access Management)
Resource-Based (Dựa trên tài nguyên)
- Bucket Policies
→ Policy áp dụng toàn bucket, cấu hình từ AWS S3 Console
→ Hỗ trợ cấp quyền cho tài khoản khác (cross-account access) - Object Access Control List (ACL)
→ Điều khiển truy cập mức chi tiết hơn (fine-grain) cho từng object
→ Có thể bị disable - Bucket Access Control List (ACL)
→ Ít được dùng hơn so với Bucket Policy
→ Cũng có thể bị disable - Lưu ý quan trọng: Một IAM principal (user/role) có thể truy cập object trong S3 nếu:
- IAM permissions của người dùng ALLOW HOẶC Resource policy (bucket policy, ACL) ALLOW
- VÀ không có bất kỳ explicit DENY nào
- Encryption (Mã hóa)
- Object trong Amazon S3 có thể được mã hóa bằng encryption key
→ Hỗ trợ S3-managed keys (SSE-S3), KMS keys (SSE-KMS), hoặc client-side encryption
- Object trong Amazon S3 có thể được mã hóa bằng encryption key
S3 Bucket Policies

- JSON based policies
- Resources:
Đối tượng được áp dụng – có thể là bucket hoặc object trong S3. - Effect:
Giá trị"Allow"hoặc"Deny"– xác định hành động có được phép hay không. - Actions:
Tập các API cụ thể mà policy cho phép hoặc từ chối (ví dụ:s3:GetObject,s3:PutObject...) - Principal:
Tài khoản (account) hoặc người dùng (user/role) mà policy áp dụng đến.*nghĩa là áp dụng cho tất cả mọi người (public).
- Resources:
- Sử dụng Bucket Policy để:
- Cấp quyền public access cho bucket
- Bắt buộc mã hóa (encryption) khi upload object
- Cấp quyền truy cập cross-account (giữa các tài khoản AWS khác nhau)
- Public Access - Use Bucket Policy

- User Access S3 - IAM Permission

- EC2 Instance Access - Use IAM Role

- Cross-Account Access - Use Bucket Policy

Cấu hình bucket để Block Public Access

- Các thiết lập này được tạo ra để ngăn chặn rò rỉ dữ liệu.
- Nếu bạn biết chắc rằng bucket không bao giờ nên được public, hãy giữ các thiết lập này ở trạng thái bật (On).
- Có thể cấu hình ở cấp độ tài khoản (account-level) để áp dụng cho toàn bộ các bucket trong tài khoản.
Static Website Hosting
- Amazon S3 có khả năng host các static website (HTML/CSS/JS tĩnh) và cho phép truy cập qua Internet.
- Tùy theo vùng (region), URL để truy cập website sẽ theo format:
http://<bucket-name>.s3-website-<aws-region>.amazonaws.com
Ví dụ:http://demo-bucket.s3-website-us-west-2.amazonaws.com
Hoặc:http://<bucket-name>.s3-website.<aws-region>.amazonaws.com
Ví dụ:http://demo-bucket.s3-website.us-west-2.amazonaws.com
⚠️ Hai dạng URL này đều hợp lệ, phụ thuộc vào vùng AWS bạn chọn.
- Nếu truy cập URL mà nhận lỗi 403 Forbidden, thì rất có thể bucket policy chưa cho phép quyền đọc công khai (
public read access).
Amazon S3 – Versioning

- Bạn có thể version (quản lý phiên bản) các file trong Amazon S3.
- Versioning được bật ở cấp bucket (bucket-level).
- Mỗi lần bạn upload một object với cùng key (tên file), S3 sẽ không ghi đè, mà thay vào đó sẽ tạo một phiên bản mới với
versionIdmới. - Nên bật versioning cho bucket để:
- Bảo vệ file khỏi việc bị xóa ngoài ý muốn (có thể khôi phục lại phiên bản trước).
- Rollback (quay lại phiên bản cũ) rất dễ dàng.
- Những file đã tồn tại trước khi bật versioning sẽ có version là
"null". - Tạm dừng versioning (suspend) không xóa các version trước đó, chỉ ngừng tạo version mới.
Replication
Amazon S3 Replication là một tính năng cho phép sao chép tự động các object giữa các bucket S3, theo thời gian thực và không đồng bộ (asynchronous)

- Yêu cầu cấu hình
- Phải bật Versioning cho cả bucket nguồn và bucket đích.
- Hỗ trợ hai loại:
- CRR (Cross-Region Replication) – sao chép qua nhiều region
- SRR (Same-Region Replication) – sao chép trong cùng một region.
- Đặc điểm kỹ thuật
- Các bucket có thể nằm ở các tài khoản AWS khác nhau.
- Việc sao chép diễn ra theo kiểu bất đồng bộ (asynchronous).
- Cần cấp đúng IAM permissions để S3 có thể thực hiện sao chép.
- Use Cases – Tình huống sử dụng
- CRR:
- Tuân thủ chính sách dữ liệu (compliance)
- Truy cập với độ trễ thấp từ các khu vực khác
- Sao chép dữ liệu giữa các tài khoản AWS
- SRR:
- Tập hợp log (log aggregation)
- Đồng bộ dữ liệu giữa môi trường production và test trong cùng một region
- CRR:
- Ghi chú về replication
- Hành vi sao chép (Replication behavior)
- Sau khi bạn bật replication, chỉ các object mới được tạo mới được sao chép.
- Nếu muốn sao chép các object đã có từ trước, bạn có thể dùng
S3 Batch Replication:- Công cụ này sẽ sao chép cả các object hiện tại và những object trước đó bị lỗi replication.
- Hành vi sao chép (Replication behavior)
- Xử lý thao tác DELETE
- Khi bạn xóa một object, S3 không thực sự xóa dữ liệu, mà tạo ra một “delete marker” — một bản ghi đánh dấu object là đã bị xóa.
→ Điều này giúp bạn có thể khôi phục lại version cũ nếu cần. - Có 2 loại thao tác xóa chính:
- 1. ❌ Xóa không chỉ định version ID (thao tác bình thường):
aws s3 rm s3://bucket-name/object.txt
→ S3 sẽ tạo 1 delete marker mới → object bị “ẩn”, nhưng các version trước đó vẫn còn.
🔁 Trong replication: Delete marker này có thể được replicate sang bucket đích (nếu bạn bật tùy chọn cho phép sao chép delete markers).
- 2. ❌ Xóa có chỉ định version ID (xóa version cụ thể):
aws s3api delete-object --bucket bucket-name --key object.txt --version-id abc123
→ Version cụ thể bị xoá hoàn toàn, không thể khôi phục
🛑 S3 replication sẽ bỏ qua những lệnh xoá theo version ID này để tránh rủi ro mất mát dữ liệu do thao tác xoá ác ý hoặc nhầm lẫn
- 1. ❌ Xóa không chỉ định version ID (thao tác bình thường):
- Khi bạn xóa một object, S3 không thực sự xóa dữ liệu, mà tạo ra một “delete marker” — một bản ghi đánh dấu object là đã bị xóa.
👉 Lý do: Nếu thao tác này bị replicate mà do lỗi/người dùng xấu thì version dữ liệu gốc cũng bị xoá khỏi cả bucket đích, gây mất mát nghiêm trọng.
- Không hỗ trợ "chaining" replication
- Ví dụ:
- Bucket 1 replicate sang Bucket 2
- Bucket 2 lại replicate sang Bucket 3
=> Các object tạo mới trong Bucket 1 sẽ không tự động đến Bucket 3
- Nói cách khác: replication không theo chuỗi (no chaining), bạn phải thiết lập rõ từng mối quan hệ replication.
- Ví dụ:
Bạn thấy bài này thế nào?