Не удается создать рабочую подпись общего доступа для файлов Azure - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужно создать SAS, чтобы я мог создать сеанс расширенного события SQL Azure.Для сеанса событий нужна цель хранения файловых данных через SAS, и я не могу создать работающую.Вот что я попробовал:

  • Идентифицировал учетную запись хранения, которая не является блобом;просто генералЯ почти уверен, что мне нужно общее, чтобы я мог создавать файлы напрямую.
  • Создал в нем общий файловый ресурс.
  • Используя обозреватель хранилища Azure, щелкните правой кнопкой мыши на этом общем файловом ресурсе и выберите «Получить общий доступ»Подпись доступа. "
  • Проверено Чтение, Запись, Список и создано.
  • Это дает мне URL https://mystorageacct.file.core.windows.net/xevents?st=2018-12-25T16%3A29%3A51Z&se=2018-12-29T16%3A29%3A00Z&sp=rwl&sv=2018-03-28&sr=s&sig=mysig
  • Если я просто попытаюсь перейти по этому URL или создатьCloudFile объект с ним в коде, я получаю часто замечаемую ошибку, Серверу не удалось аутентифицировать запрос.Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.Подпись не совпадает.Используемая строка для подписи: rwl 2018-12-25T16: 29: 51Z 2018-12-29T16: 29: 00Z / file / cs7f0fbc5104d4ax435dx883 / $ root 2018-03-28
  • Пробное добавление в comp=list&restype=container как предложено здесь .Никакой радости.
  • Гарантировано, что у меня нет используемой политики доступа.
  • Отправился на портал Azure и создал другой SAS на уровне учетной записи хранения (не смог найти способ создать его наобщий доступ к файлам).Это дало мне этот «URL-адрес SAS файловой службы»: https://mystorageacct.file.core.windows.net/?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2018-12-30T01:25:16Z&st=2018-12-26T17:25:16Z&spr=https&sig=mysig
  • Если я попробую этот URL-адрес, я получу Значение одного из параметров запроса, указанного в URI запроса, недопустимо. Я не знаюНе знаю, о каком параметре идет речь, они мне подходят, но я не знаю, что означает значение srt=sco.На основании этот документ srt является типом ресурса, но я не знаю, что указывает значение sco.

Очень запутанный, ищет предложения.

Для любых будущих читателей расширенные сеансы событий (из-за того, что они пишут файл) требуют контейнеров больших двоичных объектов, а не контейнеров общего назначения / файла / очереди.По крайней мере, я мог заставить их так работать.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы, вероятно, смущены тем, как представлены URL-адреса SAS.Фактически, полученные вами URL-адреса SAS представляют собой примеры того, как использовать токен SAS, их нельзя использовать напрямую.Следовательно, вы видели, что эти ошибки возникают.

  1. URL-адрес SAS уровня обслуживания, т. Е. Тот, который вы получили из Storage Explorer.

    Он имеет формат fileEndPoint/fileShareName?SASToken.SASToken дает нам разрешение работать со всеми файлами внутри указанной общей папки.Чтобы использовать токен, нам нужно добавить fileName в URL, т. Е. fileEndPoint/fileShareName/fileName?SASToken.

    comp=list&restype=container - это список больших двоичных объектов в контейнере BLOB-объектов, а не для общего ресурса.

  2. URL-адрес SAS уровня учетной записи, который вы получили с портала Azure.

    Он имеет формат fileEndPoint/?SASToken.Кроме того, нам нужно дополнить URL, чтобы сделать его действительным, то есть fileEndPoint/fileShareName/fileName?SASToken.Обратите внимание, что этот SASToken имеет все права на все ресурсы хранения, поскольку все варианты проверены.

    sco означает, что у нас есть разрешение на работу с сервисом, контейнером и объектом, что указывает на область действия разрешения. Подробности см. В doc

Я не знаком с сеансом расширенного события SQL Azure, но если вам нужно работать только с файлами внутри одного общего файлового ресурса, достаточно 1-го.

...