Az Storage Blob Upload-batch的最低特权权限

时间:2020-09-21 19:15:15

标签: azure azure-storage-blobs azure-cli

我们的CI管道需要将一些文件备份到Azure Blob存储。我正在这样使用Azure CLI:az storage blob upload-batch -s . -d container/directory --account-name myaccount

在授予服务主体提供者访问权限时,它会按预期工作。但是,我想锁定权限,以便允许服务主体添加文件,但不允许删除文件。所需的权限是什么?

我已经创建了一个自定义角色,赋予它与Storage Blob Data Contributor相同的权限,但要删除。此操作(以及直接使用Storage Blob Data Contributor角色)因Storage account ... not found而失败。好的,然后我继续向Blob服务添加更多读取权限。还不够,现在我正要做Microsoft.Storage/storageAccounts/listKeys/action。但是,如果我允许它访问存储密钥,那有什么意义呢?使用存储密钥,SP将具有对该帐户的完全访问权限,而我首先要避免使用该帐户。为什么az storage blob upload-batch请求密钥,我可以防止这种情况发生吗?

1 个答案:

答案 0 :(得分:1)

我创建了一个自定义角色,赋予它与Storage Blob Data Contributor减去delete相同的权限。此操作(以及直接使用Storage Blob数据贡献者角色)失败,并显示一个存储帐户...找不到。

我还可以重现您的问题,实际上您所做的可以。诀窍是命令的--auth-mode参数,如果未指定,默认情况下它将使用key,然后该命令将在您找到存储时列出您订阅中的所有存储帐户帐户,它将列出该帐户的密钥并使用该密钥上传Blob。 enter image description here

但是,Storage Blob Data Contributor minus delete没有列出存储帐户的权限,因此您会收到错误消息。

enter image description here

要解决此问题,只需在命令中指定--auth-mode login,然后它将使用您的服务主体的凭据来获取访问令牌,然后使用该令牌来调用REST API-{{3} }上传blob,原理请参见Put Blob

az storage blob upload-batch -s . -d container/directory --account-name myaccount --auth-mode login

Authorize access to blobs and queues using Azure Active Directory