首页 > 解决方案 > 调用 Get-AzADGroupMember 时权限不足,无法完成操作

问题描述

我在 Powershell(v 2.0) 中有一个 Azure 功能,安装了 Az 模块,并分配了一个托管标识来管理租户说“A”的一堆订阅中的资源。因此,我能够使用 Get-AzVm、Set-AzContext 等命令执行操作以处理 VM/订阅管理。

在该函数中,有一个逻辑可以检查用户组中是否存在用户,例如 AzureAD 中租户“A”的“只读组”。我试图通过调用从函数中获取用户组

$users = Get-AzADGroupMember -GroupDisplayName 'readonlygroup' 

但是我抛出了一个异常

ERROR: Get-AzADGroupMember : Insufficient privileges to complete the operation.
At D:\home\site\wwwroot\{functionname}\run.ps1:110 char:18
+ ...       $users = Get-AzADGroupMember -GroupDisplayName 'readonlygroup'
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Get-AzADGroupMember], Exception
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.ActiveDirectory.GetAzureADGroupMemberCommand
 
Script stack trace:
   at <ScriptBlock>, D:\home\site\wwwroot\{functionname}\run.ps1: line 110

System.Exception: Insufficient privileges to complete the operation.

我假设它是因为与函数应用关联的标识没有对 Azure Active Directory 的适当访问权限。我能够将角色分配分配给应用程序标识以管理订阅,但我没有看到有关如何设置类似配置以从函数应用程序访问 AD 的任何选项。

如何从我的 azure powershell 函数运行此命令?

标签: azureazure-active-directoryazure-functionsazure-powershellazure-managed-identity

解决方案


尝试转到您的 azure 广告、角色和管理员,选择一个允许您执行所需 ps 功能的角色,在这种情况下,您正在尝试读取组,所以也许目录阅读器然后单击添加分配。找到您的函数名称,或从函数应用标识刀片中,复制显示的对象 ID,然后将其粘贴到添加分配搜索框中,它应该会找到它,将其添加到那里.. 可能需要 24 小时才能生效,但通常需要很多时间更快,那么您应该能够运行那些 ps 命令。您从功能中的身份刀片添加的 azure 角色分配仅为其提供订阅访问权限,而不是对 azure 广告的访问权限。


推荐阅读