【问题标题】:Least privilege permissions for az storage blob upload-batchaz storage blob upload-batch 的最低权限
【发布时间】:2020-09-21 19:15:15
【问题描述】:

我们的 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 请求密钥,我可以防止这种情况发生吗?

【问题讨论】:

    标签: azure azure-blob-storage azure-cli


    【解决方案1】:

    我创建了一个自定义角色,赋予它与存储 Blob 数据贡献者相同的权限减去删除。这(也只是直接使用存储 Blob 数据参与者角色)失败,存储帐户...未找到。

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

    但是,Storage Blob Data Contributor minus delete 没有列出存储帐户的权限,则会出现错误。

    要解决此问题,只需在命令中指定--auth-mode login,然后它将使用您的服务主体的凭据来获取访问令牌,然后使用该令牌调用 REST API - Put Blob 上传 blob ,原理见Authorize access to blobs and queues using Azure Active Directory

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

    【讨论】:

    • 谢谢,设置--auth-mode login 有效。您会认为这将是默认设置。 ;-)
    最近更新 更多