Azure服务主体监控时Runbook账号无AAD cmdlet执行权限如何解决
解决方案
不需要为Run As账号授予AAD全局读者权限,通过更小粒度的权限配置即可实现需求,以下是两种经过生产验证的可行方案:
方案1:配置Microsoft Graph最小应用权限(推荐)
AAD权限和Azure订阅RBAC权限是两套独立体系,你遇到的报错是因为Run As账号缺少AAD层的应用读取权限,按照以下步骤配置即可:
- 进入Azure Active Directory > 应用注册 > 所有应用程序,搜索你的自动化账号Run As账号的名称,找到对应的应用注册记录
- 进入该应用注册的「API权限」页面,点击「添加权限」,选择「Microsoft Graph」> 「应用权限」
- 搜索并勾选
Application.Read.All权限,点击「添加权限」,最后点击「授予管理员同意」完成权限生效- 如果你只需要监控特定几个服务主体,无需授予目录级的
Application.Read.All权限:直接进入你要监控的每个服务主体对应的应用注册页面,在「所有者」设置中添加Run As账号为所有者即可,此时Run As账号仅能读取自己作为所有者的服务主体信息,权限范围最小。
- 如果你只需要监控特定几个服务主体,无需授予目录级的
- 确认你的自动化账号运行环境中
Az.Resources模块版本≥6.0.0,避免旧版本调用废弃Azure AD Graph接口导致权限不匹配。
方案2:自定义AAD目录角色
如果需要更灵活的权限控制,你可以创建自定义AAD目录角色,仅开放服务主体、应用凭证的读取权限,分配给Run As账号即可,相比全局读者可读取整个AAD所有对象的权限范围,自定义角色可将权限收缩到仅满足需求的最小集合。
内容的提问来源于stack exchange,提问作者olti
相关产品推荐
相关产品推荐

