Автоматизация задач управления идентификацией Microsoft Entra с помощью Azure Automation и Microsoft Graph
Служба автоматизации Azure — это облачная служба Azure, которая позволяет автоматизировать обычное или повторяющееся управление системами и процессами. Microsoft Graph — это единая конечная точка API Майкрософт для функций Microsoft Entra, которые управляют пользователями, группами, пакетами доступа, проверками доступа и другими ресурсами в каталоге.
Вы можете управлять идентификатором Microsoft Entra на уровне из командной строки PowerShell, используя Microsoft Graph PowerShell SDK. Вы также можете включить командлеты Microsoft Graph PowerShell из модуля Runbook на основе PowerShell в службе автоматизации Azure, чтобы автоматизировать задачи Microsoft Entra из простого скрипта.
Служба автоматизации Azure и пакет SDK для PowerShell Graph поддерживают проверку подлинности на основе сертификатов и разрешения приложения, что позволяет модулям Runbook службы автоматизации Azure аутентифицироваться в Microsoft Entra ID без необходимости в контексте пользователя.
В этой статье показано, как приступить к использованию Azure Automation для управления идентификацией в Microsoft Entra, создавая простой сценарий runbook, который выполняет запросы к управлению правами через Microsoft Graph PowerShell.
Создание учетной записи службы автоматизации Azure
Служба автоматизации Azure предоставляет размещенную в облаке среду для выполнения модулей runbook. Они могут запускаться автоматически по расписанию или вызываться веб-перехватчиками или приложениями логики.
Для использования службы автоматизации Azure нужна подписка Azure.
Необходимая роль: подписка Azure или владелец группы ресурсов
Войдите на портал Azure. Убедитесь, что у вас есть доступ к подписке или группе ресурсов, в которой будет размещена учетная запись службы автоматизации Azure.
Выберите подписку или группу ресурсов и нажмите кнопку Создать. Введите Автоматизация, выберите службу Автоматизация Azure от Майкрософт, а затем выберите Создать.
После создания учетной записи службы автоматизации Azure выберите Управление доступом (IAM). Затем выберите Просмотреть в разделе Просмотр доступа к этому ресурсу. Затем эти пользователи и субъекты-службы смогут взаимодействовать со службой Майкрософт через сценарии, создаваемые в этой учетной записи службы автоматизации Azure.
Просмотрите пользователей и субъектов-служб, перечисленных там, и убедитесь, что они авторизованы. Удалите всех пользователей, которые не авторизованы.
Создайте самозаверяющую пару ключей и сертификат на вашем компьютере
Чтобы она могла работать без необходимости использования ваших персональных учетных данных, созданная вами учетная запись Automation в Azure должна аутентифицироваться в Microsoft Entra ID с помощью сертификата.
Если у вас уже есть пара ключей для аутентификации вашей службы в Microsoft Entra ID и сертификат, полученный от удостоверяющего центра, перейдите к следующему разделу.
Чтобы создать самозаверяющий сертификат:
Следуйте инструкциям в статье о создании самозаверяющего сертификата(вариант 2), чтобы создать и экспортировать сертификат с закрытым ключом.
Создайте отпечаток сертификата.
$cert | ft Thumbprint
После экспорта файлов можно удалить сертификат и пару ключей из хранилища сертификатов локального пользователя. На последующих этапах вы также удалите файлы
.pfx
и.crt
, после того как сертификат и закрытый ключ были загружены в службы автоматизации Azure и Microsoft Entra.
Отправка пары ключей в службу автоматизации Azure
Ваш runbook в службе автоматизации Azure извлекает закрытый ключ из файла .pfx
и использует его для аутентификации в Microsoft Graph.
На портале Azure для учетной записи службы автоматизации Azure выберите Сертификаты и Добавить сертификат.
Отправьте созданный ранее файл
.pfx
и введите пароль, указанный при создании файла.После отправки закрытого ключа запишите дату окончания срока действия сертификата.
Теперь можно удалить файл
.pfx
с локального компьютера. Однако не удаляйте.crt
файл, так как этот файл понадобится на следующем шаге.
Добавление модулей для Microsoft Graph в учетную запись службы автоматизации Azure
По умолчанию служба автоматизации Azure не имеют предварительно загруженных модулей PowerShell для Microsoft Graph. Необходимо добавить Microsoft.Graph.Authentication, а затем дополнительные модули из галереи в учетную запись службы автоматизации.
На портале Azure для учетной записи службы автоматизации Azure выберите Модули, а затем — Обзор коллекции.
В строке поиска введите Microsoft.Graph.Authentication. Выберите модуль, нажмите кнопку "Импорт" и нажмите кнопку "ОК ", чтобы идентификатор Microsoft Entra начал импортировать модуль. После нажатия кнопки "ОК" импорт модуля может занять несколько минут. Не пытайтесь добавить дополнительные модули Microsoft Graph, пока не будет завершен импорт модуля Microsoft.Graph.Authentication, так как он необходим для работы других модулей.
Вернитесь в список Модули и выберите Обновить. Когда состояние Microsoft.Graph.Authentication будет изменено на Доступно, вы можете импортировать следующий модуль.
Если вы используете командлеты для Microsoft Entra ID Governance, такие как управление правами, повторите процесс импорта для модуля Microsoft.Graph.Identity.Governance.
Импортируйте другие модули, которые может потребовать скрипт, например Microsoft.Graph.Users. Например, если вы используете Защита идентификации Microsoft Entra, вы можете импортировать модуль Microsoft.Graph.Identity.SignIns.
Создание регистрации приложения и назначение разрешений
Затем вы создадите регистрацию приложения в Microsoft Entra ID, чтобы Microsoft Entra ID распознал сертификат службы автоматизации Azure runbook для аутентификации.
- Войдите в Центр администрирования Microsoft Entra как минимум в роли администратора приложений.
- Перейдите к Идентичность>Приложения>Регистрация приложений.
- Выберите Создать регистрацию.
- Введите имя приложения и выберите Зарегистрировать.
- После создания регистрации приложения запишите идентификатор приложения (клиента) и идентификатор каталога, так как эти элементы понадобятся вам позже.
- Выберите Сертификаты и секреты>Сертификаты>Загрузить сертификат.
- Отправьте созданный ранее файл
.crt
.
- Отправьте созданный ранее файл
- Выберите Разрешения API>Добавить разрешение.
- Выберите Microsoft Graph>разрешения для приложений.
Выберите все разрешения, необходимые для учетной записи службы автоматизации Azure, затем выберите Добавить разрешения.
- Если модуль Runbook выполняет только запросы или обновления в одном каталоге, вам не нужно назначать разрешения приложения на уровне всего клиента; вместо этого можно назначить учетную запись службы роли владельца каталога или читателя каталога.
- Если модуль runbook только отправляет запросы к функции управления правами, он может использовать разрешение EntitlementManagement.Read.All.
- Если ваш план вносит изменения в управление правами доступа, например, для создания назначений в нескольких каталогах, используйте разрешение EntitlementManagement.ReadWrite.All.
- При использовании других API убедитесь, что добавлены соответствующие разрешения. Например, для Microsoft Entra ID Protection может потребоваться разрешение IdentityRiskyUser.Read.All.
Предоставление согласия администратора
Приложение, созданное в предыдущем разделе, имеет разрешения, которые требуют, чтобы кто-то с ролью администратора привилегированных ролей их утвердил, перед тем как оно будет работать как задумано.
- Войдите в административный центр Microsoft Entra в роли как минимум администратора привилегированных ролей.
- Перейдите к разделу Идентификация>Приложения>Регистрация приложений>Все приложения.
- Выберите приложение, созданное в предыдущем разделе.
- Выберите разрешения API и просмотрите необходимые разрешения.
- При необходимости выберите "Предоставить согласие администратора" для "Имя клиента" , чтобы предоставить приложению эти разрешения.
Создание переменных службы автоматизации Azure
На этом шаге вы создадите в учетной записи служба автоматизации Azure три переменных, которые модуль Runbook использует для определения способа проверки подлинности в идентификаторе Microsoft Entra.
На портале Azure вернитесь к учетной записи службы автоматизации Azure.
Выберите Переменные и Добавить переменную.
Создайте переменную с именем Thumbprint. В качестве значения переменной введите отпечаток сертификата, который был создан ранее.
Создайте переменную с именем ClientID. Введите идентификатор клиента в качестве значения переменной для приложения, зарегистрированного в Microsoft Entra ID.
Создайте переменную с именем TenantID. В качестве значения переменной введите идентификатор арендатора каталога, в котором зарегистрировано приложение.
Создайте рабочую книгу PowerShell службы автоматизации Azure, которая может использовать Microsoft Graph.
На этом шаге вы создадите начальный модуль Runbook. Вы можете активировать этот модуль runbook, чтобы узнать, успешно ли выполнена проверка подлинности с помощью созданного ранее сертификата.
Выберите Модули runbook и Создать модуль runbook.
Введите имя модуля runbook, выберите PowerShell в качестве типа создаваемого модуля runbook и нажмите кнопку Создать.
После создания руководства появится область редактирования текста для ввода исходного кода PowerShell руководства.
Введите следующую команду 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
Выберите Область тестирования и нажмите кнопку Запуск. Подождите несколько секунд, пока служба автоматизации Azure обработает сценарий runbook.
Если выполнение модуля runbook прошло успешно, появится сообщение Welcome to Microsoft Graph! (Вас приветствует Microsoft Graph!).
Теперь, когда вы убедились, что модуль Runbook может пройти проверку подлинности в Microsoft Graph, расширьте модуль Runbook, добавив командлеты для взаимодействия с функциями Microsoft Entra.
Расширение модуля runbook для использования управления правами
Если регистрация приложения для модуля runbook имеет разрешения EntitlementManagement.Read.All или EntitlementManagement.ReadWrite.All, то она может использовать API управления предоставлением прав доступа.
- Например, чтобы получить список пакетов доступа к управлению правами 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
}
Выберите Область тестирования и нажмите кнопку Запуск. Подождите несколько секунд, пока служба автоматизации Azure обработает сценарий runbook.
Если выполнение прошло успешно, вместо приветственного сообщения будет выведен массив JSON. Массив JSON содержит идентификатор и отображаемое имя каждого пакета доступа, возвращенного из запроса.
Укажите параметры для рабочей инструкции (необязательно)
Вы также можете добавить входные параметры в модуль Runbook, добавив раздел Param
в верхней части скрипта PowerShell. Например:
Param
(
[String] $AccessPackageAssignmentId
)
Формат разрешенных параметров зависит от вызывающей службы. Если модуль Runbook принимает параметры из вызывающего средства, необходимо добавить логику проверки в модуль Runbook, чтобы убедиться, что указанные значения параметров подходят для запуска модуля Runbook. Например, если модуль Runbook запускается веб-перехватчиком, служба автоматизации Azure не выполняет проверку подлинности в запросе веб-перехватчика до тех пор, пока он выполнен в правильный URL-адрес, поэтому вам потребуется альтернативный способ проверки запроса.
После настройки входных параметров runbook при тестировании модуля Runbook можно указать значения на странице тестирования. После публикации руководства можно будет указать параметры при его запуске из PowerShell, REST API или Logic App.
Анализ выходных данных учетной записи службы автоматизации Azure в Logic Apps (необязательно)
После публикации вашей рабочей книги можно создать расписание в службе автоматизации Azure и связать вашу рабочую книгу с этим расписанием для автоматического запуска. Планирование модулей Runbook из служба автоматизации Azure подходит для модулей Runbook, которые не должны взаимодействовать с другими службами Azure или Office 365, у которых нет интерфейсов PowerShell.
Если вы хотите отправить выходные данные модуля Runbook в другую службу, вам может потребоваться использовать Azure Logic Apps для запуска модуля Runbook служба автоматизации Azure, так как Logic Apps также может проанализировать результаты.
В Azure Logic Apps создайте Логическое приложение в Дизайнере Logic Apps, начиная с Повторение.
Добавьте операцию Создание задания из службы автоматизации Azure. Выполните проверку подлинности в идентификаторе Microsoft Entra и выберите подписку, группу ресурсов, учетную запись службы автоматизации, созданную ранее. Выберите Ожидать выполнения задания.
Добавьте параметр Имя runbook и введите имя модуля runbook, который нужно запустить. Если модуль runbook содержит входные параметры, то вы можете указать их значения.
Выберите Новый шаг и добавьте Получение выходных данных задания. Выберите ту же подписку, группу ресурсов, учетную запись службы автоматизации, что и на предыдущем шаге, и выберите динамическое значение идентификатора задания из предыдущего шага.
Затем можно добавить в приложение логики дополнительные операции, такие как действие Анализ JSON, которое использует содержимое, возвращаемое при завершении работы модуля runbook. (Если вы автоматически создаете схему анализа JSON из примера полезных данных, обязательно учитывайте возможный случай, когда сценарий PowerShell возвращает значение NULL; может потребоваться изменить некоторые значения в схеме с
"type": "string"
на"type": ["string", "null"]
.)
В службе автоматизации Azure runbook PowerShell может не завершиться успешно, если он пытается одновременно записать большое количество данных в выходной поток. Обычно эту ошибку можно обойти, указав в модуле runbook выводить только сведения, необходимые для приложения логики, например исключить ненужные свойства с помощью командлета Select-Object -Property
.
Планирование обновления сертификата
Если вы создали самозаверяющий сертификат, выполнив описанные выше действия для проверки подлинности, помните, что срок действия сертификата ограничен до истечения срока действия. Необходимо повторно создать сертификат и отправить новый сертификат до истечения срока его действия.
Дату окончания срока действия можно увидеть в двух местах на портале Azure:
- В службе автоматизации Azure на экране Сертификаты отображается дата окончания срока действия сертификата.
- В Microsoft Entra ID на регистрации приложения экран "Сертификаты и секреты" отображает дату окончания срока действия сертификата, используемого для учетной записи службы автоматизации Azure.