Как я могу использовать PowerShell для назначения групп AD ролям приложений в Azure?

У моего клиента есть AzureAD Premium, поэтому мы можем назначать группы ролям
Мы можем создавать сценарии для создания новых групп (в их локальной AD) и добавлять пользователей в эти группы, а также синхронизировать группы с AAD
Мы можем управлять файлом манифеста с помощью сценария.
Но я не придумал, как автоматически назначить группу для роли приложения. Кто-то должен зайти на портал Azure ›каталог› приложения ›наше приложение› Пользователи и группы ›найти группы для назначения› назначить ›найти подходящую роль ... (промыть и повторить).

Приложение по сути является точкой доступа (внешней по отношению к Azure - мы просто объединяем локальную AD в AAD для A&A в приложение), и группы соответствуют ролям, которые ограничивают доступ к различным библиотекам. К сожалению, бизнес-модель моего клиента весьма разнообразна, а это означает, что у нас есть много групп, которым нужно сопоставить множество ролей.

PowerShell - это наш предпочтительный язык администрирования сценариев.

Я добился небольшого прогресса с Get-AzureAdGroup -SearchString "groupname", что дает мне objectId. Я могу передать это Get-AzureAdGroupAppRoleAssignment, и это даст мне id, который соответствует GUID из файла манифеста. Таким образом, все это связано вместе, за исключением фактического присвоения группе роли.

Итак, затем я начал изучать GraphAPI на основе этот блог. (Блог был посвящен массовому добавлению пользователей к одной конкретной роли, когда у вас нет AAD Premium).

Мне удалось добиться небольшого успеха с GET https://graph.windows.net/[tenant].onmicrosoft.com/servicePrincipals/[app id]/appRoleAssignments?api-version=1.6, но некоторые из моих тестовых групп, даже если они отображаются на портале Azure как назначенные, не отображаются в ответе на указанный выше запрос REST. Некоторые делают, и когда я отменяю их назначение через портал, они также удаляются из ответа. Отсутствие последовательности не дает мне уверенности в моем вопросе.

  • Существуют ли собственные командлеты PowerShell для выполнения AppRoleAssignments? (я бы предпочел GraphAPI).

  • Почему непоследовательные результаты GraphAPI?

    Заранее благодарим за любые указатели

Обновление
Я исследую *-AzureAd* командлеты (из модуля AzureADPreview), но Документация Microsoft немного проста - это только предварительный просмотр, но я думаю, что у них могла бы быть лучшая документация, чем:

Входные данные
Тип входных данных - это тип объектов, которые можно передать командлету по конвейеру.

Выводы
Тип вывода - это тип объектов, генерируемых командлетом.

Эти командлеты делают, похоже, завершают вызовы GraphAPI REST.

Обновление 2
Командлеты AzureADPreview - правильное решение.

Connect-AzureAD -TenantId xxxxx-xxxx-xxxx-etc
$app = Get-AzureADServicePrincipal -SearchString "display name of app"

foreach ($AD_group_name in $list_of_names_to_map) {
$AADGroup = Get-AzureADGroup -SearchString $AD_group_name
$AppRole = $App.AppRoles | ?{$_.value -like $AADGroup.DisplayName}

$NewAssignmentParams = @{
'id'          = $AppRole.Id;
'objectid'    = $AADGroup.ObjectId;
'PrincipalId' = $AADGroup.ObjectId;
'ResourceId'  = $App.ObjectId;
}

New-AzureADGroupAppRoleAssignment @NewAssignmentParams

}

person Rincey_nz    schedule 31.10.2016    source источник


Ответы (2)


Модуль и командлеты, описанные в моем обновлении 2, являются правильным решением.

$NewAssignmentParams = @{
'id'          = $AppRole.Id;
'objectid'    = $AADGroup.ObjectId;
'PrincipalId' = $AADGroup.ObjectId;
'ResourceId'  = $App.ObjectId;
}

New-AzureADGroupAppRoleAssignment @NewAssignmentParams

где
id можно получить из свойства AppRoles приложения или файла манифеста
objectId & principalId - это свойство objectId группы AD, сопоставленное роли
ResourceId - свойство objectId приложения

person Rincey_nz    schedule 02.11.2016

Используя новый модуль AZ:

Get-AzADGroup -SearchString "Your azure ad or on prem ad group"

Это сгенерирует некоторую информацию. Скопируйте идентификатор и запустите:

New-AzRoleAssignment -ObjectId 8baabe9f-245e-456b-9bd8-b8c09002df52 -RoleDefinitionName Contributor -ResourceGroupName "Your RG Name"
person rasky74    schedule 14.04.2020