Hướng dẫn tạo S3 presign URL

Share and Enjoy !

Shares

Mở đầu

Theo mặc định, tất cả các object trên S3 bucket đều ở trạng thái private – nghĩa là chỉ owner của bucket mới có quyền truy cập vào đối tượng. Bài toán đặt ra, nếu bạn chỉ muốn cấp quyền truy cập cho một hoặc vài object mà không muốn public cả bucket thì làm thế nào?

=> Anh em có thể sử dụng IAM policy để cung cấp cho người dùng (AWS user) những quyền nhất định trên bucket. Tuy nhiên nếu muốn một người dùng bất kỳ (không cần thông tin IAM User đăng nhập AWS) tương tác với một object, anh em có thể nghĩ đến presigned URL.

Lab steps

Task 1: Tạo bucket trên S3

1. Truy cập Storage >> S3 từ menu Services

2. Tại giao diện của S3, nhấn chọn Create bucket và điền lần lượt vào các trường sau cho bucket details.

  • Bucket name: đặt tên cho bucket (S3 bucket name mang tính định danh trên tất cả các region của AWS nên phải duy nhất và không trùng lặp).
  • Region: Chọn Singapore (ap-southeast-1)
  • Object ownership: Chọn ACLs disabled

Những phần khác giữ nguyên như mặc đinh và nhấn Create bucket.

3. Sau khi quá trình taọ bucket hoàn tất, hệ thống sẽ tự động chuyển đến giao diện chứa danh sách tất cả các bucket đang có trong tài khoản AWS của bạn.

Task 2: Upload object lên S3 Bucket

1. Nhấn vào bucket name để, ngay tại tab Object, nhấn vào upload.

2. Tại giao diện kế tiếp, nhấn add file và chọn một hoặc nhiều file từ local và nhấn Upload.

3. Sau khi quá trình upload hoàn tất sẽ hiện thông báo kèm danh sách các object tương tự như ví dụ bên dưới.

4. Nhấp chọn vào đối tượng Amazon-S3.png, tìm và copy Object URL, sau đó thử truy cập bằng trình duyệt web, chắc chắn chúng ta sẽ nhận thông báo “Access Denied” 😀

Task 3: Chia sẻ một object bằng presign-URL

Pre-sign URL sử dụng ba tham số sau để giới hạn quyền truy cập cho người dùng:

  • Bucket: Chứa các đối tượng – nơi đối tượng nằm trong đây.
  • Key: Tên của đối tượng.
  • Expires: thời hạn có hiệu lực của URL (đơn vị giờ hoặc phút).

1. Từ danh sách các object đã tải lên ở phần trước, anh em thử nhấn vào một file bất kỳ, ví dụ Amazon-S3.png để xem chi tiết các thành phần của object này như owner, size, link, …

2. Nhấn chọn vào Share with a presigned URL từ combobox Object actions

3. Trên pop-up cấu hình presigned URL, lần lượt chọn và điền vào những tham số sau:

  • Time interval until the presigned URL expires: có thể chọn Minutes hoặc Hours, tùy vào khoảng thời gian thực tế anh em muốn chia sẻ object này mà chọn đơn vị cho phù hợp, trong bài lab này tôi chọn minutes cho nhanh.
  • Number of minutes (hoặc Number of hours): điền chính xác số phút (hoặc số giờ)  presigned URL có hiệu lực, ví dụ tôi thiết lập 5 phút.

Xong xuôi đâu đó nhấn Create presigned URL để AWS khởi tạo link.

4. Nhấn Copy presigned URL từ thông báo khởi tạo link thành công của AWS (anh em để ý link này khác với Object URL)

Task 4: Kiểm tra hoạt động của presigned URL

1. Truy cập presigned URL đã copy ở bước trên từ trình duyệt web, nếu thành công sẽ hiển thị nôi dung của object như bên dưới.

2. Sau 5 phút, thử truy cập lại presigned URL sẽ nhận về thông báo “Access Denied. Request has expired” như hình bên dưới (vì link đã hết hiệu lực).

3. Sau cùng, anh em nhớ xóa resource đã tạo đi nhé, bắt buộc phải hình thành thói quen này mỗi khi làm lab, nếu không muốn trả giá bằng chính “máu” của anh em 😥 

Lời kết

Như vậy là mình đã hoàn thành bài lab tạo presigned URL cho một object trên S3 bucket.

Nếu có bất kỳ thắc mắc, góp ý về nội dung bài viết hoặc anh em có thêm những tip hay khác có thể chia sẻ dưới phần bình luận nhé.

Trong thời gian tới, mình sẽ cố gắng bổ sung nhiều lab khác về chủ để S3 vào serie SAA Hands-on Labs, anh em nhớ theo dõi nhé.

Share and Enjoy !

Shares
Giới thiệu Hiệp Phạm 135 bài viết
Hiệp hiện đang là thành viên nhóm tác giả của HIEPSHARING.COM. Thích tìm hiểu, nghiên cứu Ethical Hacking, SysAdmin, DevOps và những công nghệ mới. Phương châm sống của mình: "Chỉ cần bản thân không bỏ cuộc, chậm chút cũng không sao."

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*