使用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
相关产品推荐
相关产品推荐

