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

使用托管身份的Azure Function(PowerShell)读取AAD用户权限不足问题

问题:Azure Function托管身份读取AAD用户遭遇权限不足错误

我尝试通过启用托管身份的Azure Function(PowerShell)读取Azure Active Directory(AAD)中的用户,代码如下:

Import-Module AzureAD -UseWindowsPowerShell
Connect-AzAccount -identity
$context = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext
$graphToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.microsoft.com").AccessToken
$aadToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.windows.net").AccessToken
$body = "Hi I'm $($context.Account.Id)"
Connect-AzureAD -AadAccessToken $aadToken -AccountId $context.Account.Id -TenantId $context.tenant.id
$allUsers = Get-AzureADUser -All $True

已为托管身份配置相关权限,但执行时出现错误:

Error occurred while executing GetUsers Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation

请问是否缺少读取AAD用户所需的权限?


解决方案

1. 确认权限类型与范围

你的代码使用的是Azure AD Graph(端点https://graph.windows.net),需要为托管身份配置对应的应用权限(而非委托权限):

  • 所需权限:Azure AD Graph的Directory.Read.All(应用权限)
  • 注意:后台服务(如Azure Function托管身份)必须使用应用权限,委托权限仅适用于有用户交互的场景。

2. 确保已授予管理员同意

配置权限后,必须点击授予管理员同意按钮,应用权限才能生效。如果未执行此操作,即使权限已添加,托管身份也无法使用该权限。

3. 代码优化(推荐改用Microsoft Graph)

Azure AD Graph已被微软弃用,建议迁移到Microsoft Graph模块,代码更简洁且更符合官方规范:

# 导入Microsoft Graph模块(需提前在Function中部署该模块)
Import-Module Microsoft.Graph.Users

# 通过托管身份连接Microsoft Graph
Connect-MgGraph -Identity

# 获取所有用户
$allUsers = Get-MgUser -All

使用Microsoft Graph时,需为托管身份配置Microsoft Graph的User.Read.All或Directory.Read.All应用权限,并授予管理员同意。

4. 权限验证步骤

  • 登录Azure门户,找到你的Azure Function的托管身份(系统分配或用户分配)
  • 进入API权限页面,确认已添加对应Graph的应用权限
  • 检查权限状态是否为已授予(若显示“需要管理员同意”,则点击授予按钮)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:46:14