Chuyển tới nội dung chính
Cập nhật lần cuối:

Bucket Policy

Bucket Policy là tập quy tắc kiểm soát truy cập dạng JSON, cho phép bạn định nghĩa ai có thể thực hiện hành động gì trên tài nguyên nào trong bucket. Đây là cơ chế bảo mật mạnh mẽ hơn so với chỉ dùng chế độ Private/Public đơn giản.

Truy cập Bucket Policy

Bước 1: Vào Simple Storage → Buckets, chọn vào tên bucket cần cấu hình.

Bước 2: Chọn tab Bucket Policy trong phần quản lý bucket.

Tab Bucket Policy - JSON Editor

Bước 3: Trang hiển thị editor JSON để nhập/chỉnh sửa policy. Chọn Áp dụng templates để xem các mẫu policy có sẵn.

Dropdown Templates Bucket Policy

Cấu trúc Policy JSON

Một Bucket Policy theo chuẩn S3 có cấu trúc:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Tên định danh câu lệnh (tuỳ chọn)",
"Effect": "Allow | Deny",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::ten-bucket/*"]
}
]
}

Các trường chính:

TrườngMô tả
VersionPhiên bản chính sách — luôn dùng "2012-10-17"
StatementMảng các câu lệnh chính sách
SidTên định danh câu lệnh (tùy chọn, để dễ quản lý)
EffectAllow (cho phép) hoặc Deny (từ chối)
PrincipalĐối tượng áp dụng: "*" = mọi người, hoặc chỉ định user/account cụ thể
ActionDanh sách hành động S3 được phép/từ chối
ResourceARN của bucket hoặc object áp dụng

Các Action S3 phổ biến

ActionMô tả
s3:GetObjectĐọc/tải về object
s3:PutObjectUpload object mới
s3:DeleteObjectXóa object
s3:ListBucketLiệt kê object trong bucket
s3:GetBucketPolicyĐọc policy của bucket
s3:PutBucketPolicyGhi policy mới cho bucket
s3:GetBucketCorsĐọc cấu hình CORS
s3:*Tất cả các hành động S3

Ví dụ Policy thường dùng

1. Cho phép đọc công khai (Static Website / CDN)

Cho phép mọi người đọc tất cả object trong bucket:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::ten-bucket/*"
}
]
}

2. Chỉ cho phép đọc thư mục cụ thể

Cho phép đọc công khai chỉ với các file trong thư mục public/:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadPublicFolder",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::ten-bucket/public/*"
}
]
}

3. Từ chối xóa object (bảo vệ dữ liệu)

Ngăn mọi người (kể cả owner) xóa object trong bucket:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyDeleteObject",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:DeleteObject",
"Resource": "arn:aws:s3:::ten-bucket/*"
}
]
}

4. Cho phép một IP cụ thể upload

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUploadFromIP",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::ten-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.10/32"
}
}
}
]
}

Áp dụng Policy

Bước 1: Nhập hoặc chỉnh sửa JSON policy trong editor.

Bước 2: Chọn Save hoặc Apply để lưu và áp dụng policy.

Bước 3: Hệ thống xác thực cú pháp JSON và áp dụng ngay lập tức.

Nếu JSON có lỗi cú pháp, portal hiển thị thông báo lỗi và không lưu policy.

Xóa Policy

Để xóa toàn bộ policy và đưa bucket về trạng thái mặc định, xóa sạch nội dung trong editor và chọn Save. Bucket trở về cấu hình Access Policy (Private/Public) đã đặt khi tạo.

Policy với "Effect": "Deny" luôn được ưu tiên hơn "Effect": "Allow", kể cả khi bucket đang ở chế độ Public. Hãy kiểm tra kỹ trước khi áp dụng Deny policy để tránh khóa chính mình ra ngoài.