如何授予服务主体对 Active Directory 组的读取访问权限?

问题描述

目前,我正在尝试从使用服务主体登录的 GitHub 操作读取 Active Directory 组的 ObjectId。

服务主体是具有以下额外权限的贡献者:

"Microsoft.Authorization/roleAssignments/write","Microsoft.Authorization/roleAssignments/read"

使用 Azure CLI 运行以下命令时:

az ad group show -g {NAME OF GROUP}

我收到以下输出

ValidationError: Insufficient privileges to complete the operation.
Error: Error: az cli script Failed.

我已尝试通过 Microsoft Graph API 通过以下权限向服务主体授予权限:

Directory.Read.All (Granted)
Group.Read.All (Granted)

然而,这些不足以授予读取权限。

解决方法

解决问题的两种方法(推荐第二种):

  1. 这个命令本质上调用的是Azure AD Graph而不是Microsoft Graph,所以Microsoft Graph的权限不会生效,这里你需要的是应用程序权限(不是委托权限Directory.Read.All 中的 Azure AD Graph

enter image description here

enter image description here

enter image description here

  1. 另一种方法是将 Azure AD admin role 提供给服务主体,例如Directory Readers,这个角色的权限小于上面的Directory.Read.All,而且AAD Graph是Supported legacy API,所以推荐第二种方式。赋予角色后,稍等片刻生效,即可正常工作。

enter image description here

enter image description here