Роли приложения очень специфичны для приложения, для которого они созданы / определены.Вы определяете их как часть манифеста регистрации приложения, а затем даже назначаете эти роли пользователям / группам специально для этого приложения.В случае, если разные приложения используют один и тот же API, а роли вашего приложения определены для приложения API, вы можете подумать о некотором повторном использовании / общем управлении.
Таким образом, роли приложений на самом деле не распространяются на разные приложения.Насколько нам известно, не существует какого-либо инструмента, который помог бы управлять набором ролей приложений, определяемых каждой службой.
Еще одна концепция, которая иногда используется для принятия решений об авторизации, - это членство в Azure AD Group.Группы работают с несколькими приложениями, и это единственная причина, по которой я даже упомянул их здесь, чтобы вы могли проверить групповые заявки для входящих пользователей.Хотя использование определенных ролей приложения обычно работает лучше из-за их более тесной связи с приложением.Группы, как правило, держатся гораздо дольше, чем отдельные приложения, и много раз люди, управляющие или владеющие этими группами, и их членство отличаются от владельцев приложений (поэтому их критерии принятия решений также могут сильно отличаться).
УправлениеРоли приложений
Ознакомьтесь с этой связанной публикацией SO - Как управлять ролями приложений Azure AD для пользователей Azure AD
Вот несколько вариантов.
PowerShell -
Это можно сделать при создании нового приложения с помощью New-AzureADApplication
или для существующего приложения с помощью Set-AzureADApplication
.
Дляназначая эти роли существующим пользователям, вы можете использовать New-AzureADUserAppRoleAssignment
. См. сценарий PowerShell в конце.
API-интерфейс Azure AD Graph -
Вы можете работать с типом AppRole и объектом Application для управления ролями приложения. Документация здесь
Вы можете работать с AppRoleAssignment Entity для назначения этих ролей существующим пользователям Azure AD и т. Д. Документацияздесь
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