Миграция из Azure Active Directory Graph в Microsoft Graph

#azure #azure-devops #azure-active-directory #azure-powershell #azure-automation

#azure #azure-devops #azure-active-directory #azure-powershell #azure-автоматизация

Вопрос:

у меня есть сценарий powershell для мониторинга даты истечения срока действия участника службы.Сценарий выполняется Azure Automation (Runbook Запуск от имени учетной записи).Для «Запуска от имени учетной записи» требуется Application.Read.Все разрешения в Azure Active Directory Graph, как показано на скриншоте ниже:

https://i.stack.imgur.com/bi1mc.jpg

Проблема в том, что Microsoft удалила график AAD, и он больше не доступен в качестве опции, как показано ниже:

https://i.stack.imgur.com/VKZSG.png

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

  • get-azadapplication
  • получить-azadcredentials

Я получаю сообщение об ошибке:

 30 |  get-azadserviceprincipal
 |  ~~~~~~~~~~~~~~~~~~~~~~~~
 | Insufficient privileges to complete the operation
 

Я предоставил те же разрешения в Microsoft Graph (см. Ниже), но, похоже, не работает:

https://i.stack.imgur.com/q4eLR.jpg

По словам Microsoft, в декабре начинается миграция https://docs.microsoft.com/en-us/powershell/azure/azps-msgraph-migration-changes?view=azps-6.6.0

Означает ли это, что после миграции с заданными разрешениями в Graph API используемый командлет будет работать по-прежнему?У вас, ребята (сценарист powershell), есть аналогичная проблема из-за перехода с AAD Graph на Microsoft Graph?

Комментарии:

1. к сожалению, безуспешно даже с directory.readwrite.all

2. могу ли я знать, что в учетной записи «Запуск от имени учетной записи» должно быть 2 типа: 1 «запуск от имени учетной записи», а другие будут классическими. какой из них вы используете?

3. Azure Запуск от имени учетной записи, также не классической

4. позвольте мне протестировать его в моей среде и вернуться сюда

Ответ №1:

Я протестировал то же самое в своей среде, и ошибка была такой же, как показано ниже, которую вы получали даже после добавления необходимых разрешений API :

введите описание изображения здесь

Что касается решения, в зависимости от требований, которые вы также должны назначить Roles And Administrators в PIM для AzureAD.

Шаг 1. Вы можете перейти на страницу обзора Azure Active Directory>> Раздел Роли и администраторы и нажать на Global Reader, который предоставит доступ на чтение ко всему, что присутствует в Azure Active Directory.

введите описание изображения здесь

Шаг 2. На странице Global Reader>> Блок активных назначений>> Нажмите «Добавить назначения«.

введите описание изображения здесь

Шаг 3. На странице добавления назначений>> Выберите участников>> Найдите учетную запись автоматизации, запускаемую от имени учетной записи >> Выберите >> Далее >> Добавить описание >> Назначить

введите описание изображения здесь
введите описание изображения здесь

Шаг 4. После успешного выполнения вышеуказанного вы можете запустить приведенное ниже в automation runbook и получить требуемый результат .

 $Conn = Get-AutomationConnection -Name AzureRunAsConnection
    $account = Connect-AzAccount -ServicePrincipal `
               -TenantId $Conn.TenantID  `
               -ApplicationId $Conn.ApplicationID  `
               -CertificateThumbprint $Conn.CertificateThumbprint
Get-AzADApplication
 

введите описание изображения здесь

Комментарии:

1. похоже, что это решение, также запускаемое как учетная запись, для которой требуется роль Azure AD. Однако таким образом у меня будет доступ (права чтения) ко всему клиенту, поэтому я могу прочитать все AZSubsriptions и это что-то против ИТ-соответствия. Они создали подгруппу с подписками, к которым я (как команда DEVOPS) должен получить доступ и проверить. Есть ли какой-либо способ назначить права «глобального чтения» только для этой подгруппы, а не для всех клиентов?

2. @olti , global Reader предназначен не для подписок, а для разрешений на чтение для azure ad, даже если они ограничили вас несколькими подписками, но клиент будет одинаковым для всех подписок. но все же позвольте мне проверить, может ли это быть ограничено только группой.