无法以编程方式获取Azure存储帐户的密钥

时间:2017-08-01 22:11:59

标签: azure azure-java-sdk azure-storage-account

我正在尝试获取订阅中所有存储帐户的密钥。但我使用Azure Java SDK在其中一个存储帐户上获得此例外。

  

com.microsoft.azure.CloudException:状态代码403,{“error”:{“code”:“AuthorizationFailed”,“message”:“客户端'5c79ee27 - ######### - # ##### 91f8e3'对象id为'5c79ee27 - ########### - ##### 91f8e3'无权执行操作'Microsoft.Storage/storageAccounts/listKeys/action' over scope'/subscriptions/758ad253-#######f07/resourceGroups/spcwestus/providers/Microsoft.Storage/storageAccounts/grsstorag'。“}}:客户端'5c79ee27 - ######### ## - ##### 91f8e3'对象id为'5c79ee27 - ########### - ##### 91f8e3'无权执行操作'Microsoft.Storage/storageAccounts/listKeys / action'over scope'/ subscriptions / 758ad253 - ####### f07 / resourceGroups / spcwestus / providers / Microsoft.Storage / storageAccounts / grsstorag'。

对于大多数存储帐户,我设法获取密钥。但对于其中一些人来说,同样的错误会重演。这是什么意思?

1 个答案:

答案 0 :(得分:2)

根据您遇到的错误,服务器使用HTTP 403 状态代码响应您的请求,表明您的请求是禁止服务器。

  

HTTP 403状态代码

     

接收不适合的有效凭据的服务器   获取访问权应该响应403(Forbidden)状态码
  ([RFC7231]第6.5.3节)。

这很可能是由某些基于角色的访问控制引起的,这些基于角色的访问控制可防止您的帐户根据您指定的角色对某些存储帐户执行列表存储帐户密钥操作。< / p>

您可以使用下面的Azure PowerShell cmdlet验证分配给特定范围下的特定对象的角色是否具有列出存储帐户密钥的权限。

Get-AzureRmRoleAssignment -Scope "/subscriptions/758ad253-#######f07/resourceGroups/spcwestus/providers/Microsoft.Storage/storageAccounts/grsstorag" -ObjectId 5c79ee27-###########-#####91f8e3

更多信息请参考以下链接:

Use Role-Based Access Control to manage access to your Azure subscription resources