az storage blob upload-batch 的最低权限

res*_*ead 1 azure azure-cli azure-blob-storage

我们的 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需要钥匙?我可以防止这种情况发生吗?

Joy*_*ang 6

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

我也可以重现您的问题,实际上您所做的将会起作用。诀窍在于--auth-mode命令的参数,如果你没有指定它,它将使用key默认的,然后命令会列出你订阅中的所有存储帐户,当它找到你的存储帐户时,它会列出帐户的密钥并使用密钥上传 blob。 在此输入图像描述

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

在此输入图像描述

要解决这个问题,只需在命令中指定--auth-mode login,然后它会使用您的服务主体的凭据来获取访问令牌,然后使用该令牌调用 REST API - Put Blob上传 blob,原理请参阅授权访问 blob和使用 Azure Active Directory 的队列

az storage blob upload-batch -s . -d container/directory --account-name myaccount --auth-mode login
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述