Runbook解析AAD日志遇权限错误:缺少MSGraph权限AuditLog.Read.All
解决Get-AzureADAuditSignInLogs权限不足问题
问题根源
Security Reader是Azure RBAC角色,仅管控Azure资源(如订阅、资源组)的访问权限,但Get-AzureADAuditSignInLogs调用的是Microsoft Graph API,需要的是Graph平台专属的应用权限——这两套权限体系完全独立,因此Security Reader角色无法满足Graph API的权限要求。
修复步骤
- 给自动化账户的托管标识添加Microsoft Graph应用权限
AuditLog.Read.All- 打开Azure门户,进入Azure Active Directory -> 企业应用程序,搜索并选中你的托管标识(系统分配的托管标识会出现在此列表中)
- 在应用详情页左侧点击权限 -> 添加权限
- 选择Microsoft Graph -> 应用权限
- 在权限列表中找到
AuditLog.Read.All(归类在AuditLog分类下),勾选后点击添加权限 - 点击授予管理员同意(需持有Global Administrator或Privileged Role Administrator权限)
- 确保Runbook中用托管标识正确完成认证
- 推荐使用Microsoft Graph PowerShell模块替代旧版AzureAD模块,认证及调用示例:
# 通过托管标识认证到Microsoft Graph Connect-MgGraph -Identity # 获取登录日志 Get-MgAuditLogSignIn - 若必须使用AzureAD模块,需确保模块版本支持托管标识,认证代码如下:
Connect-AzureAD -Identity Get-AzureADAuditSignInLogs
- 推荐使用Microsoft Graph PowerShell模块替代旧版AzureAD模块,认证及调用示例:
验证与注意事项
- 权限授予后通常需要5-10分钟生效,请勿立即进行测试
- 可通过以下命令验证托管标识的权限是否配置成功:
Connect-MgGraph -Identity Get-MgServicePrincipal -Filter "displayName eq '你的托管标识名称'" | Select-Object -ExpandProperty AppRolesAssignedTo
内容的提问来源于stack exchange,提问作者Testagon Eins
相关产品推荐
相关产品推荐

