Vấn đề về quyền của Amazon S3 - Làm cách nào để đặt quyền cho tất cả các tệp cùng một lúc?


76

Tôi đã tải lên một số tệp bằng bảng điều khiển quản lý Amazon AWS.

Tôi có một HTTP 403 Access deniedlỗi. Tôi phát hiện ra rằng tôi cần đặt quyền view.

Làm cách nào để làm điều đó cho tất cả các tệp trên nhóm?

Tôi biết rằng có thể đặt quyền trên từng tệp, nhưng sẽ mất thời gian khi có nhiều tệp cần mọi người có thể xem được.

Câu trả lời:


123

Tôi khuyên bạn nên áp dụng chính sách nhóm 1 cho nhóm mà bạn muốn lưu trữ nội dung công khai. Bằng cách này, bạn không phải đặt ACL cho mọi đối tượng. Đây là một ví dụ về một chính sách sẽ đặt tất cả các tệp trong thùng chứa mybucket ở chế độ công khai.

{
    "Version": "2008-10-17",
    "Id": "http better policy",
    "Statement": [
        {
            "Sid": "readonly policy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
        }
    ]
}

Đó là *trong "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"phép đệ quy.


1 Lưu ý rằng Chính sách nhóm khác với Chính sách IAM. (Đối với một lỗi, bạn sẽ gặp lỗi nếu cố gắng đưa Principalvào Chính sách IAM.) Có thể chỉnh sửa Chính sách nhóm bằng cách truy cập gốc của nhóm trong bảng điều khiển web AWS của bạn và mở rộng Thuộc tính> Quyền. Các thư mục con của một nhóm cũng có Thuộc tính> Quyền, nhưng không có tùy chọnEdit bucket policy


4
Chỉ trong trường hợp bất kỳ ai khác bị phát hiện bởi điều này, Phiên bản phải chính xác như đã chỉ định.
opsb 19/09/12

9
Chỉ trong trường hợp bất cứ ai đang tự hỏi làm thế nào để thiết lập một chính sách xô, đây là tài liệu AWS chính thức: docs.amazonwebservices.com/AmazonS3/latest/dev/...
Herman J. Radtke III

6
Họ cũng có một công cụ hữu ích để tạo ra những: awspolicygen.s3.amazonaws.com/policygen.html
Bến Sharpe

2
S3 Browser là một bộ công cụ giao diện người dùng có thể làm được điều đó. Nó có một phiên bản phần mềm miễn phí mà tôi nghĩ sẽ làm những gì bạn cần. s3browser.com chúng tôi sử dụng phiên bản trả tiền của họ (nó giống như $ 30) và tôi biết điều đó làm tất cả những điều này trong một vài nhấp chuột cho các nhiệm vụ nhanh chóng, nơi bạn làm không phí như mã hóa
Glenn

3
Tôi đã thử sao chép, dán cái này vào bảng điều khiển S3. Nó phàn nàn rằng đó là json không hợp lệ, bạn phải bỏ dấu phẩy ở cuối sau dòng "Tài nguyên" và khoảng trắng đầu tiên trước {đầu tiên.
Jon Tirsen

5

Bạn có thể chọn thư mục nào bạn muốn công khai.

Nhấn vào "more" và đánh dấu nó là công khai; nó sẽ làm cho thư mục và tất cả các tệp có thể truy cập ở dạng công khai.


4

Bạn chỉ có thể sửa đổi ACL cho một mục duy nhất (thùng hoặc mặt hàng), tương tự như vậy bạn sẽ phải thay đổi chúng từng cái một.

Một số ứng dụng quản lý S3 cho phép bạn áp dụng cùng một ACL cho tất cả các mục trong một nhóm, nhưng nội bộ, nó áp dụng ACL cho từng mục một.

Nếu bạn tải lên tệp của mình theo chương trình, điều quan trọng là phải chỉ định ACL khi bạn tải tệp lên, vì vậy bạn không phải sửa đổi nó sau này. Vấn đề của việc sử dụng một ứng dụng quản lý S3 (như Cloudberry, Transmit, ...) là hầu hết chúng đều sử dụng ACL mặc định (chỉ đọc riêng tư) khi bạn tải từng tệp lên.



2

Sử dụng Trình duyệt S3, bạn có thể cập nhật các quyền bằng cách sử dụng gui, một cách đệ quy. Đó là một công cụ hữu ích và miễn phí cho mục đích sử dụng phi thương mại.


2

Bạn có thể đặt ACL trên mỗi tệp bằng cách sử dụng aws cli:

BUCKET_NAME=example
BUCKET_DIR=media
NEW_ACL=public-read

aws s3 ls $BUCKET_NAME/$BUCKET_DIR/ | \
awk '{$1=$2=$3=""; print $0}' | \
xargs -t -I _ \
aws s3api put-object-acl --acl $NEW_ACL --bucket $BUCKET_NAME --key "$BUCKET_DIR/_"

Giải pháp này tốt trong trường hợp các tệp có thuộc tính xấu được đặt trực tiếp trên chúng :) Người ta cũng có thể viết một cái gì đó tương tự trong python bằng cách sử dụng boto3ObjectAcl của hoặc chính xác hơn S3.ObjectAcl.putsẽ dẫn đến một cái gì đó dễ đọc hơn.
GabLeRoux

2

Tôi đã gặp sự cố tương tự khi tải tệp lên thông qua chương trình (java) vào thùng s3 ..

Lỗi: Không có tiêu đề 'Access-Control-Allow-Origin' trên tài nguyên được yêu cầu.
Nguồn gốc ' http: // localhost: 9000 ' do đó không được phép truy cập. Phản hồi có mã trạng thái HTTP 403

Tôi đã thêm danh tính gốc và thay đổi chính sách nhómcấu hình CORS thì mọi thứ đều hoạt động tốt.


1

Truyền 5

Tôi muốn thêm điều này vào đây cho những người dùng macOS tiềm năng đã có ứng dụng FTP được làm thủ công đẹp mắt có tên là Transmit by Panic.

Tôi đã có Panic và nó hỗ trợ các thùng S3 (không chắc phiên bản này ra đời nhưng tôi nghĩ các bản nâng cấp đều miễn phí). Nó cũng hỗ trợ cập nhật đệ quy quyền Đọc và Ghi.

Bạn chỉ cần nhấp chuột phải vào thư mục bạn muốn cập nhật và chọn các quyền Đọc và Ghi bạn muốn đặt chúng.

Nó có vẻ không quá nhanh nhưng bạn có thể mở tệp nhật ký bằng cách vào Window> Transcript để ít nhất bạn biết rằng nó đang làm gì đó.


1

Để đặt hàng loạt tệp ở chế độ công khai, hãy làm như sau:

  1. Chuyển đến giao diện web S3
  2. Mở thùng cần thiết
  3. Chọn các tệp và thư mục cần thiết bằng cách nhấp vào hộp kiểm ở bên trái danh sách
  4. Nhấp vào nút «Thêm» ở đầu danh sách, nhấp vào «Đặt ở chế độ công khai»
  5. Xác nhận bằng cách nhấp vào «Đặt ở chế độ công khai». Các tệp sẽ không có quyền truy cập ghi công khai mặc dù cảnh báo cho biết «... đọc đối tượng này, quyền đọc và ghi».

0

Sử dụng trình tạo chính sách AWS để tạo chính sách phù hợp với nhu cầu của bạn. Chính trong trình tạo chính sách phải là người dùng / vai trò IAM mà bạn đang sử dụng để truy cập (các) đối tượng. ARN tài nguyên phải làarn:aws:s3:::mybucket/sub/dirs/are/supported/*

Tiếp theo, nhấp vào "Thêm tuyên bố" và làm theo. Cuối cùng, bạn sẽ nhận được một JSON đại diện cho chính sách. Dán phần này vào phần quản lý chính sách nhóm s3 của bạn tại "trang nhóm s3 của bạn trong AWS -> quyền -> chính sách nhóm".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.