【发布时间】:2017-04-06 07:52:02
【问题描述】:
尝试使用 Python SDK for Azure 解除分配虚拟机时出现错误。
基本上我会尝试类似:
credentials = ServicePrincipalCredentials(client_id, secret, tenant)
compute_client = ComputeManagementClient(credentials, subscription_id, '2015-05-01-preview')
compute_client.virtual_machines.deallocate(resource_group_name, vm_name)
pprint (result.result())
-> 异常:
msrestazure.azure_exceptions.CloudError: Azure Error: AuthorizationFailed
Message: The client '<some client UUID>' with object id '<same client UUID>' does not have authorization to perform action 'Microsoft.Compute/virtualMachines/deallocate/action' over scope '/subscriptions/<our subscription UUID>/resourceGroups/<resource-group>/providers/Microsoft.Compute/virtualMachines/<our-machine>'.
我不明白的是,错误消息包含我未在凭据中使用的未知客户端 UUID。 Python 是 2.7.13 版本,SDK 版本是昨天的。
我想我需要的是一个应用程序的注册,我这样做是为了获取凭据信息。我不太确定我需要向 IAM 注册应用程序的确切权限。要添加访问条目,我只能选择现有用户,而不是应用程序。
那么是否有任何编程方式来找出某个操作需要哪些权限以及我们的客户端应用程序具有哪些权限?
谢谢!
【问题讨论】:
-
请参阅此链接,了解如何将角色/权限分配给服务主体:docs.microsoft.com/en-us/azure/azure-resource-manager/…。 HTH。
-
您好,感谢您提供的链接。我知道。但是我仍然想知道是否有一种方法可以通过使用 API 来获取有关哪些权限是必要的更具体的信息。
-
当您遇到此类错误时,您可以查看此页面以了解您需要什么权限:docs.microsoft.com/en-us/azure/active-directory/…。您将看到您需要将角色“虚拟机贡献者”添加到凭证中。
-
感谢您的链接!
标签: python azure virtual-machine azure-management-api