执行 Azure 函数 cmdlet Get-AzADAppCredential 的权限不足

Insufficient privileges executing Azure function cmdlet Get-AzADAppCredential

我正在处理一个 Azure 函数,该函数试图获取和更新 Azure 应用程序注册的客户端密码。函数作为 托管身份 运行,并尝试执行 Azure powershell cmdlet New-AzADAppCredentialRemove-AzADAppCredentialGet-AzADAppCredential.

但是,在执行时我得到一个错误 Insufficient privileges to complete the operation

我尝试在 Azure 角色分配下为我的函数分配一个贡献者角色,我还尝试为该函数尝试访问的应用程序注册授予委派权限 Directory.ReadWrite.All。但是,我仍然看到同样的错误。

我想知道托管标识 azure 函数需要哪些权限才能管理应用程序注册客户端机密。

谢谢!

Contributor 角色允许受让人管理和访问资源,但正如您所发现的那样,它不包括管理访问权限。同样,Directory.ReadWrite.All 用于用户数据而不是 RBAC。有two roles for RBAC-OwnerUser Access Administrator。所有者是贡献者,UA 管理员只允许访问控制。

RBAC roles用于管理Azure订阅中的资源,在这种情况下,您需要的是Azure AD中的权限,而不是订阅中的权限。

要解决此问题,最简单的方法是将 Application Administrator 提供给您的托管身份。

导航到 Azure 门户 -> Azure Active Directory -> Roles and administrators -> Application Administrator -> 将托管身份添加到角色,如下所示。