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

如何以编程方式获取拥有Azure资源(如Blob容器)读取权限的AAD身份列表

问题结论

你当前仅调研Microsoft Graph API的查找方向不正确。Azure资源的RBAC权限配置存储在Azure资源管理层,需要调用Azure Resource Manager (ARM) API获取,Microsoft Graph API仅用于后续补全AAD身份的详情信息,无法直接查询资源层的权限分配。

具体实现步骤
  • 调用ARM的角色分配列表API,请求路径格式为 https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01,其中scope参数需定位到具体的Blob容器,示例格式为 /subscriptions/替换为你的订阅ID/resourceGroups/替换为你的资源组名/providers/Microsoft.Storage/storageAccounts/替换为存储账户名/blobServices/default/containers/替换为容器名
  • 筛选返回结果中properties.roleDefinitionId对应的角色为包含读取权限的角色,常见的内置角色有Storage Blob Data Reader、Reader,如果使用自定义角色,可提前调用ARM的角色定义API拉取所有包含读取操作的角色ID做匹配
  • 筛选后的结果中properties.principalId字段即为拥有对应权限的AAD身份ID,若需要获取身份的名称、类型等详细信息,可调用Microsoft Graph API传入该ID查询对应实体信息
简化实现方式
  • 如果你使用官方Azure SDK开发,可直接调用对应语言的授权管理模块封装好的方法,例如Python的azure-mgmt-authorization包、C#的Azure.ResourceManager.Authorization包,无需手动拼接HTTP请求
  • 若仅需要快速获取结果,可直接使用Azure CLI执行命令 az role assignment list --scope 替换为你的资源scope --query "[].{principalName:principalName, principalType:principalType, roleDefinitionName:roleDefinitionName}" 直接得到格式化的权限列表

注意:调用ARM相关接口的身份凭证,需要持有目标资源的Microsoft.Authorization/roleAssignments/read权限,一般分配了所有者、用户访问管理员角色的身份可满足权限要求。

内容的提问来源于stack exchange,提问作者Elena Zgherea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:03