Автоматизация задач Управление идентификацией Microsoft Entra с помощью служба автоматизации Azure и Microsoft Graph

Служба автоматизации Azure — это облачная служба Azure, которая позволяет автоматизировать обычное или повторяющееся управление системами и процессами. Microsoft Graph — это единая конечная точка API Майкрософт для функций Microsoft Entra, которые управляют пользователями, группами, пакетами доступа, проверками доступа и другими ресурсами в каталоге. Вы можете управлять идентификатором Microsoft Entra в масштабе из командной строки PowerShell с помощью пакета SDK Для Microsoft Graph PowerShell. Вы также можете включить командлеты Microsoft Graph PowerShell из модуля Runbook на основе PowerShell в служба автоматизации Azure, чтобы автоматизировать задачи Microsoft Entra из простого скрипта.

служба автоматизации Azure и пакет SDK Для PowerShell Graph поддерживает проверку подлинности на основе сертификатов и разрешения приложения, чтобы можно было служба автоматизации Azure модули Runbook, прошедшие проверку подлинности в идентификаторе Microsoft Entra, не нуждаясь в контексте пользователя.

В этой статье показано, как приступить к использованию служба автоматизации Azure для Управление идентификацией Microsoft Entra, создав простой модуль Runbook, который запрашивает управление правами через Microsoft Graph PowerShell.

Создание учетной записи службы автоматизации Azure

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

Служба автоматизации Azure предоставляет размещенную в облаке среду для выполнения модулей runbook. Они могут запускаться автоматически по расписанию или вызываться веб-перехватчиками или приложениями логики.

Для использования службы автоматизации Azure нужна подписка Azure.

Необходимая роль: подписка Azure или владелец группы ресурсов

  1. Войдите на портал Azure. Убедитесь, что у вас есть доступ к подписке или группе ресурсов, в которой будет размещена учетная запись службы автоматизации Azure.

  2. Выберите подписку или группу ресурсов и нажмите кнопку Создать. Введите Автоматизация, выберите службу Автоматизация Azure от Майкрософт, а затем выберите Создать.

  3. После создания учетной записи службы автоматизации Azure выберите Управление доступом (IAM). Затем выберите Просмотреть в разделе Просмотр доступа к этому ресурсу. Затем эти пользователи и субъекты-службы смогут взаимодействовать со службой Майкрософт через сценарии, создаваемые в этой учетной записи службы автоматизации Azure.

  4. Просмотрите пользователей и субъектов-служб, перечисленных там, и убедитесь, что они авторизованы. Удалите всех пользователей, которые не авторизованы.

Создание самозаверяющей пары ключей и сертификата на компьютере

Таким образом, он может работать без использования личных учетных данных, созданная учетная запись служба автоматизации Azure должна пройти проверку подлинности в идентификаторе Microsoft Entra с помощью сертификата.

Если у вас уже есть пара ключей для проверки подлинности службы в идентификатор Microsoft Entra ID и сертификат, полученный от центра сертификации, перейдите к следующему разделу.

Чтобы создать самозаверяющий сертификат:

  1. Следуйте инструкциям в статье о создании самозаверяющего сертификата(вариант 2), чтобы создать и экспортировать сертификат с закрытым ключом.

  2. Создайте отпечаток сертификата.

     $cert | ft Thumbprint
    
  3. После экспорта файлов можно удалить сертификат и пару ключей из хранилища сертификатов локального пользователя. В последующих шагах вы также удалите .pfx и файлы после отправки сертификата и .crt закрытого ключа в службы служба автоматизации Azure и Microsoft Entra.

Отправка пары ключей в службу автоматизации Azure

Модуль Runbook в служба автоматизации Azure извлекает закрытый ключ из .pfx файла и использует его для проверки подлинности в Microsoft Graph.

  1. На портале Azure для учетной записи службы автоматизации Azure выберите Сертификаты и Добавить сертификат.

  2. Отправьте созданный ранее файл .pfx и введите пароль, указанный при создании файла.

  3. После отправки закрытого ключа запишите дату окончания срока действия сертификата.

  4. Теперь можно удалить файл .pfx с локального компьютера. Однако не удаляйте .crt файл, так как этот файл понадобится на следующем шаге.

Добавление модулей для Microsoft Graph в учетную запись службы автоматизации Azure

По умолчанию служба автоматизации Azure не имеют предварительно загруженных модулей PowerShell для Microsoft Graph. Необходимо добавить Microsoft.Graph.Authentication, а затем дополнительные модули из коллекции в учетную запись службы автоматизации.

  1. На портале Azure для учетной записи службы автоматизации Azure выберите Модули, а затем — Обзор коллекции.

  2. В строке поиска введите Microsoft.Graph.Authentication. Выберите модуль, нажмите кнопку "Импорт" и нажмите кнопку "ОК ", чтобы идентификатор Microsoft Entra начал импортировать модуль. После нажатия кнопки "ОК" импорт модуля может занять несколько минут. Не пытайтесь добавить дополнительные модули Microsoft Graph, пока не будет завершен импорт модуля Microsoft.Graph.Authentication, так как он необходим для работы других модулей.

  3. Вернитесь в список Модули и выберите Обновить. Когда состояние Microsoft.Graph.Authentication будет изменено на Доступно, вы можете импортировать следующий модуль.

  4. Если вы используете командлеты для Управление идентификацией Microsoft Entra функций, таких как управление правами, повторите процесс импорта для модуля Microsoft.Graph.Identity.Management.

  5. Импортируйте другие модули, которые может потребовать скрипт, например Microsoft.Graph.Users. Например, если вы используете защиту идентификации, вы можете импортировать модуль Microsoft.Graph.Identity.SignIns .

Создание регистрации приложения и назначение разрешений

Затем вы создадите регистрацию приложения в идентификаторе Microsoft Entra, чтобы идентификатор Microsoft Entra распознал сертификат runbook служба автоматизации Azure для проверки подлинности.

Необходимая роль: глобальный администратор или другой администратор, который может предоставить приложениям разрешения приложения

  1. Войдите в Центр администрирования Microsoft Entra в качестве глобального Администратор istrator.

  2. Перейдите к >приложениям> удостоверений>Регистрация приложений.

  3. Выберите Создать регистрацию.

  4. Введите имя приложения и выберите Зарегистрировать.

  5. После создания регистрации приложения запишите идентификатор приложения (клиента) и идентификатор каталога (клиента), так как вам потребуется эти элементы позже.

  6. Выберите Сертификаты и секреты, а затем Передать сертификат.

  7. Отправьте созданный ранее файл .crt.

  8. Выберите элемент Разрешения API, а затем Добавить разрешение.

  9. Выберите Microsoft Graph и Разрешения приложения.

  10. Выберите все необходимые разрешения для служба автоматизации Azure учетной записи, а затем нажмите кнопку "Добавить разрешения".

    • Если модуль Runbook выполняет только запросы или обновления в одном каталоге, вам не нужно назначать разрешения приложения на уровне клиента; вместо этого можно назначить субъект-службу роли владельца каталога или читателя каталога.
    • Если модуль runbook только отправляет запросы к функции управления правами, он может использовать разрешение EntitlementManagement.Read.All.
    • Если Runbook вносит изменения в управление правами, например для создания назначений в нескольких каталогах, используйте разрешение EntitlementManagement.ReadWrite.All.
    • При использовании других API убедитесь, что добавлены соответствующие разрешения. Например, для защиты идентификации необходимо добавить разрешение IdentityRiskyUser.Read.All.
  11. Выберите Предоставить разрешения администратора, чтобы предоставить приложению эти разрешения.

Создание переменных службы автоматизации Azure

На этом шаге вы создадите в учетной записи служба автоматизации Azure три переменных, которые модуль Runbook использует для определения способа проверки подлинности в идентификаторе Microsoft Entra.

  1. На портале Azure вернитесь к учетной записи службы автоматизации Azure.

  2. Выберите Переменные и Добавить переменную.

  3. Создайте переменную с именем Thumbprint. В качестве значения переменной введите отпечаток сертификата, который был создан ранее.

  4. Создайте переменную с именем ClientID. В качестве значения переменной идентификатор клиента для приложения, зарегистрированного в идентификаторе Microsoft Entra.

  5. Создайте переменную с именем TenantID. В качестве значения переменной введите идентификатор арендатора каталога, в котором зарегистрировано приложение.

Создание модуля runbook PowerShell службы автоматизации Azure, который может использовать Graph

На этом шаге вы создадите начальный модуль Runbook. Вы можете активировать этот модуль runbook, чтобы узнать, успешно ли выполнена проверка подлинности с помощью созданного ранее сертификата.

  1. Выберите Модули runbook и Создать модуль runbook.

  2. Введите имя модуля runbook, выберите PowerShell в качестве типа создаваемого модуля runbook и нажмите кнопку Создать.

  3. После создания модуля Runbook появится область редактирования текста для ввода в исходном коде Модуля Runbook PowerShell.

  4. Введите следующую команду PowerShell в текстовом редакторе.

Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
Connect-MgGraph -clientId $ClientId -tenantId $TenantId -certificatethumbprint $Thumbprint
  1. Выберите Область тестирования и нажмите кнопку Запуск. Подождите несколько секунд, пока служба автоматизации Azure обработает сценарий runbook.

  2. Если выполнение модуля runbook прошло успешно, появится сообщение Welcome to Microsoft Graph! (Вас приветствует Microsoft Graph!).

Теперь, когда вы убедились, что модуль Runbook может пройти проверку подлинности в Microsoft Graph, расширьте модуль Runbook, добавив командлеты для взаимодействия с функциями Microsoft Entra.

Расширение модуля runbook для использования управления правами

Если регистрация приложения для модуля runbook имеет разрешения EntitlementManagement.Read.All или EntitlementManagement.ReadWrite.All, то она может использовать API управления правами.

  1. Например, чтобы получить список пакетов доступа к управлению правами Microsoft Entra, можно обновить созданный выше модуль Runbook и заменить текст следующим кодом PowerShell.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
$auth = Connect-MgGraph -clientId $ClientId -tenantid $TenantId -certificatethumbprint $Thumbprint
Import-Module Microsoft.Graph.Identity.Governance
$ap = @(Get-MgEntitlementManagementAccessPackage -All -ErrorAction Stop)
if ($null -eq $ap -or $ap.Count -eq 0) {
   ConvertTo-Json @()
} else {
   $ap | Select-Object -Property Id,DisplayName | ConvertTo-Json -AsArray
}
  1. Выберите Область тестирования и нажмите кнопку Запуск. Подождите несколько секунд, пока служба автоматизации Azure обработает сценарий runbook.

  2. Если выполнение прошло успешно, вместо приветственного сообщения будет выведен массив JSON. Массив JSON содержит идентификатор и отображаемое имя каждого пакета доступа, возвращенного из запроса.

Укажите параметры в runbook (необязательно)

Вы также можете добавить входные параметры в модуль Runbook, добавив раздел Param в верхней части скрипта PowerShell. Например,

Param
(
    [String] $AccessPackageAssignmentId
)

Формат разрешенных параметров зависит от вызывающей службы. Если модуль Runbook принимает параметры из вызывающего средства, необходимо добавить логику проверки в модуль Runbook, чтобы убедиться, что указанные значения параметров подходят для запуска модуля Runbook. Например, если модуль Runbook запускается веб-перехватчиком, служба автоматизации Azure не выполняет проверку подлинности в запросе веб-перехватчика до тех пор, пока он выполнен в правильный URL-адрес, поэтому вам потребуется альтернативный способ проверки запроса.

После настройки входных параметров runbook при тестировании модуля Runbook можно указать значения на странице тестирования. Позже при публикации модуля Runbook можно указать параметры при запуске модуля Runbook из PowerShell, REST API или Logic App.

Анализ выходных данных учетной записи службы автоматизации Azure в Logic Apps (необязательно)

После публикации модуля runbook вы можете создать расписание в службе автоматизации Azure и привязать модуль runbook к этому расписанию, чтобы обеспечить автоматический запуск. Планирование модулей Runbook из служба автоматизации Azure подходит для модулей Runbook, которые не должны взаимодействовать с другими службами Azure или Office 365, у которых нет интерфейсов PowerShell.

Если вы хотите отправить выходные данные модуля Runbook в другую службу, вам может потребоваться использовать Azure Logic Apps для запуска модуля Runbook служба автоматизации Azure, так как Logic Apps также может проанализировать результаты.

  1. В Azure Logic Apps создайте приложение логики в конструкторе Logic Apps, начиная с повторения.

  2. Добавьте операцию Создание задания из службы автоматизации Azure. Выполните проверку подлинности в идентификаторе Microsoft Entra и выберите подписку, группу ресурсов, учетную запись службы автоматизации, созданную ранее. Выберите Ожидание задания.

  3. Добавьте параметр Имя runbook и введите имя модуля runbook, который нужно запустить. Если модуль runbook содержит входные параметры, то вы можете указать их значения.

  4. Выберите Новый шаг и добавьте Получение выходных данных задания. Выберите ту же подписку, группу ресурсов, учетную запись службы автоматизации, что и на предыдущем шаге, и выберите динамическое значение идентификатора задания из предыдущего шага.

  5. Затем можно добавить в приложение логики дополнительные операции, такие как действие Анализ JSON, которое использует содержимое, возвращаемое при завершении работы модуля runbook. (Если вы автоматически создаете схему анализа JSON из примера полезных данных, обязательно учитывайте возможный случай, когда сценарий PowerShell возвращает значение NULL; может потребоваться изменить некоторые значения в схеме с "type": ​"string" на "type": [​"string",​ "null"​].)

В служба автоматизации Azure модуль Runbook PowerShell может завершиться сбоем, если он пытается одновременно записать большое количество данных в выходной поток. Обычно эту ошибку можно обойти, указав в модуле runbook выводить только сведения, необходимые для приложения логики, например исключить ненужные свойства с помощью командлета Select-Object -Property.

Планирование обновления сертификата

Если вы создали самозаверяющий сертификат, выполнив описанные выше действия для проверки подлинности, помните, что срок действия сертификата ограничен до истечения срока действия. Необходимо повторно создать сертификат и отправить новый сертификат до истечения срока его действия.

Дату окончания срока действия можно увидеть в двух местах на портале Azure:

  • В службе автоматизации Azure на экране Сертификаты отображается дата окончания срока действия сертификата.
  • В идентификаторе Microsoft Entra на регистрации приложения экран "Сертификаты и секреты" отображает дату окончания срока действия сертификата, используемого для учетной записи служба автоматизации Azure.

Следующие шаги