Я написал сценарий PowerShell для отключения, который поместил в учетную запись автоматизации. Я запускаю сценарий из рабочих процессов жизненного цикла EntraID. Я предоставил управляемому удостоверению учетной записи автоматизации соответствующие разрешения API Graph, как показано в этой ссылке (кстати, сценарий работает должным образом при запуске с моего локального компьютера с использованием моих учетных данных администратора и тех же областей API Graph).
Управляемые разрешения для удостоверений
Я также назначил роли EntraID учетной записи автоматизации, например администратор группы.
Назначение ролей администратора групп
Любопытно, что эти назначенные роли НЕ отображаются в колонке «Роли и администраторы» управляемого удостоверения.
Роли и администраторы управляемой идентификации EntraID
Некоторые части моего сценария не работают при запуске из учетной записи автоматизации. Нужны ли мне ОБА разрешения Graph API, И роли EntraID? Или разрешений графического API достаточно?
Есть две части сценария, которые не работают:
Reset-MgUserAuthenticationMethodPassword
. Я предоставил Управляемому удостоверению разрешение UserAuthenticationMethod.ReadWrite.All
API И роль Authentication Administrator
EntraID.
Remove-MgGroupMemberByRef
. Я предоставил Управляемому удостоверению разрешения API Group.ReadWrite.All
и GroupMember.ReadWrite.All
И роль 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
Ответ:
Ошибка произошла, поскольку эта операция сброса паролей API Graph не поддерживается разрешениями типа «Приложение». Вы можете проверить это MS Doc.
В таких случаях вызывающему субъекту-службе должна быть назначена роль администратора с более высокими привилегиями, например привилегированный администратор проверки подлинности или глобальный администратор.
Если ошибка по-прежнему существует, воспользуйтесь вызовом 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, выбрав участника с идентификатором объекта каталога:
Import-Module Microsoft.Graph.Groups
Remove-MgGroupMemberDirectoryObjectByRef -GroupId $groupId -DirectoryObjectId $directoryObjectId
Чтобы узнать, какие разрешения необходимы для этой конкретной операции, вы можете проверить документацию по API MS Graph, поскольку команды MS Graph PowerShell SDK вызывают API в серверной части.
Использованная литература:
Встроенные роли Microsoft Entra — Microsoft Entra ID
Удалить участника — Microsoft Graph v1.0
Большое спасибо! Я не распознал, что сброс пароля был командой типа приложения, и не осознавал ограничений. Еще больше инструментов в моем наборе инструментов! Еще раз спасибо!
Назначение ролей Entra ID (Azure AD) и разрешений API Graph субъекту службы управляемой идентификации зависит от типа операции API Graph, которую вы выполняете в данный момент. В тех случаях, когда работа API Graph не поддерживает разрешения типа приложения, вам необходимо назначить роль Entra ID (Azure AD).