Bỏ qua để đến nội dung

Chính sách bảo mật

IAUP cần quyền ghi để upload pack và client cần quyền đọc qua public URL hoặc presigned URL. Giữ hai phần này tách biệt.

Dùng:

  • một credential upload private cho IAUP
  • một đường đọc public qua CDN hoặc bucket policy
  • không cấp delete permission trừ khi workflow cleanup cần
  • key được rotate
  • không commit credential vào source control

Thay <bucket-name>.

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

Một số provider dùng syntax policy hoặc dashboard khác. Khớp theo policy model của provider.

Nên giới hạn object access theo prefix IAUP ghi:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:PutObjectAcl", "s3:GetObject"],
"Resource": ["arn:aws:s3:::<bucket-name>/itemsadder/*"]
}
]
}

Nếu dùng acl: "none", không cần s3:PutObjectAcl.

Cho private bucket:

s3:
acl: "private"
use_presigned_url: true
presigned_expiry_seconds: 86400

Credential cần quyền upload và tạo signed URL. Object không cần public read permission.

Cho CDN mode:

s3:
use_presigned_url: false
public_url_base: "https://cdn.example.com"

CDN origin phải đọc được object. Player phải truy cập được CDN URL.

Nên:

  • giữ access_keysecret_key chỉ trên server
  • hạn chế file permission cho plugin config
  • rotate key sau thay đổi staff
  • dùng provider audit log nếu có

Không nên:

  • commit plugins/ItemsAdderUploadPlus/config.yml có key thật
  • dùng lại root account key
  • cấp full account admin permission cho uploader

Nếu provider hỗ trợ explicit deny, deny object deletion cho key IAUP. IAUP chỉ upload; nó không cần quyền delete.

Cleanup object cũ nên dùng lifecycle rule riêng hoặc maintenance credential riêng.