Azure Runbook автоматизации, Connect-AzAccount, Назначение прав - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь выполнить какое-то базовое c групповое управление с использованием Azure Автоматизации, но у меня чертовски не хватает времени, чтобы скрипт аутентифицировался правильно.

Я добавил модули Azure .Account в модуль Runbook, и, похоже, соединение установлено (по крайней мере, оно не выдает исключение, и возвращаемый объект не является нулевым).

При использовании «Get-AzAdGroup» я получаю:

Get-AzADGroup : Insufficient privileges to complete the operation.

Созданная учетная запись приложения является «Автор» в AAD, поэтому, насколько я понимаю, имеет полные права на каталог .

Я пробовал решение, указанное в Как подключить-azaccount в Azure DevOps release pipe , с тем же эффектом (Недостаточные привилегии). Я также применил "Group.Read.All", "Group.ReadWrite.All", "GroupMember.Read.All", "GroupMember.ReadWrite.All" на основе того, что я могу читать из https://docs.microsoft.com/en-us/graph/permissions-reference#group -преобразований - но я не на 100% уверен, если командлеты Az * используют Microsoft Graph, или если это вообще отдельный код.

Код выглядит следующим образом:

Моя интуиция говорит мне, что, поскольку оба метода connect-azaccount дают один и тот же результат (подключен, но нет доступа), моя проблема не обязательно в сценарии, но не в создании учетной записи службы (которая создает проблемы с MFA), я не знаю как это исправить.

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Если вы просто назначаете роль Contributor субъекту службы, вы можете просто использовать sp для получения ресурса Azure (такого как ВМ, служба приложения). Поэтому, если вы хотите использовать ресурс sp tp get Azure AD, нам нужно назначить роль Azure AD (sucah as Directory Readers) для sp. Для получения более подробной информации, пожалуйста, обратитесь к документу и документу

Подробные шаги приведены ниже

  1. Получить объект RunAsAccount sp id

enter image description here

enter image description here

Настройка разрешений для приложения
  connect-AzureAD

$sp=Get-AzureADServicePrincipal -ObjectId <the sp object id your copy>

$role=Get-AzureADDirectoryRole | Where-Object{$_.DisplayName -eq "Directory Readers"}
Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId  -RefObjectId $sp.ObjectId

Тест а. создать новый runbook



   $servicePrincipalConnection=Get-AutomationConnection -Name 'AzureRunAsConnection'
$connectState = Connect-AzAccount `
     -ServicePrincipal `
     -TenantId $servicePrincipalConnection.TenantId `
     -ApplicationId $servicePrincipalConnection.ApplicationId `
     -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
if ($connectState) {
      "Connected."
  } else {
      "Doesn't seem to be connected."
  }

Get-AzADGroup 

enter image description here

0 голосов
/ 14 апреля 2020

Из решения Как подключить-azaccount в Azure Конвейер выпуска DevOps Я предоставил, на скриншоте ясно, что вам нужно добавить разрешение API Azure Active Directory Graph, а не Microsoft Graph.

Пожалуйста, добавьте Directory.Read.All в Azure Active Directory Graph для приложения AD вашей автоматизации, работающей в качестве учетной записи.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...