如何使用Azure java sdk的资源管理API为AD应用程序分配读写权限以管理资源

时间:2015-11-26 04:51:12

标签: java azure azure-java-sdk

我正在尝试使用Azure Resource Manager API sdk连接到java。我有一个AD应用程序,它启用了“Windows服务管理API”权限。运行测试样本时,我在对特定资源组执行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

2 个答案:

答案 0 :(得分:3)

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

有关完整的详细信息,请参阅下文。

enter image description here

根据上图,步骤如下:

  1. 点击Resource groups
  2. 在过滤器项字段中输入资源组名称,然后单击所选资源组。
  3. 点击settings按钮。
  4. 点击Users按钮。
  5. 点击Add按钮。 enter image description here
  6. 点击Select a role,然后选择Reader角色。 enter image description here
  7. 点击Add users按钮,在搜索字段中输入广告应用名称,然后选择广告应用以点击select按钮。
  8. 点击OK标签页中的Add access按钮。
  9. 现在,您可以再次运行样本,返回正确的结果而不会出错。

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

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

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

      然后,再次运行样本,没有错误。

答案 1 :(得分:0)

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

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