Как управлять ролями приложений Azure AD во многих приложениях - PullRequest
2 голосов
/ 07 июня 2019

Предположим, я являюсь менеджером 10 различных команд, которые создают службы, определенные как приложения AAD, которые используют роли приложений. Существует ли какой-либо инструмент, который помог бы управлять набором ролей приложений, определяемых каждой службой, или его необходимо собрать вместе с помощью интерфейса REST или PowerShell?

1 Ответ

3 голосов
/ 07 июня 2019

Роли приложения очень специфичны для приложения, для которого они созданы / определены.Вы определяете их как часть манифеста регистрации приложения, а затем даже назначаете эти роли пользователям / группам специально для этого приложения.В случае, если разные приложения используют один и тот же API, а роли вашего приложения определены для приложения API, вы можете подумать о некотором повторном использовании / общем управлении.

Таким образом, роли приложений на самом деле не распространяются на разные приложения.Насколько нам известно, не существует какого-либо инструмента, который помог бы управлять набором ролей приложений, определяемых каждой службой.

Еще одна концепция, которая иногда используется для принятия решений об авторизации, - это членство в Azure AD Group.Группы работают с несколькими приложениями, и это единственная причина, по которой я даже упомянул их здесь, чтобы вы могли проверить групповые заявки для входящих пользователей.Хотя использование определенных ролей приложения обычно работает лучше из-за их более тесной связи с приложением.Группы, как правило, держатся гораздо дольше, чем отдельные приложения, и много раз люди, управляющие или владеющие этими группами, и их членство отличаются от владельцев приложений (поэтому их критерии принятия решений также могут сильно отличаться).

УправлениеРоли приложений

Ознакомьтесь с этой связанной публикацией SO - Как управлять ролями приложений Azure AD для пользователей Azure AD

Вот несколько вариантов.

  1. PowerShell -

    Это можно сделать при создании нового приложения с помощью New-AzureADApplication или для существующего приложения с помощью Set-AzureADApplication.

    Дляназначая эти роли существующим пользователям, вы можете использовать New-AzureADUserAppRoleAssignment

    . См. сценарий PowerShell в конце.

  2. API-интерфейс Azure AD Graph -

    Вы можете работать с типом AppRole и объектом Application для управления ролями приложения. Документация здесь

    enter image description here

    Вы можете работать с AppRoleAssignment Entity для назначения этих ролей существующим пользователям Azure AD и т. Д. Документацияздесь

    enter image description here

  3. Microsoft Graph API -

    Документация здесь -Обратите внимание, что это доступно только в бета-версии - так что это еще не хорошо для производственных приложений.

    Здесь можно найти , работающий с назначениями ролей приложений

Для ваших производственных приложений вы можете читать роли приложений из файла json (часть исходного кода)управляйте, как git и т. д.), и вставьте его в один из программных параметров, таких как PowerShell или Azure AD Graph API.

Вот сценарий PowerShell и другие соответствующие сообщения SO

SO Post1

SO Post 2 (В этом вопросе рассматриваются синтаксический анализ файла json и обновление манифеста приложения с помощью PowerShell)

Connect-AzureAD -TenantId <Tenant GUID>

# Create an application role of given name and description
Function CreateAppRole([string] $Name, [string] $Description)
{
    $appRole = New-Object Microsoft.Open.AzureAD.Model.AppRole
    $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string]
    $appRole.AllowedMemberTypes.Add("User");
    $appRole.DisplayName = $Name
    $appRole.Id = New-Guid
    $appRole.IsEnabled = $true
    $appRole.Description = $Description
    $appRole.Value = $Name;
    return $appRole
}

# ObjectId for application from App Registrations in your AzureAD
$appObjectId = "<Your Application Object Id>"
$app = Get-AzureADApplication -ObjectId $appObjectId
$appRoles = $app.AppRoles
Write-Host "App Roles before addition of new role.."
Write-Host $appRoles

$newRole = CreateAppRole -Name "MyNewApplicationRole" -Description "This is my new Application Role"
$appRoles.Add($newRole)

Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $appRoles

Как только вы закончите с приведенным выше сценарием, выполните следующие действия:добавьте AppRole, тогда назначение ролей пользователю может быть сделано следующим образом -

# Assign the values to the variables
$username = "<You user's UPN>"
$app_name = "<Your App's display name>"
$app_role_name = "<App role display name>"

# Get the user to assign, and the service principal for the app to assign to
$user = Get-AzureADUser -ObjectId "$username"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }

# Assign the user to the app role
New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId 
$user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...