问题描述
目前,我正在尝试从使用服务主体登录的 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)
然而,这些不足以授予读取权限。
解决方法
解决问题的两种方法(推荐第二种):
- 这个命令本质上调用的是
Azure AD Graph
而不是Microsoft Graph
,所以Microsoft Graph的权限不会生效,这里你需要的是应用程序权限(不是委托权限)Directory.Read.All
中的Azure AD Graph
。
- 另一种方法是将 Azure AD admin role 提供给服务主体,例如
Directory Readers
,这个角色的权限小于上面的Directory.Read.All
,而且AAD Graph是Supported legacy API,所以推荐第二种方式。赋予角色后,稍等片刻生效,即可正常工作。