0

我正在尝试生成一个 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 尝试过这个

4

1 回答 1

2

The command az storage container generate-sas is not powershell command, it's azure cli command.

Because in Azure portal, you're generating an account level sas-token, but in azure cli, you're actually generating a container level sas-token by using az storage container generate-sas.

To generate an account level sas-token, you should use this azure cli command: az storage account generate-sas.

The sample like below:

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

Here is the test result, the ss=b srt=sco are generated:

在此处输入图像描述

If you want to use powershell to generate an account level sas-token, please use this powershell command: New-AzStorageAccountSASToken. The sample is as below(you can add other parameters as per your need):

$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

Here is the test result:

在此处输入图像描述

于 2021-02-09T01:26:18.387 回答