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

如何通过Azure Python SDK或API获取资源角色分配的类型(eligible/active)

如何通过Azure Python SDK或API获取资源角色分配的类型(eligible/active)

我之前也碰到过一模一样的问题——常规的RoleAssignment类确实不会返回分配类型(eligible/active)的信息,毕竟这部分属于Azure PIM(特权身份管理)的范畴,不是基础角色分配的内容。下面给你两种可行的解决方案:

使用Azure Python SDK获取分配类型

你需要用到azure-mgmt-authorization这个包,它提供了PIM相关的角色分配计划操作接口。步骤如下:

  1. 首先安装依赖包:
pip install azure-mgmt-authorization azure-identity
  1. 编写代码区分eligible和active分配:
from azure.identity import DefaultAzureCredential
from azure.mgmt.authorization import AuthorizationManagementClient

# 替换成你的资源信息
subscription_id = "你的订阅ID"
resource_group = "你的资源组名称"
resource_provider = "Microsoft.Compute"  # 比如存储是Microsoft.Storage,根据资源类型调整
resource_type = "virtualMachines"
resource_name = "你的资源名称"
# 构造资源的完整ID
resource_id = f"/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/{resource_provider}/{resource_type}/{resource_name}"

# 初始化授权管理客户端
credential = DefaultAzureCredential()
auth_client = AuthorizationManagementClient(credential, subscription_id)

# 获取**Active(活跃)**角色分配:这部分就是常规的角色分配查询
print("=== 活跃角色分配 ===")
for assignment in auth_client.role_assignments.list_for_resource(
    resource_group, resource_provider, resource_type, resource_name
):
    print(f"主体:{assignment.principal_name},角色:{assignment.role_definition_name}")

# 获取**Eligible(合格)**角色分配:需要查询PIM的角色分配计划
print("\n=== 合格角色分配 ===")
for schedule in auth_client.role_assignment_schedules.list_for_scope(resource_id):
    # 筛选出类型为Eligibility的计划,就是合格分配
    if schedule.properties.role_assignment_schedule_type == "Eligibility":
        print(f"主体:{schedule.properties.principal_name},角色:{schedule.properties.role_definition_name}")

这里的核心逻辑是:

  • 活跃分配直接通过role_assignments接口查询,这是你之前可能已经用过的常规接口
  • 合格分配属于PIM的资格计划,需要通过role_assignment_schedules接口,筛选role_assignment_schedule_type为Eligibility的条目

使用REST API获取分配类型

如果不想用SDK,直接调用Azure REST API也能实现:

获取活跃角色分配

请求地址:

GET https://management.azure.com/{resource-id}/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01

返回结果里的所有条目都是活跃的角色分配。

获取合格角色分配

请求地址:

GET https://management.azure.com/{resource-id}/providers/Microsoft.Authorization/roleAssignmentSchedules?api-version=2020-10-01

返回结果中,筛选properties.roleAssignmentScheduleType值为Eligibility的条目,就是合格的角色分配。

注意:不管用SDK还是API,你都需要拥有Privileged Role Administrator或Security Administrator这类有权限读取PIM分配信息的角色,否则会返回权限不足的错误。

备注:内容来源于stack exchange,提问作者Shakesbeer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:45:27