求获取所有应用注册的Resource Graph API权限的Resource Graph GET请求地址
通过Resource Graph获取应用注册的Resource Graph API权限的可行性及实现方案
可行性结论
完全可行。Azure Resource Graph支持查询Microsoft Entra应用注册的资源信息,包括其配置的API权限,可通过Kusto查询语句筛选出针对Resource Graph API的权限条目,配合Logic Apps可实现对高敏感写入类权限的监控。
Resource Graph查询实现
请求地址与调用方式
Resource Graph的资源查询接口为:
https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
需以POST方法调用,请求头需包含有效的Azure AD访问令牌和Content-Type: application/json。
权限查询Kusto语句
以下语句可筛选所有应用注册中配置的Resource Graph API权限,并区分权限类型及名称:
resources | where type == "microsoft.directory/applications" | extend requiredResourceAccess = properties.requiredResourceAccess | mv-expand requiredResourceAccess | // 筛选Resource Graph API服务主体(固定ID:d9e6a7a5-f819-459e-b2e7-6f6d38279f93) | where requiredResourceAccess.resourceAppId == "d9e6a7a5-f819-459e-b2e7-6f6d38279f93" | mv-expand permissions = requiredResourceAccess.resourceAccess | project 应用名称 = properties.displayName, 应用ID = appId, 权限类型 = iif(permissions.type == 'Scope', '委派权限', '应用权限'), 权限名称 = case( permissions.id == 'e1fe6dd8-ba31-4d61-89e7-88639da4683d', 'Resource Graph Data Reader', permissions.id == '7ab1d382-f21e-4acd-a863-ba3e13f7da61', 'Resource Graph Data Writer', permissions.id == 'a057708d-8222-4375-9142-f92e8c5b7325', 'Resource Graph Data Contributor', '未知权限' )
Logic Apps监控高敏感权限的步骤
- 创建定时触发器:选择"Recurrence"触发器,设置监控频率(如每小时执行一次)。
- 调用Resource Graph API:添加"HTTP"动作,配置:
- 方法:POST
- URL:上述Resource Graph接口地址
- 请求头:
Authorization: Bearer {access-token}(通过托管身份或服务主体获取令牌)、Content-Type: application/json - 请求体:包含上述Kusto查询的JSON结构,示例:
{ "query": "resources | where type == \"microsoft.directory/applications\" | extend requiredResourceAccess = properties.requiredResourceAccess | mv-expand requiredResourceAccess | where requiredResourceAccess.resourceAppId == \"d9e6a7a5-f819-459e-b2e7-6f6d38279f93\" | mv-expand permissions = requiredResourceAccess.resourceAccess | project 应用名称 = properties.displayName, 应用ID = appId, 权限类型 = iif(permissions.type == 'Scope', '委派权限', '应用权限'), 权限名称 = case(permissions.id == 'e1fe6dd8-ba31-4d61-89e7-88639da4683d', 'Resource Graph Data Reader', permissions.id == '7ab1d382-f21e-4acd-a863-ba3e13f7da61', 'Resource Graph Data Writer', permissions.id == 'a057708d-8222-4375-9142-f92e8c5b7325', 'Resource Graph Data Contributor', '未知权限')" }
- 筛选高敏感权限:添加"Filter array"动作,以API返回的
value数组为输入,筛选条件设为权限名称 contains 'Writer' or 权限名称 contains 'Contributor'。 - 触发告警:添加条件判断,若筛选结果不为空,执行告警动作(如发送Office 365邮件、Teams消息),将包含敏感权限的应用详情通知管理员。
权限要求
- 调用Resource Graph的身份需拥有
Resource Graph ReaderRBAC角色。 - 需具备读取Microsoft Entra应用注册的权限(如
Directory Readers角色)。
内容的提问来源于stack exchange,提问作者BigFish
相关产品推荐
相关产品推荐

