2

我正在尝试Azure Resource Manager API使用javasdk 连接。我有一个启用了“Windows 服务管理 API”权限的 AD 应用程序。运行测试样本时,我在对特定资源组执行 get 调用时遇到以下错误。

Exception in thread "main" com.microsoft.windowsazure.exception.ServiceException: AuthorizationFailed: The client '1111-5a7b-4384-9fee-3a593a8c6875' with object id '1111115-5a7b-4384-9fee-3a593a8c6875' does not have authorization to perform action 'Microsoft.Resources/subscriptions/resourcegroups/read' over scope '/subscriptions/zzzzzzzzzzzz-ae67-ed0926abfe0d/resourcegroups/Group'.
at com.microsoft.windowsazure.exception.ServiceException.createFromJson

如何为用于连接资源管理的 AD 中的应用程序分配读写权限API

4

2 回答 2

3

正如@Gaurav Mantri 所说,如果ServicePrincipalExamplehttps://github.com/Azure/azure-sdk-for-java/blob/master/azure运行示例,则为广告应用分配读者角色的最简单方法是使用 Azure Preview Portal -mgmt-samples/src/main/java/com/microsoft/azure/samples/authentication/ServicePrincipalExample.java

有关执行此操作的完整详细信息,请参见下文。

在此处输入图像描述

根据上图,步骤如下:

  1. 单击Resource groups
  2. 在筛选项字段中输入资源组名称,然后单击选定的资源组。
  3. 单击settings按钮。
  4. 单击Users按钮。
  5. 单击Add按钮。 在此处输入图像描述
  6. 单击Select a role并选择Reader角色。 在此处输入图像描述
  7. 单击Add users按钮,在搜索字段中输入广告应用名称,然后选择广告应用以单击select按钮。
  8. 单击标签页OK中的按钮。Add access

现在,您可以再次运行示例,返回正确的结果且没有错误。

除了 Azure PowerShell,您还可以使用 Azure CLI 来执行此操作。

  1. 使用您的用户名和密码登录 azure cli,运行azure login
  2. 切换arm模式,运行azure config mode arm
  3. 角色分配,运行azure role assignment create --objectId <objectId> -o Reader -c /subscriptions/<subscriptionId>/>

注意:对于对象Id,可以运行azure ad sp show --search <ad-app-name>显示。

然后,再次运行示例而不会出现错误。

于 2015-11-27T14:12:04.973 回答
0

您需要做的是Reader在您的 Azure 订阅中分配您的应用程序角色。您可以使用 ARM API 以编程方式执行此操作,也可以使用它Azure PowerShell来执行此操作。

但是,对您来说最简单的方法是使用Azure Preview Portal. 您可能会发现此链接对于使用预览门户分配角色很有用:https ://azure.microsoft.com/en-in/documentation/articles/role-based-access-control-configure/ 。

于 2015-11-26T06:42:17.443 回答