2012-02-14 33 views
7

Thông thường khi tôi tải lên lưu trữ S3, tôi sử dụng một AmazonS3Client như thế này:Đang tải lên đến Amazon S3 không được tiếp cận & khóa bí mật

var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey, s3Config) 

này hoạt động tốt để sử dụng nội bộ nhưng bây giờ tôi đang xem xét cung cấp một ứng dụng để người dùng bên ngoài và không muốn truy cập của chúng tôi (sacret) & các khóa bí mật ở ngoài đó. Tôi đã thiết lập một thùng S3 với chính sách nhóm cho phép tải lên (PutObject) từ người dùng ẩn danh nhưng làm thế nào để tôi sử dụng Amazon SDK ngay bây giờ? Tôi dường như không thể tìm thấy bất kỳ cách nào mà không cung cấp truy cập và khóa bí mật.

Trả lời

6

Bạn chỉ cần vượt qua null cho accessKeysecretKey và bạn có thể sử dụng SDK cho bất kỳ hoạt động được phép ẩn danh nào.

Kiểm tra điều này related question of mine nó bao gồm một phản ứng chính thức từ một nhân viên Amazon từ diễn đàn nhà phát triển của họ! thông tin liên quan từ các câu hỏi liên quan:

Đây là từ một nhân viên Amazon chính thức trên diễn đàn của họ:

Tính đến phiên bản 1.3.8.0 của SDK bạn có thể vượt qua null cho việc tiếp cận và khóa bí mật và SDK sẽ bỏ qua quá trình ký và thử các hoạt động như GetObject như một hoạt động công khai.

Norm

+2

Wow! Điều đó có vẻ là một phương pháp rõ ràng và đơn giản. Điều tốt bạn cũng đặt câu hỏi hoặc tôi sẽ được kìm nén vì không cố gắng này trước khi yêu cầu. :) Hãy để tôi thử. – BlueVoodoo

+0

@BlueVoodoo Hehe, rất vui được giúp hai lần! Cả hai trong yêu cầu và trả lời! Tôi hơi ngạc nhiên khi họ không cung cấp một hàm tạo chỉ yêu cầu s3Config, mà không cần phải chỉ định 'accessKey' và' secretKey' ... Tôi cảm thấy điều đó sẽ trực quan hơn! – InvertedAcceleration

+1

Hmmm. Tôi đã nhận được một ArgumentNullException khi cố gắng khởi tạo tải lên nhiều phần của tôi. Lý do: "Khóa truy cập bí mật AWS được chỉ định là NULL!". Mã trông giống như sau: Bắt đầuMultipartUploadResponse initResponse = s3Client.InitiateMultipartUpload (initRequest); – BlueVoodoo

6

Bạn không nên mở một cái xô lên cho ghi công, có khả năng. Bạn đang mở cho rất nhiều cuộc tấn công và cần theo dõi chặt chẽ các tệp nhật ký của mình, v.v.

Giải pháp tốt hơn là giữ quyền truy cập riêng tư mặc định trên nhóm, sau đó tạo người dùng IAM chỉ tải lên (và có lẽ tải xuống) quyền cho khu vực bắt buộc. Sau đó, khi ai đó muốn tải lên tệp, bạn có thể sử dụng cuộc gọi tới máy chủ của bạn có các khóa IAM để tính và trả lại 'bài đăng đã ký trước' cho phép ứng dụng khách của bạn đăng tệp mới lên máy chủ. Sau đó, bạn có thể sử dụng bất kỳ công cụ xác thực nào bạn muốn trên máy chủ của mình để quyết định có cho phép ai đó tải lên hay không, kể cả không có xác thực - nhưng có phát hiện lạm dụng. Khi bạn thực hiện điều này, khóa bí mật cho người dùng IAM sẽ không bao giờ được gửi xuống máy khách, có thể nằm trong phiên gỡ lỗi, v.v.

Vì toàn bộ bài đăng được ký trước, bạn cũng có thể quyết định nơi tệp được phép đi, tên tệp được tải lên, v.v. và trả về trong phản hồi của máy chủ.

+0

Cảm ơn lời khuyên của bạn. Sẽ đọc về điều này. – BlueVoodoo

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