通过 ServicePrincipal 将 Get-AzureRmRoleAssignment 用作应用程序所需的确切权限是什么

What are the EXACT perms needed to use Get-AzureRmRoleAssignment as an app via a ServicePrincipal

我看过帖子 ,其中对于允许 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 访问:

然后是 Microsoft Graph 访问:

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

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

首先,正如我在那种情况下的回答,Get-AzureRmRoleAssignment不仅需要 read access for role assignment 具有 Azure REST API 权限,还需要 Read directory data 具有 Azure AD 权限图 API。添加权限后,

添加 AAD 图API权限:

您还需要单击 Grant permissions 按钮以获得管理员同意

添加 Azure REST API 权限:

此外,在为您的 sp 添加 AAD 图 API 权限之前,确保您的 sp 具有 Azure REST API 的权限,方法是从 Subscriptions RBAC(我).

我测试了一下,成功了。