使用Group.Create权限创建Azure AD组

时间:2020-11-02 14:37:04

标签: azure active-directory azure-active-directory

我正在尝试使用服务主体通过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绑定到我的服务主体。要了解我需要授予的权限,请关注以下页面:

https://docs.microsoft.com/en-us/graph/api/group-post-groups?view=graph-rest-1.0&tabs=http#permissions

使用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安全组,因此使用它不是我的选择。

1 个答案:

答案 0 :(得分:0)

希望这对其他人有帮助-发布此帖子后,我立即意识到了答案。

我添加了属性

"owners@odata.bind": ["https://graph.microsoft.com/v1.0/users/oooooooo-oooo-oooo-oooo-oooooooooooo"]

访问json帖子数据。

删除此属性使我可以仅拥有Group.Create权限来创建组。

添加权限User.Read.All允许服务主体读取所有者的用户数据,因此足以创建具有任何必要所有者的组。

添加此API权限后,我的服务负责人能够按预期的方式(与所有者)创建组。