Заранее подписанный URL-адрес дает доступ к объекту, указанному в URL-адресе, но только, если пользователь, который создал предварительно подписанный URL-адрес имеет доступ к этому объекту.
Заранее подписанные URL-адреса чаще всего используются, когда пользователю нужна возможность загрузки определенного объекта в бакет, но не нужны учетные данные или разрешения безопасности LinxCloud.
С помощью заранее подписанных URL любой пользователь может выполнять операции в Объектном хранилище.
Для создания заранее подписанного URL-адреса нужно предоставить:
- Учетные данные безопасности ( ключи доступа )
- Имя бакета
- Ключ объекта
- Метод HTTP
- Дату
- Время истечения срока действия
Заранее подписанные URL-адреса можно использовать несколько раз, однако только до указанного срока.
Примечание
Программно сгенерировать заранее подписанный URL-адрес можно используя REST API, интерфейс командной строки AWS и AWS SDK для Java, .NET, Ruby, PHP, Node.js и Python.
В SDK AWS по умолчанию используется подпись версии 4 для аутентификации запросов. При использовании пакетов SDK AWS с подписью версии 3, может потребоваться запросить у сервиса версию подписи 4.
Общий вид подписанного URL
https://hb.bizmrg.com/<имя_бакета>/<имя_ключа>?
X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Expires=<интервал времени в секундах>
&X-Amz-SignedHeaders=<список заголовков разделенный символами ";">
&X-Amz-Signature=<подпись>
&X-Amz-Date=<время в формате ISO 8601>
&X-Amz-Credential=<access-key-id>/<YYYYMMDD>/ru-msk/s3/aws4_request
Где
- X-Amz-Algorithm — Указание версии подписи и алгоритм ее вычисления. Значение — AWS4-HMAC-SHA256.
- X-Amz-Expires — Срок действия ссылки в секундах. Максимальное значение — 604800 секунд (7 дней).
- X-Amz-SignedHeaders — Заголовки запроса, которые необходимо подписать. Обязательно подписывать заголовок host и все заголовки x-amz-*, которые используются в запросе.
- X-Amz-Signature — Подпись запроса.
- X-Amz-Date — Время в формате ISO8601, например 20180719T000000Z. Дата должна по значению совпадать с датой в параметре X-Amz-Credential.
- X-Amz-Credential — Идентификатор для подписи формата //ru-msk/s3/aws4_request, где должна совпадать с датой, установленной в заголовке X-Amz-Date.
Составление подписанного URL
Чтобы получить заранее подписанный URL-адрес нужно:
- Вычислить подпись: составить строку и вычислить подпись с помощью алгоритма подписи строк.
- Составить подписанный URL для своего запроса.
Примечание
Чтобы составить подписанный URL-адрес нужны статические ключи доступа.
Примеры получения подписанной ссылки
При помощи S3 CLI можно сгенерировать заранее подписанную ссылку, используя команду:
aws s3 presign s3://<имя_бакета>/<название_ключа> --endpoint-url https://hb.bizmrg.com --expires-in <время_в_секундах>