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

Azure DevOps管道中Add-MgApplicationPassword报403权限不足问题

问题根源
  • 核心问题是Graph访问令牌权限不足:尽管服务主体拥有「应用程序开发人员」角色,且是刚创建的应用注册的所有者,但通过Get-AzContext获取的Graph令牌并没有包含管理应用凭据所需的权限。「应用程序开发人员」角色仅允许创建应用,而调用Add-MgApplicationPassword需要Microsoft Graph的Application.ReadWrite.OwnedBy(或更高权限),且该权限必须明确授予服务主体。
  • 从Az上下文转换令牌的方式,默认请求的Graph权限范围有限,不会自动包含管理应用凭据的权限。
解决方案

方法1:为服务主体添加Graph应用权限

  1. 在Entra ID中找到执行脚本的服务主体,进入「API权限」页面
  2. 添加Microsoft Graph的Application.ReadWrite.OwnedBy应用权限(注意选「应用权限」,不是「委派权限」)
  3. 点击「授予管理员同意」完成权限配置
  4. 重新运行管道脚本

方法2:直接用服务主体身份连接Graph(推荐)

替换原有Graph连接代码,直接使用服务主体凭据连接并指定所需权限,避免Az上下文转换的权限缺失问题:

Import-Module Microsoft.Graph.Applications

# 从Azure DevOps管道变量/密钥保管库获取服务主体信息
$tenantId = $env:AZURE_TENANT_ID
$clientId = $env:AZURE_SERVICE_PRINCIPAL_ID
$clientSecret = ConvertTo-SecureString $env:AZURE_SERVICE_PRINCIPAL_SECRET -AsPlainText -Force
$credential = [System.Management.Automation.PSCredential]::new($clientId, $clientSecret)

# 连接Graph并明确指定所需权限
Connect-MgGraph -TenantId $tenantId -Credential $credential -Scopes "Application.ReadWrite.OwnedBy"

额外检查项

  • 确认服务主体确实在目标应用注册的「所有者」列表中
  • 若用方法1,确保权限状态显示「已授予管理员同意」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:43:38