如何在Power Automate中编程检测Entra ID角色及查询Security Reader权限?
在Power Automate中检测用户是否拥有Entra ID的Security Reader角色
一、Power Automate流实现步骤
- 添加「HTTP」动作,请求方法选择
GET,请求URL填入:https://graph.microsoft.com/v1.0/me/transitiveMemberOf/microsoft.graph.directoryRole?$filter=displayName eq 'Security Reader' - 配置身份验证:选择「Azure AD OAuth」,填写你的Entra ID租户ID,受众设为
https://graph.microsoft.com,并确保已为流的运行账户授予Directory.Read.All权限(应用或委派权限均可,根据运行身份选择)。 - 添加「条件」动作,用表达式判断响应结果:
若条件成立,说明当前用户拥有Security Reader角色(包括通过组继承的情况);反之则没有。length(body('HTTP')?['value']) > 0
二、可用的Microsoft Graph端点
存在直接返回权限信息的官方端点,核心使用Microsoft Graph的目录角色相关接口:
直接查询用户的传递性目录角色(推荐,覆盖继承场景):
GET https://graph.microsoft.com/v1.0/me/transitiveMemberOf/microsoft.graph.directoryRole?$filter=displayName eq 'Security Reader'响应的
value数组不为空则表示用户拥有该角色。分步查询(适用于不需要继承场景):
- 先获取Security Reader角色的ID:
GET https://graph.microsoft.com/v1.0/directoryRoles?$filter=displayName eq 'Security Reader' - 再查询用户是否为该角色的直接成员:
若返回200 OK则表示用户直接拥有该角色。GET https://graph.microsoft.com/v1.0/directoryRoles/{role-id}/members/{user-id}/$ref
- 先获取Security Reader角色的ID:
注意事项
- 如果仅需检测直接分配的角色,将第一步中的
transitiveMemberOf替换为memberOf即可。 - 流的运行账户必须具备足够的权限读取Entra ID目录角色信息,否则请求会返回权限不足的错误。
内容的提问来源于stack exchange,提问作者CigarDoug
相关产品推荐
相关产品推荐

