Thứ Hai, 06/07/2026, 17:00 (GMT+0)

Presigned URL là gì? Cách URL tạm thời bảo vệ dữ liệu Object Storage

Quay lại Trang chủ Blog
Trên trang này

Khi một file được lưu trong bucket ở chế độ private, người dùng thông thường không thể truy cập trực tiếp. Tuy nhiên, trong nhiều ứng dụng, doanh nghiệp vẫn cần cho khách hàng tải tài liệu, xem hình ảnh hoặc upload dữ liệu mà không muốn chuyển bucket sang public. Presigned URL là một trong những cơ chế được sử dụng để giải quyết bài toán này.

Vậy Presigned URL là gì, hoạt động như thế nào và cần lưu ý gì để sử dụng an toàn? Hãy cùng tìm hiểu trong bài viết dưới đây.

Presigned URL là gì?

Presigned URL là một URL đã được ký bằng thông tin xác thực và có thời hạn nhất định, cho phép người sở hữu URL thực hiện một hành động cụ thể đối với tài nguyên trên Object Storage mà không cần được cấp trực tiếp thông tin đăng nhập của hệ thống lưu trữ.

Có thể hiểu đơn giản, Presigned URL giống như một đường dẫn truy cập tạm thời.

Thay vì:

  • Public toàn bộ bucket;
  • Public một object lâu dài;
  • Cấp Access Key cho người dùng;
  • Yêu cầu người dùng có tài khoản cloud;

ứng dụng có thể tạo một URL chỉ có hiệu lực trong một khoảng thời gian nhất định.

Presigned-URL.jpg

Presigned URL gồm những thành phần nào?

Một Presigned URL nhìn bên ngoài vẫn giống URL thông thường nhưng thường có thêm nhiều tham số trong query string.

Tùy nền tảng Object Storage, cách biểu diễn có thể khác nhau. Tuy nhiên, về mặt logic thường có các thành phần sau.

Resource

Xác định tài nguyên mà người dùng được phép truy cập.

Ví dụ:

  • Bucket;
  • Object;
  • File ảnh;
  • File video;
  • Tài liệu;
  • File backup.

HTTP method

URL có thể gắn với một hành động cụ thể.

Các phương thức phổ biến gồm:

  • GET: đọc hoặc download dữ liệu;
  • PUT: upload object;
  • POST: gửi dữ liệu trong một số mô hình;
  • DELETE: xóa object nếu nền tảng và quyền cho phép.

Credential

URL được tạo dựa trên danh tính hoặc credential có quyền thực hiện request tương ứng.

Điều này không có nghĩa credential bí mật được đưa trực tiếp cho người dùng. Thay vào đó, hệ thống tạo chữ ký dựa trên credential đó.

Expiration

Xác định URL được phép sử dụng trong bao lâu.

Ví dụ:

  • 1 phút;
  • 5 phút;
  • 15 phút;
  • 1 giờ.

Thời hạn nên được lựa chọn dựa trên nhu cầu thực tế thay vì đặt quá dài.

Signature

Signature là thành phần quan trọng giúp Object Storage xác minh rằng request đã được tạo hoặc ủy quyền bởi một bên có credential phù hợp.

Google Cloud giải thích Signed URL chứa thông tin xác thực, bao gồm chữ ký trong query string, cho phép người không có credential riêng thực hiện một hành động nhất định trong thời gian giới hạn.

Presigned URL được sử dụng để làm gì?

Presigned URL (URL ký trước) được sử dụng để cấp quyền truy cập tạm thời vào một tài nguyên trên Object Storage mà không cần cung cấp trực tiếp thông tin xác thực của hệ thống cho người dùng.

Upload tệp trực tiếp lên Object Storage

Backend có thể tạo Presigned URL cho phép client tải ảnh, video, tài liệu hoặc các tệp khác trực tiếp lên Object Storage. Nhờ không phải trung chuyển toàn bộ dữ liệu qua application server, kiến trúc này có thể giúp giảm tải cho backend.

Chia sẻ tệp private trong thời gian giới hạn

Với object được đặt ở chế độ private, Presigned URL có thể cấp quyền tải xuống hoặc truy cập tệp trong một khoảng thời gian nhất định. Khi URL hết hạn, yêu cầu sử dụng URL đó sẽ không còn được chấp nhận.

Hạn chế việc chia sẻ thông tin xác thực

Client không cần nhận Access Key, Secret Key hoặc credential có phạm vi quyền rộng. Việc tạo chữ ký được thực hiện bởi hệ thống có quyền phù hợp, còn client chỉ nhận Presigned URL để thực hiện thao tác được cho phép.

Kiểm soát thao tác trên từng object

Presigned URL thường được tạo cho một object và thao tác cụ thể, chẳng hạn GET để tải xuống hoặc PUT để tải lên. Tùy dịch vụ lưu trữ và phương thức triển khai, hệ thống có thể áp dụng thêm các điều kiện đối với yêu cầu.

Presigned-URL.jpg

Ưu điểm của Presigned URL

Presigned URL giúp kiểm soát quyền truy cập vào dữ liệu trên Object Storage mà không cần chuyển object sang trạng thái public. Cơ chế này đặc biệt hữu ích với các ứng dụng cần chia sẻ, tải lên hoặc tải xuống file trong một khoảng thời gian nhất định.

Giữ object ở chế độ private

Một trong những ưu điểm quan trọng của Presigned URL là object không cần được public để người dùng có thể truy cập.

Thay vào đó, hệ thống tạo một URL đã được ký và cấp quyền thực hiện một thao tác cụ thể trong thời gian giới hạn. Nhờ đó, dữ liệu vẫn có thể được lưu trữ ở chế độ private trong khi người dùng được phép vẫn truy cập được khi cần.

Không cần cung cấp Access Key và Secret Key

Khi sử dụng Presigned URL, ứng dụng không phải chia sẻ trực tiếp Access Key, Secret Key hoặc thông tin xác thực của tài khoản lưu trữ cho client.

Client chỉ nhận URL đã được cấp quyền cần thiết. Cách tiếp cận này giúp hạn chế việc để lộ credential và giảm nguy cơ người dùng có được quyền truy cập rộng hơn yêu cầu thực tế.

Giới hạn thời gian truy cập

Presigned URL chỉ có hiệu lực trong một khoảng thời gian nhất định thay vì cung cấp quyền truy cập vĩnh viễn.

Thời hạn có thể được thiết lập tùy theo mục đích sử dụng, chẳng hạn URL tải tài liệu có thể tồn tại trong thời gian ngắn, sau đó tự hết hiệu lực.

Hỗ trợ upload và download trực tiếp

Presigned URL có thể được sử dụng để cho phép client upload hoặc download dữ liệu trực tiếp với Object Storage mà không nhất thiết phải truyền toàn bộ file qua application server.

Trong những kiến trúc phù hợp, cách này giúp giảm lưu lượng dữ liệu trung chuyển qua backend, từ đó giảm tải cho máy chủ ứng dụng khi xử lý các file có dung lượng lớn hoặc nhiều yêu cầu đồng thời.

Phù hợp với ứng dụng web và mobile

Presigned URL giúp phân tách rõ vai trò giữa backend và quá trình truyền dữ liệu. Backend có thể tập trung vào các nhiệm vụ như xác thực người dùng, kiểm tra quyền truy cập và tạo Presigned URL, trong khi client trao đổi file trực tiếp với Object Storage.

Mô hình này phù hợp với nhiều ứng dụng web và mobile cần xử lý ảnh, video, tài liệu, file đính kèm hoặc các dữ liệu có dung lượng lớn.

Presigned-URL-2.jpg

Hạn chế và rủi ro của Presigned URL

  • Ai có URL đều có thể sử dụng: Trong thời gian còn hiệu lực, người sở hữu Presigned URL có thể thực hiện thao tác được cấp quyền.
  • Có nguy cơ bị lộ URL: Đường dẫn có thể vô tình xuất hiện trong log, email, tin nhắn, analytics hoặc website bên thứ ba.
  • Thời hạn càng dài, rủi ro càng cao: Nếu URL bị lộ, thời gian hiệu lực dài sẽ làm tăng khoảng thời gian có thể bị khai thác. Vì vậy, chỉ nên đặt thời hạn đủ để hoàn thành thao tác.
  • Phụ thuộc vào quyền của bên tạo URL: Presigned URL chỉ cấp được các quyền mà tài khoản tạo URL đang có. Tài khoản này nên tuân theo nguyên tắc Least Privilege.

Presigned URL và Public URL khác nhau thế nào?

Hai loại URL này dễ bị nhầm lẫn vì cuối cùng người dùng đều mở một đường dẫn để truy cập dữ liệu.

Tuy nhiên, cơ chế quyền hoàn toàn khác nhau.

Tiêu chí

Presigned URL

Public URL

Trạng thái objectCó thể giữ privateThường phải public
Chữ kýKhông bắt buộc
Thời gian sử dụngCó giới hạnThường không giới hạn
Credential của clientKhông cầnKhông cần
Kiểm soát hành độngCó thể gắn với request cụ thểThường ít linh hoạt hơn
Nguy cơ chia sẻ ngoài ý muốnCó nhưng giới hạn theo thời gian/quyềnCó thể tồn tại lâu dài
Trường hợp sử dụngFile private, upload/download có kiểm soátNội dung công khai

Ví dụ:

Logo của doanh nghiệp có thể sử dụng Public URL.

Nhưng hợp đồng của từng khách hàng nên được bảo vệ bằng cơ chế truy cập phù hợp thay vì public object.

Presigned URL và Signed URL có giống nhau không?

Hai thuật ngữ này thường đề cập đến cùng một ý tưởng chung: sử dụng URL có chữ ký để cấp quyền truy cập giới hạn vào một tài nguyên.

Tuy nhiên, tên gọi phụ thuộc vào nền tảng.

AWS S3

AWS sử dụng thuật ngữ:

Presigned URL

AWS S3 cho phép tạo Presigned URL để upload hoặc download object.

Google Cloud Storage

Google Cloud sử dụng thuật ngữ:

Signed URL

Theo Google Cloud, Signed URL cấp quyền và thời gian giới hạn để thực hiện request đối với tài nguyên Cloud Storage.

Vì vậy không nên hiểu Presigned URL là công nghệ chỉ tồn tại trên AWS.

Trong các nền tảng Object Storage khác, cơ chế tương tự có thể được triển khai với tên gọi hoặc phương thức ký khác nhau.

Azure Storage

Microsoft Azure sử dụng Shared Access Signature – SAS để cấp quyền truy cập giới hạn vào tài nguyên Storage.

SAS cho phép xác định:

  • Tài nguyên được truy cập;
  • Quyền được cấp;
  • Khoảng thời gian quyền có hiệu lực.

Về mục tiêu, SAS có nhiều điểm tương đồng với URL được ký, nhưng không nên coi SAS và AWS Presigned URL là hai tên gọi hoàn toàn giống nhau vì cơ chế triển khai của từng nền tảng khác biệt.

Câu hỏi thường gặp về Presigned URL

Presigned URL có phải Public URL không?

Không. Presigned URL cho phép truy cập một tài nguyên private trong phạm vi quyền và khoảng thời gian được quy định. Public URL thường gắn với tài nguyên có thể truy cập công khai.

Presigned URL có cần đăng nhập không?

Người sử dụng Presigned URL thường không cần trực tiếp cung cấp credential của Object Storage. Tuy nhiên, ứng dụng vẫn nên xác thực người dùng trước khi cấp URL nếu dữ liệu cần được bảo vệ.

Presigned URL có thể dùng để upload file không?

Có. Một trong những use case phổ biến là backend tạo Presigned URL rồi cho client upload trực tiếp lên Object Storage.

Presigned URL có thể download file không?

Có. Download object private là một trong những trường hợp sử dụng phổ biến nhất của Presigned URL.

Presigned URL hết hạn thì sao?

Khi URL hết hiệu lực, request mới sử dụng URL đó sẽ không còn được chấp nhận theo điều kiện của nền tảng.

Có nên đặt Presigned URL tồn tại lâu không?

Thông thường không nên đặt thời hạn dài hơn nhu cầu thực tế. Expiration ngắn giúp giảm khoảng thời gian URL có thể bị sử dụng nếu bị lộ.

Presigned URL có thay thế IAM không?

Không. Credential hoặc principal tạo URL vẫn phải có quyền phù hợp. Presigned URL chỉ là một cách ủy quyền tạm thời cho một request hoặc tài nguyên cụ thể.

Kết luận

Presigned URL là cơ chế cho phép cấp quyền truy cập có thời hạn đến tài nguyên trên Object Storage mà không cần public dữ liệu hoặc chia sẻ trực tiếp credential với người dùng.

Cơ chế này đặc biệt phù hợp cho các trường hợp như upload file, download tài liệu private, chia sẻ dữ liệu tạm thời và xây dựng ứng dụng web/mobile sử dụng Object Storage.

Tuy nhiên, Presigned URL vẫn cần được bảo vệ như một thông tin nhạy cảm. Doanh nghiệp nên đặt expiration phù hợp, áp dụng least privilege, sử dụng HTTPS và xác thực người dùng trước khi tạo URL.

#Kiến thức Cloud
#Kiến thức Cloud
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc