Назначение разрешений Microsoft Graph идентификатору управляемой службы Azure - PullRequest
0 голосов
/ 28 сентября 2018

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

Я использую версию 2.0.1.16 модуля оболочки оболочки AzureAD.

Я сделал следующее:

  1. Создание приложения логики
  2. Создание идентификатора управляемой службы Azure в настройках рабочего процесса этого приложения логики.
  3. Выполните приведенную ниже PowerShell, чтобы назначить роли group.readwrite.all идентификатор управляемой службы.

Сначала выдается ошибка отказа в доступе, а при последующих попытках выдается ошибка «InvalidRequest».Я являюсь глобальным администратором и имею полный доступ к группе ресурсов (это базовый разработчик, где у меня есть полные разрешения)

Я пробовал это на разных арендаторах.Кто-нибудь смог заставить это работать?

    PS C:\Users\markp> $msi = Get-AzureADServicePrincipal | ?{$_.DisplayName -ieq "test"}
PS C:\Users\markp> $mai
PS C:\Users\markp> $msi

ObjectId                             AppId                                DisplayName
--------                             -----                                -----------
8d87a1f9-fab0-45a9-a6f3-1e93b2d99b52 032c3c1c-2530-4eae-b390-153e3b0eb3c6 TEST


PS C:\Users\markp> $graph = Get-AzureADServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
PS C:\Users\markp> $graph

ObjectId                             AppId                                DisplayName
--------                             -----                                -----------
5a634981-6bbe-4c81-9aef-185a71df56f7 00000003-0000-0000-c000-000000000000 Microsoft Graph


PS C:\Users\markp> $role = $graph.AppRoles | ?{$_.Value -imatch "group.read.all" }
PS C:\Users\markp> $role


AllowedMemberTypes : {Application}
Description        : Allows the app to read group properties and memberships, and read the calendar and conversations f
                     or all groups, without a signed-in user.
DisplayName        : Read all groups
Id                 : 5b567255-7703-4780-807c-7be8301ae99b
IsEnabled          : True
Value              : Group.Read.All



PS C:\Users\markp> New-AzureADServiceAppRoleAssignment -ObjectId $msi.ObjectId -PrincipalId $msi.ObjectId -Id $role.Id -ResourceId $graph.ObjectId
New-AzureADServiceAppRoleAssignment : Error occurred while executing NewServicePrincipalAppRoleAssignment
Code: Authorization_RequestDenied
Message: Insufficient privileges to complete the operation.
HttpStatusCode: Forbidden
HttpStatusDescription: Forbidden
HttpResponseStatus: Completed
At line:1 char:1
+ New-AzureADServiceAppRoleAssignment -ObjectId $msi.ObjectId -Principa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureADServiceAppRoleAssignment], ApiException
    + FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.NewServ
   icePrincipalAppRoleAssignment

PS C:\Users\markp> New-AzureADServiceAppRoleAssignment -ObjectId $msi.ObjectId -PrincipalId $msi.ObjectId -Id $role.Id -ResourceId $graph.ObjectId
New-AzureADServiceAppRoleAssignment : Error occurred while executing NewServicePrincipalAppRoleAssignment
Code: Request_BadRequest
Message: One or more properties are invalid.
RequestId: 57ef7908-dd8b-4a21-b48e-f2692d324264
DateTimeStamp: Fri, 28 Sep 2018 14:36:55 GMT
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:1 char:1
+ New-AzureADServiceAppRoleAssignment -ObjectId $msi.ObjectId -Principa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureADServiceAppRoleAssignment], ApiException
    + FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.NewServ
   icePrincipalAppRoleAssignment

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

В настоящее время поведение еще не изменилось.

  • Ошибка ложной аутентификации в первый раз
  • Второй раз неверный запрос

Однако вы можете теперьтакже подтвердите изменения, применяемые через новую бета-версию MS Graph, после выполнения команд Powershell.

перейдите к https://developer.microsoft.com/en-us/graph/graph-explorer и выполните аутентификацию с вашим пользователем (должно быть указано на левой боковой панели)

Затем вы можете запросить примененные роли через: https://graph.microsoft.com/beta/servicePrincipals/{msi.ObjId}/appRoleAssignedTo

0 голосов
/ 29 сентября 2018

Начальная настройка

Я установил новое приложение логики с именем «test» в моей пробной подписке, как вы объяснили выше, и включил MSI для него через настройки рабочего процесса.Затем я использовал те же самые команды PowerShell, что и у вас выше.

Объяснение двух самых важных вещей, которые происходят

  1. Первый запуск - Даже если вы получаете ошибку с кодом: Authorization_RequestDenied, операция добавления новых назначений ролей фактически выполнила свою работу.Новые разрешения были добавлены.(Я приведу небольшое свидетельство об этом в разделе ниже)

  2. Последующие запуски после первого запуска - вы получаете сообщение об ошибке с Code: Request_BadRequest, потому что разрешения / роли назначают васПопытка добавить уже была добавлена ​​при первом запуске.

Доказательства

  1. Сценарии PowerShell точно из вашего поста.enter image description here

  2. Эти запросы работали для меня только из обозревателя графиков Azure AD (а не из нового Microsoft Graph Explorer).Кроме того, запросы чувствительны к регистру, поэтому даже небольшая разница будет иметь место.

    В основном вы можете посмотреть назначения ролей для субъекта службы до и после запуска сценария PowerShell в первый раз, чтобы увидеть, что требуемые разрешенияфактически добавлен (я создал новое приложение логики, в котором ничего не было, и только MSI позволил протестировать эту часть)

Запрос графика Azure AD:

Azure AD Graph Query: https://graph.windows.net/{tenant Id}/servicePrincipals/{MSI Service Principal ID}/appRoleAssignments

{MSI Service Principal ID} is 8d87a1f9-fab0-45a9-a6f3-1e93b2d99b52 in your case.

Назначения ролей для участника службы MSI ПЕРЕД первым запуском New-AzureADServiceAppRoleAssignment с использованием указанного выше запроса.

enter image description here

Назначения ролейдля руководителя службы MSI ПОСЛЕ первого запуска New-AzureADServiceAppRoleAssignment с использованием вышеуказанного запроса.

enter image description here

Еще одна публикация SO, связанная, но немного другая

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

enter image description here

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