VK Cloud Solutions logo

Подписанные URL

Предварительно подписанный URL-адрес предоставляет доступ к объекту, указанному в URL-адресе, при условии, что создатель предварительно подписанного URL-адреса имеет разрешения на доступ к этому объекту.

Предварительно подписанные URL-адреса полезны, если необходимо чтобы пользователь / клиент мог загружать определенный объект в бакет, но не требуется, чтобы у них были учетные данные или разрешения безопасности MCS.

С помощью предварительно подписанных URL произвольный пользователь может выполнять в Объектном хранилище операции, например:

  • Скачать объект
  • Загрузить объект
  • Создать бакет

При создании предварительно подписанного URL-адреса необходимо предоставить :

  • Свои учетные данные безопасности ( ключи доступа )
  • Указать имя бакета
  • Ключ объекта
  • Метод HTTP
  • Дату
  • Время истечения срока действия

Предварительно подписанные URL-адреса действительны только в течение указанного срока. Возможно использование предварительно подписанного 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 следует:

  1. Вычислить подпись: составить строку и вычислить подпись с помощью алгоритма подписи строк.
  2. Составить подписанный URL для своего запроса.

Примечание

Для составления подписанного URL необходимо владеть статическими ключами доступа.

Примеры получения подписанной ссылки

С помощью S3 CLI можно сгенерировать предварительно подписанную ссылку следующей командой:

aws s3 presign s3://<имя_бакета>/<название_ключа> --endpoint-url http://hb.bizmrg.com --expires-in <время_в_секундах>