1

我看过类似这样的帖子,其中对于允许 ServicePrincipal 在使用 Login-AzureRmAccount 登录时调用 Get-AzureRmRoleAssignment 所需的确切权限存在混淆。

在我的情况下,如果我使用 -debug 标志调用 Get-AzureRmRoleAssignment,我可以在 HTTP 响应的正文中捕获以下错误:

Body:
{
  "odata.error": {
    "code": "Authorization_RequestDenied",
    "message": {
      "lang": "en",
      "value": "Insufficient privileges to complete the operation."
    }
  }
}

我为应用程序设置了权限,如下所示......首先是 Azure AD 访问:

Azure AD 权限

然后 Microsoft Graph 访问:

MS Graph烫发

这仍然会给出 authZ 失败错误。我什至尝试过一个实验,我为每个 API 赋予应用程序所有权限,但仍然没有用。

少了什么东西?究竟需要哪些权限才能允许只读编程访问以列出此调用的角色分配?

4

1 回答 1

0

首先,正如我在那种情况下回答的那样,Get-AzureRmRoleAssignment不仅需要read access for role assignmentAzure REST API 权限,还需要Read directory dataAzure AD Graph API 权限。添加权限后,

添加 AAD 图形 API 权限:

您还需要单击Grant permissions按钮进行管理员同意

在此处输入图像描述

添加 Azure REST API Persmssions:

此外,在为您的 sp 添加 AAD 图形 API 权限之前,请确保您的 sp 具有 Azure REST API 的权限,方法是从订阅 RBAC(IAM) 为其分配一个角色(例如参与者角色)。

在此处输入图像描述

我对此进行了测试并成功了。

于 2018-04-10T05:55:12.080 回答