我们的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
请求密钥,我可以防止这种情况发生吗?
我创建了一个自定义角色,赋予它与Storage Blob数据贡献者减去删除相同的权限。此操作(以及直接使用“存储Blob数据贡献者”角色)由于未找到存储帐户而失败。
我还可以重现您的问题,实际上您所做的是可以的。技巧是--auth-mode
命令的参数,如果您没有指定它,它将key
默认使用,然后该命令将列出您的订阅中的所有存储帐户,当找到您的存储帐户时,它将列出该帐户的密钥并使用该密钥上传Blob。
但是,由于Storage Blob Data Contributor minus delete
没有列出存储帐户的权限,因此您将收到错误消息。
要解决此问题,只需--auth-mode login
在命令中指定,然后它将使用您的服务主体的凭据来获取访问令牌,然后使用该令牌调用REST API-将Blob上载Blob,原理请参阅授权对Blob的访问使用Azure Active Directory进行排队。
az storage blob upload-batch -s . -d container/directory --account-name myaccount --auth-mode login
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句