Skip to content

Подписанные ссылки для доступа к объектам

По умолчанию доступ к объектам в Object Storage имеет только владелец. Владелец может назначать права доступа другим пользователям.

Однако при работе с Object Storage могут возникнуть ситуации, когда доступ к объектам нужно предоставить любому пользователю из интернета, например:

  • необходимость открыть один или несколько объектов для публичного скачивания;
  • организация резервного копирования и миграции данных;
  • интеграция Object Storage со сторонними сервисами и приложениями.

Организовать ограниченный публичный доступ к объектам можно с помощью подписанных ссылок (presigned URL), которые включают подпись, подтверждающую авторизацию. Доступ к объекту по таким ссылкам может получить любой пользователь.

Подписанная ссылка дает доступ только к одному объекту. Время ее действия ограничено. С помощью подписанной ссылки можно выполнить только одну операцию: либо загрузить, либо скачать объект.

Подписанную ссылку может сгенерировать любой пользователь, у которого есть НМAC-ключ.

Структура подписанной ссылки

Подписанная ссылка имеет следующий вид:

https://storage.mwsapis.ru/bucket/file1.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=t9XS183JYMrbWlieuXRz%2F20241205%2Fru-central1%2Fs3%2Faws4_request&X-Amz-Date=20241205T075426Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=ecb7b343c27b4582124cc7e8271a53db20006b9d86dff33719db1edcebeb9998

В ее состав входит подпись, а также некоторые дополнительные параметры:

ПараметрОписание
X-Amz-Algorithm Алгоритм для генерации подписи
X-Amz-ExpiresВремя в секундах, в течение которого ссылка будет действительна. Может иметь значение от 60 (1 минута) до 604800 (7 дней) секунд
X-Amz-DateВремя и дата подписания запроса в формате YYYMMDDThhmmss. Должна совпадать с датой в параметре X-Amz-Credential
X-Amz-SignedHeadersЗаголовки, которые были использованы при создании подписи (через запятую)
X-Amz-SignatureКриптографическая подпись, которая создается с помощью секретного ключа и подтверждает, что запрос был авторизован
X-Amz-CredentialУчетные данные, которые включают идентификатор ключа доступа и дату. Имеют формат вида <идентификатор ключа доступа>/<дата в формате YYYY-MM-DD/<ru-central1>/<aws4-request>

Сгенерировать подписанную ссылку на скачивание объекта

Чтоб скачать объект, вставьте подписанную ссылку в адресную строку браузера. Скачивание начнется автоматически.

Также для скачивания можно использовать консольные утилиты — например, cURL:

bash
curl -o <имя, под которым будет сохранен объект> "<подписанная ссылка>"

Сгенерировать ссылку на загрузку объекта

Сгенерировать ссылку на загрузку объекта в Object Storage можно только с помощью SDK. В утилите AWS CLI генерация ссылок для загрузки не поддерживается.

Загрузить объект по подписанной ссылке можно с помощью утилиты cURL:

bash
curl -X PUT -T <путь к файлу в локальной системе> "<подписанная ссылка>"