使用PowerShell服务主体创建带所有者的Azure安全组失败
问题描述
我正尝试通过PowerShell使用服务主体创建Azure安全组。服务主体已配置包含microsoft.directory/groups/create权限的自定义角色,允许创建安全组和Microsoft 365组(不含可分配角色的组),且已配置Graph API相关权限。
创建无所有者的安全组时请求正常完成:
执行命令:New-MgGroup -BodyParameter $params对应的参数:
$params = @{ description = "Group with designated owner DJER0105" displayName = "Group Test 20-07" mailEnabled = $false mailNickname = "GroupTest20-07" securityEnabled = $true }尝试添加所有者时收到403错误:
"Insufficient privileges to complete the operation."
此时参数:$params = @{ description = "Group with designated owner DJER0105" displayName = "Group Test 20-07" mailEnabled = $false mailNickname = "GroupTest20-07" securityEnabled = $true "owners@odata.bind" = @( "https://graph.microsoft.com/v1.0/users/47f89f36-2ad7-45ee-a1ac-3cd0b0e021df" ) }尝试创建组后再添加所有者,执行以下命令仍出现相同403错误:
$params = @{ "@odata.id" = "graph.microsoft.com/v1.0/users{id}" } New-MgGroupOwnerByRef -GroupId $groupId -BodyParameter $params
使用普通用户账号执行上述操作均可正常完成,需要实现创建安全组并将其他用户设为所有者(而非自身为所有者),请问该如何解决?
解决方案
1. 补充Graph API应用权限
仅microsoft.directory/groups/create权限不足以添加组所有者,需要给服务主体添加以下应用权限(注意不是委派权限):
Group.ReadWrite.All:允许读写所有组资源,包含添加所有者操作- 或更精细的
GroupMember.ReadWrite.All:专门用于读写组成员及所有者
2. 更新Azure AD自定义角色权限
如果使用自定义角色,除了microsoft.directory/groups/create,还需要添加microsoft.directory/groups/members/update权限——所有者属于特殊的组成员类型,该权限允许更新组的成员关系。
3. 等待权限生效并重新获取令牌
添加权限后,需等待15-30分钟让权限同步生效,之后重新运行PowerShell的服务主体连接命令,刷新令牌后再尝试操作。
4. 修正命令中的URL错误
创建组后添加所有者的命令里,@odata.id的URL缺少https://前缀,正确参数应为:
$params = @{ "@odata.id" = "https://graph.microsoft.com/v1.0/users/{user-id}" } New-MgGroupOwnerByRef -GroupId $groupId -BodyParameter $params
内容的提问来源于stack exchange,提问作者Fernando Ahumada
相关产品推荐
相关产品推荐

