В нашем конвейере CI / CD я пытаюсь автоматизировать создание токенов SAS для контейнеров, используемых другими системами. Каждый маркер SAS «указывает» на политику общего доступа.
Моя первая мысль заключалась в том, чтобы добавить это в наш сценарий пост-развертывания PowerShell, чтобы мы могли добавлять в сценарий создание новых контейнеров (включая токены SAS и политики общего доступа) по мере расширения. Все работает, и я получаю и политику, и сгенерированный токен SAS, но я застрял на одном моменте, который отличается от того, когда я генерирую токен SAS через портал Azure. Я надеюсь, что кто-то сможет пролить свет на это несоответствие.
Сценарий PowerShell (запускается как часть конвейера развертывания в VSTS)
Select-AzureRmSubscription -SubscriptionId $useSubscription
Set-AzureRmContext -SubscriptionId $useSubscription
$accountKeys = Get-AzureRmStorageAccountKey -ResourceGroupName $useResourceGroupName -Name $storageAccountName
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value
$expiryTime = (get-date).AddYears(1)
$permission = "rwl"
New-AzureStorageContainerStoredAccessPolicy -Context $storageContext -Container "test-container" -Policy "testPolicy" -ExpiryTime $expiryTime -Permission $permission
$sasToken = New-AzureStorageContainerSASToken -Name "test-container" -Policy "testPolicy" -Context $storageContext
$sasToken = $sasToken.substring(1)
Write-Host "SAS token (ref shared access policy): $sasToken"
$sasToken2 = New-AzureStorageContainerSASToken -Context $storageContext -Container tibp-userprofiles -Permission rwl
Write-Host 'SAS token: ' $($sasToken2)
На данный момент вывод:
SAS token (ref shared access policy): sv=2015-04-05&sr=c&si=tibpsaptest2&sig=rkzN3ocRZUrz5ub2IcVPKGIARvw3%2B2rh1G3yKmnSXhA%3D
SAS token: ?sv=2015-04-05&sr=c&sig=9kMVFE7U61P1ikK27ylXqXiIkSaj71OImdM88RrtJfs%3D&se=2017-05-22T08%3A40%3A39Z&sp=rwl
У меня вопрос: почему sv установлен на 2015-04-05 с использованием командлета Pwershell, а не в новейшей версии 2016-05-31? Я получаю тот же результат для sv, если сгенерирую чистый токен SAS (не поддерживаемый политикой общего доступа).
Если я сгенерирую токен SAS с помощью портала Azure (используя ту же учетную запись хранения и контейнер), я получу sv, установленный на новейшую версию (2016-05-31).
Вывод с использованием портала Azure:
?sv=2016-05-31&ss=b&srt=sco&sp=rwl&se=2017-05-22T17:36:58Z&st=2017-05-22T09:36:58Z&spr=https&sig=UTibTnwmwYl3k3iIYj63VbYItL5eV4K4t6PEZ7ihi3E%3D
Линия CI / CD запускается с использованием VSTS, и я использую стандартную задачу Azure PowerShell для запуска сценария.