Подписанные ссылки для доступа к объектам
По умолчанию доступ к объектам в 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:
curl -o <имя, под которым будет сохранен объект> "<подписанная ссылка>"Сгенерировать ссылку на загрузку объекта
Сгенерировать ссылку на загрузку объекта в Object Storage можно только с помощью SDK. В утилите AWS CLI генерация ссылок для загрузки не поддерживается.
Загрузить объект по подписанной ссылке можно с помощью утилиты cURL:
curl -X PUT -T <путь к файлу в локальной системе> "<подписанная ссылка>"