You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Azure AD服务主体拥有的Azure对象及权限列表?

获取Azure AD服务主体的所有资源权限方案

问题说明

我们需要获取Azure租户内指定Azure Active Directory服务主体(AADSP)拥有的所有Azure对象权限,比如该服务主体可能拥有SharePoint Online网站集的读写权限、Azure Function的API权限、SQL数据库的查询权限等。尝试通过Microsoft Graph的https://graph.microsoft.com/v1.0/servicePrincipals接口查询,但未找到存储这类权限的集合,想确认是否只能通过遍历所有Azure对象并核查每个对象的权限来确认该服务主体的授权情况?

解决方案

并非只能通过遍历所有对象来查询,可根据资源类型选择更高效的方案:

  • 用Azure Resource Graph查询ARM资源RBAC权限
    针对大部分Azure ARM管理的资源(如VM、Function App、SQL Server等),可以通过Azure Resource Graph批量查询包含目标服务主体的角色分配。示例查询语句:

    resources
    | where type == 'Microsoft.Authorization/roleAssignments'
    | extend principalId = properties.principalId
    | where principalId == '<目标服务主体ID>'
    | project resourceId, 角色名称=properties.roleDefinitionName, 主体名称=properties.principalName
    

    该方式能快速覆盖ARM体系下的资源权限,无需逐个资源核查。

  • 针对Microsoft 365服务单独查询
    SharePoint Online、Exchange Online等非ARM资源的权限存储在各自服务目录中,需用对应工具查询:

    • SharePoint Online:使用Get-SPOUser PowerShell命令,或Graph API的/sites/{site-id}/permissions接口筛选目标服务主体的权限;
    • Exchange Online:通过Get-EXOMailboxPermission等命令查询相关权限;
      这类服务需单独适配查询方式,无法通过统一接口批量获取。
  • 查询服务主体的API权限(Graph API)
    如果需要获取服务主体被授予的应用权限/委派权限(如调用Microsoft Graph的权限),可通过以下Graph接口:

    • 应用权限:https://graph.microsoft.com/v1.0/servicePrincipals/{sp-id}/appRoleAssignments
    • 委派权限:https://graph.microsoft.com/v1.0/servicePrincipals/{sp-id}/oauth2PermissionGrants
      这类权限属于API调用范畴,和资源对象的权限是不同维度。
  • 遍历对象的适用场景
    仅当需要覆盖所有小众服务或自定义资源时,才需考虑分类型批量遍历查询,而非盲目遍历所有资源。

总结

没有唯一的解决方案,通过结合Azure Resource Graph、各服务专用API/PowerShell模块、Graph权限接口,即可高效收集目标服务主体的所有权限,无需完全遍历所有Azure对象。

内容的提问来源于stack exchange,提问作者Barry MSIH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:45:49