如何列出拥有Exchange Online权限的托管标识及权限角色
问题解答
一、列出拥有Exchange Online访问权限的托管标识
托管标识访问Exchange Online的权限主要有两种授予方式,对应不同的查询方法:
- 查询拥有Exchange ManageAsApp API权限的托管标识
Exchange Online对应的服务主体固定ID为00000002-0000-0ff1-ce00-000000000000,可通过Graph PowerShell查询所有被授予该权限的托管标识:
# 获取Exchange Online服务主体 $exoServicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'" # 筛选出关联的托管标识 Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $exoServicePrincipal.Id | ForEach-Object { Get-MgServicePrincipal -ServicePrincipalId $_.PrincipalId | Select-Object DisplayName, Id, AppId }
- 查询拥有Exchange管理角色/角色组权限的托管标识
如果是通过Exchange角色组(如收件人管理员)分配的权限,需连接Exchange Online PowerShell后执行:
# 连接Exchange Online Connect-ExchangeOnline # 查询服务主体类型的角色分配 Get-RoleAssignment -RoleAssigneeType ServicePrincipal | Select-Object RoleAssigneeName, Role, RoleAssigneeId
二、列出Azure Automation托管标识的所有权限和角色
托管标识的权限分为三类,需分别查询:
- Entra ID API权限(应用/委派权限)
使用Graph PowerShell查询托管标识的应用角色分配:
# 替换为目标托管标识的显示名称 $miDisplayName = "你的自动化账户托管标识名称" $mi = Get-MgServicePrincipal -Filter "DisplayName eq '$miDisplayName'" Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $mi.Id | Select-Object ResourceDisplayName, AppRoleId, PrincipalDisplayName
- Entra ID目录角色(如用户管理角色)
这类目录角色不会显示在托管标识的"权限"标签页中,需通过角色分配列表查询:
Get-MgRoleAssignment -Filter "principalId eq '$($mi.Id)'" | Select-Object RoleDefinitionDisplayName, PrincipalDisplayName
- Exchange Online角色
连接Exchange Online后查询:
Get-RoleAssignment -RoleAssigneeId $mi.Id | Select-Object Role, RoleAssigneeName
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

