微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 PowerShell 生成 Azure 存储帐户 SAS 密钥

如何解决使用 PowerShell 生成 Azure 存储帐户 SAS 密钥

我正在尝试生成一个 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 进行了尝试

解决方法

命令 az storage container generate-sas 不是 powershell 命令,而是 azure cli command

因为在 Azure 门户中,您生成的是 container level sas-token,但在 azure cli 中,您实际上是通过使用 az storage container generate-sas 生成 account level sas-token

要生成 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 ,您应该使用此 azure cli 命令:az storage account generate-sas

示例如下:

ss=b srt=sco

这里是测试结果,生成了account level sas-token

enter image description here

如果您想使用 powershell 生成 $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 ,请使用此 powershell 命令:New-AzStorageAccountSASToken。示例如下(您可以根据需要添加其他参数):

{{1}}

测试结果如下:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。