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

How to grant a Service Principal read access to the Active Directory Groups?

目前我正在尝试从我使用服务主体登录的 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.AllAzure AD Graph.

  1. 另一种方式是给Azure AD admin role to the service principal, e.g. Directory Readers,这个role的权限小于上面的Directory.Read.All,AAD Graph是Supported legacy API,所以推荐第二种方式。赋予作用后,稍等片刻生效,即可正常使用