Tôi muốn tạo một URL "được ký trước" để tải lên một đối tượng cụ thể (PUT) lên thùng Amazon S3.URL được ký trước và x-amz-acl
Cho đến nay rất tốt. Tôi đang sử dụng thư viện python boto để tạo URL, chứa tất cả nội dung cần thiết (hết hạn, chữ ký, v.v.). URL trông như thế này:
https://<bucketname>.s3.amazonaws.com/<key>?Signature=<sig>&Expires=<expires>&AWSAccessKeyId=<my key id>&x-amz-acl=public-read
Lưu ý các tham số cuối cùng. Điều này, ít nhất, như tôi hiểu, hạn chế bất cứ ai sử dụng URL này để tải lên một đối tượng đến một khóa cụ thể trong một nhóm cụ thể và cũng giới hạn ACL đóng hộp sẽ được đặt trên đối tượng để "đọc công khai".
Câu lệnh cuối cùng của tôi khá không chính xác.
Khi nó quay ra, nếu bạn đang sử dụng URL này, bạn có thể làm như sau với x-AMZ-acl tiêu đề (như trái ngược với chuỗi tham số truy vấn có cùng tên, mà bạn phải đặt để kiểm tra chữ ký thành công):
- Đặt thành "công khai đọc". Quyền của đối tượng sẽ bao gồm hai mục: "đọc" cho "Mọi người" và "toàn quyền kiểm soát" cho chủ nhóm. Điều này là khá mong đợi.
- Bỏ qua tiêu đề x-amz-acl. Các quyền trên đối tượng sẽ giống như mặc định cho mỗi nhóm (chủ sở hữu nhóm có toàn quyền kiểm soát). Tại sao?
- Đặt thành "công khai đọc". Kết quả chính xác như trong (1).
- Đặt thành "được xác thực đọc". "Người dùng được xác thực" nhận được quyền "đọc", chủ sở hữu nhóm có toàn quyền kiểm soát.
- Đặt thành "nhóm chủ sở hữu đã đọc". Kết quả chính xác như trong (2). Chủ nhóm có toàn quyền kiểm soát, không có quyền nào khác được xác định.
- Đặt thành "nhóm chủ sở hữu toàn quyền kiểm soát". Không ngạc nhiên, chủ sở hữu xô sẽ có toàn quyền kiểm soát.
- Đặt thành tên ACL không tồn tại và gặp lỗi.
Vì vậy, có vẻ như, đó
- x-AMZ-acl tiêu đề không tham gia vào việc kiểm tra chữ ký, vì bạn có thể thay đổi nó theo ý thích và yêu cầu thành công. Tham số chuỗi truy vấn, tuy nhiên, chắc chắn là được tính đến trong quá trình kiểm tra chữ ký.
- x-amz-acl tham số chuỗi truy vấn không ảnh hưởng đến quyền của đối tượng trực tiếp, như trong, bản thân nó không có gì.
- Nếu bạn gửi một tiêu đề x-AMZ-acl, các điều khoản kết quả không bao giờ có
- hạn chế hơn cho chủ sở hữu xô, hơn là theo mặc định.
- ít hạn chế hơn đối với chủ sở hữu không phải nhóm.
- Tuy nhiên, chúng có thể là hạn chế hơn cho chủ sở hữu không phải là chủ sở hữu nhóm. Tức là, nếu bạn chỉ định
x-amz-acl=public-read
trong chuỗi truy vấn, bạn có thể đặt tiêu đềx-amz-acl
thànhauthenticated-read
và thay vì đối tượng có thể đọc công khai nhận đối tượng, chỉ có thể đọc bởi người dùng được xác thực.
Quan hệ thực giữa tham số QS x-amz-acl và tiêu đề, có cùng tên không? Có cách nào để hạn chế quyền đối với đối tượng không, đó là tải lên thông qua yêu cầu PUT
tới URL được gọi là "đã ký trước"?
Vì bạn là người duy nhất, người dành một số nỗ lực cho câu hỏi này, nó chỉ công bằng, bạn nhận được tiền thưởng, mặc dù câu trả lời, thật không may, đã không giúp tôi chút nào. – shylent
Tôi xin lỗi vì câu trả lời không hữu ích hơn; đã cố gắng vượt qua bất kỳ kiến thức nào tôi có về chủ đề này. – jdotjdot