Создание ключа SAS учетной записи хранения Azure с помощью PowerShell

Я пытаюсь создать общий ключ доступа к учетной записи хранения Azure, чтобы я мог использовать его с azcopy для извлечения файлов из всех контейнеров в моей учетной записи хранения.

Я успешно сгенерировал ключ с помощью портала Azure и доказал, что он работает с помощью azcopy.

Но я изо всех сил пытаюсь получить эквивалентный ключ для создания с помощью PowerShell, который работает.

Запрос Powershell az storage container generate-sas --account-name $SaName --account-key $accountKey --permissions 'rl' --start $start --expiry $expiry --name $SaName --https-only --output tsv

Результат портала Azure (GUI)

sv=2019-12-12
&ss=b
&srt=sco
&sp=rl
&se=2021-02-08T17:40:26Z
&st=2021-02-08T09:40:26Z
&spr=https
&sig=REDACTED

Результат Powershell

st=2021-02-08T17%3A17%3A47Z
&se=2021-02-08T17%3A47%3A47Z
&sp=rl
&spr=https
&sv=2018-11-09
&sr=c
&sig=REDACTED

Я предполагаю, что первая проблема заключается в том, что я не нашел способ добавить отсутствующие и ss = b srt = sco (not sr), похоже, эти параметры недоступны, возможно, если бы они были там, у sig был бы правильный хэш.

Я пробовал это в Azure Cloudshell, а также на своем компьютере с az 1.12.1.


person Frazer    schedule 08.02.2021    source источник
comment
Похоже, что в первом примере встроенной справки для New-AzStorageAccountSASToken показано, как создать токен уровня учетной записи. Вы уже пробовали это?   -  person TheMadTechnician    schedule 09.02.2021


Ответы (1)


Команда создает контейнер хранилища az -sas - это не команда powershell, это команда azure cli.

Поскольку на портале Azure вы создаете account level sas-token, но в azure cli вы фактически создаете container level sas-token с помощью az storage container generate-sas.

Чтобы создать account level sas-token, вы должны использовать эту команду azure cli: учетная запись хранения az generate-sas.

Пример, как показано ниже:

az storage account generate-sas --account-key "xxxxx"  --account-name your_storage_account_name --expiry 2020-02-10 --https-only --permissions rl --resource-types sco --services b

Вот результат теста, сгенерированы ss=b srt=sco:

введите описание изображения здесь

Если вы хотите использовать powershell для создания account level sas-token, используйте эту команду powershell: New-AzStorageAccountSASToken. Пример приведен ниже (вы можете добавить другие параметры по своему усмотрению):

$account_name = "yy1"

$account_key = "xxxxxxx"

$context = New-AzStorageContext -StorageAccountName $account_name -StorageAccountKey $account_key

#you can also add other parameter as per your need, like StartTime, ExpiryTime etc.
New-AzStorageAccountSASToken -Service Blob -ResourceType Service,Container,Object -Permission rl -Context $context

Вот результат теста:

введите описание изображения здесь

person Ivan Yang    schedule 09.02.2021
comment
Благодаря az Storage account generate-sas работает. Для информации вы можете запускать команды z в сеансе PowerShell в Windows, если у вас установлен модуль z, как и у меня, но во время выполнения он будет запускаться из функции Azure. - person Frazer; 09.02.2021