2015-12-02 15 views
11

Một người dùng bên ngoài có quyền truy cập vào xô s3 của chúng tôi, sử dụng những hành động trong chính sách xô của chúng tôi:S3: Người dùng không thể truy cập đối tượng trong xô s3 của mình nếu được tạo ra bởi một người dùng khác

"Action": [ 
      "s3:GetObjectAcl", 
      "s3:GetObject", 
      "s3:PutObjectAcl", 
      "s3:ListMultipartUploadParts", 
      "s3:PutObject" 
     ] 

Đó user generated temporary credentials, mà sau đó được sử dụng để tải tệp lên trong nhóm của chúng tôi.

Hiện tại, tôi không thể truy cập tệp. Trong giao diện người dùng s3, nếu tôi cố gắng tải xuống tệp, tôi nhận được 403. Nếu tôi cố gắng thay đổi quyền trên đối tượng đó, tôi thấy thông báo: "Rất tiếc! Bạn không có quyền xem nhóm này". Nếu người dùng bên ngoài đặt tiêu đề thích hợp (x-amz-acl bucket-owner-full-control) khi tải tệp lên bằng thông tin đăng nhập tạm thời, tôi có thể truy cập tệp thông thường. Có vẻ lạ với tôi rằng mặc dù tôi sở hữu cái xô, người dùng bên ngoài có thể đưa các tệp vào nó mà tôi không thể truy cập.

Có thể rằng có một số chính sách mà tôi có thể thiết lập để tôi có thể truy cập các tập tin, hoặc để tôi có thể truy cập vào bất kỳ tập tin đó sẽ được thêm vào xô của tôi, bất kể cách nó được thêm vào? Cảm ơn!

Trả lời

18

Tôi tin rằng bạn phải yêu cầu chủ sở hữu đối tượng cập nhật ACL hoặc viết lại đối tượng chỉ định toàn quyền kiểm soát của chủ nhóm. Cách đơn giản nhất để thử nghiệm với điều này là sử dụng CLI:

aws s3api put-object-acl --acl bucket-owner-full-control --bucket some-bucket --key path/to/unreadable.txt 

Vâng, tôi nghĩ bạn phải làm điều đó một lần cho mỗi đối tượng, tôi không nghĩ rằng có một tùy chọn đệ quy.

AWS xuất bản một số example bucket policy đến ngăn không cho thêm đối tượng vào nhóm mà không cấp cho chủ sở hữu toàn quyền kiểm soát. Nhưng điều đó sẽ không giải quyết quyền sở hữu của các đối tượng đã có trong nhóm của bạn.

Tôi không biết bất kỳ chính sách nào sẽ tự động chuyển quyền sở hữu cho chủ nhóm.

+5

Bạn đúng, và điều này là do thiết kế. Nếu bạn cho phép những người dùng khác tải lên nhóm của mình và không thực thi 'toàn bộ chủ sở hữu nhóm 'khi tải lên bằng chính sách nhóm, thì hành động * only * có sẵn cho chủ sở hữu nhóm là xóa đối tượng. Mọi thứ khác yêu cầu sự cho phép phải được chủ sở hữu đối tượng cấp. –

+0

rất hữu ích, thankyou. – eric

+0

Như chú thích, để làm việc với lệnh 'cp' hoặc' mv', người dùng cũng cần sự cho phép đối với hành động 'PutObjectAcl', kiến ​​thức này sẽ tiết kiệm cho tôi một giờ;) –

10

bạn thực sự có thể sử dụng một bản sao và lựa chọn đệ quy để sao chép tất cả các đối tượng trở lại xô và thiết lập acl xô-chủ sở hữu toàn kiểm soát bằng cách sử dụng cú pháp sau:

aws s3 cp s3://myBucket s3://myBucket --recursive --acl bucket-owner-full-control --storage-class STANDARD 
+1

ý tưởng gọn gàng, nhưng nó không hiệu quả với tôi. –

+1

Sử dụng lệnh này cùng với thông tin đăng nhập của tài khoản đã tải lên ban đầu để cung cấp cho toàn quyền kiểm soát của chủ sở hữu nhóm, nhưng tại thời điểm đó tài khoản đã tải lên ban đầu vẫn sở hữu đối tượng S3. Nếu bạn cần, hãy lặp lại lệnh này với thông tin đăng nhập của tài khoản sở hữu nhóm để cung cấp quyền sở hữu tài khoản đó cho các đối tượng S3. – davidvandebunte

Các vấn đề liên quan