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

使用Python获取Azure资源组用户信息并删除用户

用Python自动化管理Azure资源组角色权限

一、获取资源组内用户的姓名与邮箱

首先安装所需依赖包:

pip install azure-mgmt-authorization azure-identity

以下代码可遍历资源组的角色分配,提取用户的姓名和邮箱信息:

from azure.identity import DefaultAzureCredential
from azure.mgmt.authorization import AuthorizationManagementClient

# 替换为你的订阅ID和目标资源组名称
SUBSCRIPTION_ID = "你的订阅ID"
RESOURCE_GROUP_NAME = "目标资源组名称"

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

# 获取资源组下的所有角色分配
role_assignments = auth_client.role_assignments.list_for_resource_group(RESOURCE_GROUP_NAME)

# 遍历提取用户信息
for assignment in role_assignments:
    # 仅处理用户类型的主体(跳过服务主体、组等)
    if assignment.principal_type == "User":
        user_details = auth_client.service_principals.get(assignment.principal_id)
        user_name = user_details.display_name
        user_email = user_details.mail if hasattr(user_details, 'mail') else "无邮箱记录"
        print(f"姓名: {user_name}, 邮箱: {user_email}, 主体ID: {assignment.principal_id}")

注:外部用户的邮箱可能会附带租户后缀(如xxx@external.com#EXT#@yourtenant.onmicrosoft.com),可根据实际需求做字符串清理处理。

二、删除不在组织内的用户角色权限

通过检查用户是否存在或是否启用,判断其是否仍在组织内,之后删除对应的角色分配:

def is_user_active_in_tenant(principal_id):
    try:
        user = auth_client.service_principals.get(principal_id)
        # 返回用户是否处于启用状态
        return user.account_enabled
    except:
        # 无法获取用户信息则判定为已不在组织
        return False

# 遍历并清理无效用户的角色权限
for assignment in role_assignments:
    if assignment.principal_type == "User":
        if not is_user_active_in_tenant(assignment.principal_id):
            auth_client.role_assignments.delete(
                resource_group_name=RESOURCE_GROUP_NAME,
                role_assignment_name=assignment.name
            )
            print(f"已移除无效用户的角色权限: {assignment.principal_id}")

关键注意点

  • 运行代码的身份必须拥有资源组所有者或用户访问管理员权限,否则无法执行删除操作。
  • DefaultAzureCredential会自动读取本地Azure CLI登录信息、环境变量等凭据,适配本地测试与生产部署场景。
  • 部分离职用户可能仍存在于租户中但被禁用,通过account_enabled属性判断会更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:32:44