Нужно ли назначать роли EntraID (AzureAD) И разрешения API Graph управляемому удостоверению учетной записи автоматизации?

Я написал сценарий PowerShell для отключения, который поместил в учетную запись автоматизации. Я запускаю сценарий из рабочих процессов жизненного цикла EntraID. Я предоставил управляемому удостоверению учетной записи автоматизации соответствующие разрешения API Graph, как показано в этой ссылке (кстати, сценарий работает должным образом при запуске с моего локального компьютера с использованием моих учетных данных администратора и тех же областей API Graph).

Управляемые разрешения для удостоверений

Я также назначил роли EntraID учетной записи автоматизации, например администратор группы.

Назначение ролей администратора групп

Любопытно, что эти назначенные роли НЕ отображаются в колонке «Роли и администраторы» управляемого удостоверения.

Роли и администраторы управляемой идентификации EntraID

Некоторые части моего сценария не работают при запуске из учетной записи автоматизации. Нужны ли мне ОБА разрешения Graph API, И роли EntraID? Или разрешений графического API достаточно?

Есть две части сценария, которые не работают:

  1. Reset-MgUserAuthenticationMethodPassword. Я предоставил Управляемому удостоверению разрешение UserAuthenticationMethod.ReadWrite.All API И роль Authentication Administrator EntraID.

  2. Remove-MgGroupMemberByRef. Я предоставил Управляемому удостоверению разрешения API Group.ReadWrite.All и GroupMember.ReadWrite.All И роль Groups Administrator EntraID.

Требуются ли как разрешения Graph API, так и роли EntraID? Какие разрешения и/или роли мне могут не хватать??

Назначение ролей Entra ID (Azure AD) и разрешений API Graph субъекту службы управляемой идентификации зависит от типа операции API Graph, которую вы выполняете в данный момент. В тех случаях, когда работа API Graph не поддерживает разрешения типа приложения, вам необходимо назначить роль Entra ID (Azure AD).

Sridevi 27.04.2024 05:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
249
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первоначально я создал одну учетную запись автоматизации и предоставил субъекту службы управляемой идентификации те же разрешения, что и ниже:

Теперь я назначил роль «Администратор аутентификации» вышеуказанному субъекту-службе следующим образом:

Когда я запустил сценарий 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

Большое спасибо! Я не распознал, что сброс пароля был командой типа приложения, и не осознавал ограничений. Еще больше инструментов в моем наборе инструментов! Еще раз спасибо!

Shawn 29.04.2024 16:50

Другие вопросы по теме

Получение списка управляемых удостоверений, имеющих доступ к API ExchangeOnline.ManageAsApp
Интеграция отчетов Allure в Azure Pipeline для драматургических тестов
Мне нужно получить ResourceGroup и ResourceID связанной виртуальной машины Azure моего узла DSC
Пользовательский модуль автоматизации Azure не экспортирует команды
Пакеты Python Runbook для автоматизации VS Code не распознаются
Проблема со службой wg-easy VPN и настройкой автоматической перезагрузки с помощью сценария Powershell в учетных записях автоматизации
Сбой Azure PowerShell из-за ошибки: при использовании командлета Get-AzRecoveryServicesVault произошла одна или несколько ошибок
Ошибки исключений Runbook Powershell учетной записи автоматизации Azure со снимками Azure
Невозможно вывести список приложений из Azure Active Directory с помощью Powershell в учетной записи автоматизации Azure
Azure Automation and Logic Apps для запланированного автоматического масштабирования приложения-функции