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.
Model khuyến nghị
Phần tiêu đề “Model khuyến nghị”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
Ví dụ public read bucket policy
Phần tiêu đề “Ví dụ public read bucket policy”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.
Ví dụ upload credential policy
Phần tiêu đề “Ví dụ upload credential policy”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.
Presigned private bucket
Phần tiêu đề “Presigned private bucket”Cho private bucket:
s3: acl: "private" use_presigned_url: true presigned_expiry_seconds: 86400Credential cần quyền upload và tạo signed URL. Object không cần public read permission.
CDN Mode
Phần tiêu đề “CDN Mode”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.
Quản lý secret
Phần tiêu đề “Quản lý secret”Nên:
- giữ
access_keyvàsecret_keychỉ 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.ymlcó key thật - dùng lại root account key
- cấp full account admin permission cho uploader
Deny delete
Phần tiêu đề “Deny delete”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.