我正在尝试使用服务主体通过Graph API创建Azure AD组。目的是服务主体将在Pipelines运行中创建组。
我用来创建群组的呼叫是
az rest --method post \
--uri 'https://graph.microsoft.com/v1.0/groups' \
--body '{"description": "A description", "displayName": "MyAppGroup", "mailEnabled": false, "mailNickname": "test", "securityEnabled": true, "owners@odata.bind": ["https://graph.microsoft.com/v1.0/users/oooooooo-oooo-oooo-oooo-oooooooooooo"]}' \
--headers "Content-Type=application/json"
要绘制权限,我已将API权限Group.Create
绑定到我的服务主体。要了解我需要授予的权限,请关注以下页面:
使用Group.Create
权限,当我运行上述Graph API的rest调用时,出现以下权限错误
Forbidden({
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"date": "2020-11-02T13:31:35",
"request-id": "...",
"client-request-id": "..."
}
}
})
我完全理解,如果我要添加Directory.ReadWrite.All
,则可以创建该组,并且拥有所有必需的权限。但是,此权限受到了限制,将允许我的服务主体禁用Active Directory租户中的用户-我的组织现在允许这样做。因此,我无法授予我的服务负责人此权限。
我上面链接的文档向我暗示Group.Create
是足以使服务主体创建组的权限。
我的问题是我做错了什么,或者我缺少创建组的权限? Directory.ReadWrite.All
显然受到了广泛的限制,仅创建了一个AD安全组,因此使用它不是我的选择。
答案 0 :(得分:0)
希望这对其他人有帮助-发布此帖子后,我立即意识到了答案。
我添加了属性
"owners@odata.bind": ["https://graph.microsoft.com/v1.0/users/oooooooo-oooo-oooo-oooo-oooooooooooo"]
访问json
帖子数据。
删除此属性使我可以仅拥有Group.Create
权限来创建组。
添加权限User.Read.All
允许服务主体读取所有者的用户数据,因此足以创建具有任何必要所有者的组。
添加此API权限后,我的服务负责人能够按预期的方式(与所有者)创建组。