Генерация presigned URL не требует сетевого обращения к хранилищу. SDK вычисляет подпись локально на основе имеющихся ключей доступа, поэтому ссылка создаётся мгновенно и без нагрузки на сервис хранения.
Presigned URL в S3: как выдать временный доступ к приватному объекту

Presigned URL — временная ссылка со встроенной криптографической подписью. Она открывает доступ к приватному объекту в S3-совместимом хранилище без передачи получателю постоянных учётных данных. Ссылка привязана к конкретному объекту и действует ограниченный срок: получатель может выполнить ровно то действие, для которого ссылка создана, и ничего сверх этого.
Отличие от публичного доступа: сам объект и бакет остаются приватными. Presigned URL не меняет права доступа к хранилищу, а предоставляет точечное и временное разрешение.
Выдаёт такую ссылку владелец объекта или сервис с правами на бакет: подпись формируется на основе его учётных данных (постоянных или временных).
В URL зашиты параметры подписи: алгоритм, дата создания, область действия, срок действия и сама криптографическая подпись. Схема известна как AWS Signature Version 4; её используют как AWS, так и S3-совместимые реализации.
Когда получатель обращается по такой ссылке, сервер хранилища проверяет подпись и срок действия. Если подпись верна и срок не истёк, запрос выполняется; если нет, доступ отклоняется. Объект при этом не нужно временно делать публичным: проверка происходит на уровне подписи запроса, а не настроек доступа к бакету.
Прямая загрузка файлов от клиента
Браузер или мобильное приложение загружает файл непосредственно в бакет, минуя backend-сервер приложения. Сервер не обрабатывает и не передаёт байты файла, а лишь выдаёт подписанную ссылку.
Временный доступ на скачивание
Presigned URL подходит для однократного или ограниченного по времени скачивания приватного файла — инвойса, отчёта, медиафайла — без открытия публичного доступа ко всему бакету.
Интеграция с внешними сервисами
Стороннему сервису, которому нужно один раз прочитать или записать конкретный объект, presigned URL даёт такую возможность без передачи постоянных ключей доступа.
Ограничение по методу и объекту
Presigned URL можно выпустить для разных операций — GET (скачивание) и PUT (загрузка) — без изменения прав доступа самого бакета. Ссылка привязана к конкретному методу, конкретному объекту и заданному сроку действия.
У каждого presigned URL задан срок жизни. По его истечении ссылка перестаёт работать: продлить её нельзя, нужно сгенерировать новую.
Схема AWS Signature Version 4 задаёт абсолютный потолок для параметра
ExpiresInExpiresInПри работе с постоянными учётными данными такого дополнительного ограничения схема не задаёт (кроме общего потолка в 7 дней), но во многих SDK срок по умолчанию ограничен коротким интервалом. В boto3 (AWS SDK for Python) значение по умолчанию — 3600 секунд (1 час).
В boto3 presigned URL генерируется методом
generate_presigned_url()- имя операции (для скачивания,
get_objectдля загрузки);put_object - параметры запроса — бакет и ключ объекта;
- срок действия ссылки через параметр .
ExpiresIn
Если
ExpiresInS3-совместимые сервисы реализуют тот же протокол подписи запросов, поэтому механизм работает и за пределами AWS — в частности, в S3-совместимом Object Storage. Логика та же: подпись вычисляется локально на основе ключей доступа, сервер хранилища проверяет её при обращении по ссылке.
Presigned URL действует в рамках прав того, кто его подписал. Если у подписавшего есть право удалить объект, presigned URL на удаление тоже сработает. Ссылка не создаёт новых прав — она делегирует уже имеющиеся.
Не выдавайте ссылку на избыточно долгий срок. Чем дольше срок действия, тем шире окно риска при утечке ссылки третьим лицам.
Сама ссылка — секрет. Любой, кто получил presigned URL до истечения его срока, может выполнить разрешённую операцию: скачать, загрузить или удалить объект — в зависимости от того, для какого метода ссылка подписана. Передавать такие ссылки нужно по защищённым каналам, а не как обычный публичный адрес.
Оставьте заявку, чтобы получить консультацию
Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.
Узнавайте о выходе новых статей в блоге первыми!
Будем держать в курсе новостей и облачных трендов


Почитать по теме

Bucket, Object и Key: как устроена модель хранения в S3-совместимых объектных хранилищах

Визуально-лингвистические модели: как ИИ учится понимать изображения и текст одновременно

