使用 Group.Create 权限创建 Azure AD 组
Posted
技术标签:
【中文标题】使用 Group.Create 权限创建 Azure AD 组【英文标题】:Create Azure AD group with Group.Create Permission 【发布时间】:2021-02-15 05:30:40 【问题描述】:我正在尝试使用服务主体通过 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 运行其余调用时,我收到以下权限错误
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】:希望这对其他人有所帮助 - 我在发布此内容后立即意识到了答案。
我已经添加了属性
"owners@odata.bind": ["https://graph.microsoft.com/v1.0/users/oooooooo-oooo-oooo-oooo-oooooooooooo"]
到json
发布数据。
删除此属性后,我可以仅使用 Group.Create
权限创建组。
添加权限User.Read.All
允许服务主体读取所有者的用户数据,因此足以创建具有任何必要所有者的组。
添加此 API 权限后,我的服务主体能够按预期创建组(与所有者)。
【讨论】:
以上是关于使用 Group.Create 权限创建 Azure AD 组的主要内容,如果未能解决你的问题,请参考以下文章