我编写了一个卸载 powershell 脚本,并将其放入自动化帐户中。我正在从 EntraID 生命周期工作流程触发脚本。我向自动化帐户托管身份授予了适当的图形 API 权限,如本链接所示(fwiw,当使用我的管理员凭据和这些相同的图形 API 范围从本地计算机运行时,脚本按预期工作)。
我还为自动化帐户分配了 EntraID 角色,例如组管理员。
奇怪的是,这些分配的角色不会显示在托管身份的“角色和管理员”边栏选项卡下。
从自动化帐户运行时,我的脚本的某些部分失败。我是否需要 Graph API 权限和 EntraID 角色?或者图API权限是否足够?
脚本有两部分失败:
Reset-MgUserAuthenticationMethodPassword
。我向托管身份授予了 UserAuthenticationMethod.ReadWrite.All
API 权限和 Authentication Administrator
EntraID 角色。
Remove-MgGroupMemberByRef
。我向托管身份授予了 Group.ReadWrite.All
和 GroupMember.ReadWrite.All
API 权限以及 Groups Administrator
EntraID 角色。
是否同时需要 Graph API 权限和 EntraID 角色?我可能缺少哪些权限和/或角色??
感谢您的宝贵时间!
最初,我创建了一个自动化帐户,并向托管身份服务主体授予了相同的权限,如下所示:
现在,我将 “身份验证管理员” 角色分配给上述服务主体,如下所示:
当我运行下面的 PowerShell 脚本以从自动化帐户重置用户密码时,我收到错误,如下所示:
# Connect to Microsoft Graph
Connect-MgGraph -Identity
Import-Module Microsoft.Graph.Users.Actions
$params = @{
newPassword = "xxxxxxxx"
}
$userId = "userId"
$authenticationMethodId = "methodId"
Reset-MgUserAuthenticationMethodPassword -UserId $userId -AuthenticationMethodId $authenticationMethodId -BodyParameter $params
回复:
发生错误是因为此重置密码的 Graph API 操作不支持且具有“应用程序”类型的权限。您可以查看此MS Doc。
在这种情况下,必须为调用服务主体分配更高特权管理员角色,例如特权身份验证管理员或全局管理员。
如果错误仍然存在,请使用 Update user API 调用通过更新
passwordProfile
属性来重置用户密码,如下所示:
# Connect to Microsoft Graph
Connect-MgGraph -Identity
Import-Module Microsoft.Graph.Users
$params = @{
passwordProfile = @{
forceChangePasswordNextSignIn = $false
password = "xxxxxxx"
}
}
$userId = "userId"
Update-MgUser -UserId $userId -BodyParameter $params
要从组中删除成员,请使用以下 PowerShell 命令通过获取具有目录对象 ID 的成员:
Import-Module Microsoft.Graph.Groups
Remove-MgGroupMemberDirectoryObjectByRef -GroupId $groupId -DirectoryObjectId $directoryObjectId
要了解该特定操作需要哪些权限,您可以查看 MS Graph API 文档,因为 MS Graph PowerShell SDK 命令在后端调用 API。
参考资料: