使用 PowerShell 生成 Azure 存储帐户 SAS 密钥
Posted
技术标签:
【中文标题】使用 PowerShell 生成 Azure 存储帐户 SAS 密钥【英文标题】:Generate Azure Storage Account SAS Key using PowerShell 【发布时间】:2021-05-12 09:02:29 【问题描述】:我正在尝试生成一个 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 进行了尝试
【问题讨论】:
看起来像New-AzStorageAccountSASToken
的内置帮助中的第一个示例显示了如何制作帐户级别的令牌。你试过了吗?
【参考方案1】:
命令az storage container generate-sas不是powershell命令,是azure cli command。
因为在 Azure 门户中,您正在生成一个 account level sas-token
,但在 azure cli 中,您实际上是在使用 az storage container generate-sas 生成一个 container level sas-token
。
要生成account level sas-token
,您应该使用这个 azure cli 命令:az storage account 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
这是测试结果:
【讨论】:
感谢 az storage account generate-sas 工作。有关信息,您可以在 Windows 上的 powershell 会话中运行 az 命令,如果您像我一样安装了 az 模块,但在运行时这将从 Azure 函数运行以上是关于使用 PowerShell 生成 Azure 存储帐户 SAS 密钥的主要内容,如果未能解决你的问题,请参考以下文章
错误:尚未正确初始化 Azure PowerShell 上下文。请导入模块并重试
Azure 函数 - Powershell 和 Azure 存储表(插入或替换)
使用 Powershell 列出所有 Azure 存储帐户和网络规则
使用 powershell 在 Azure 中不同订阅的存储容器之间复制 blob