如何跨多个应用程序管理 Azure AD 应用程序角色

Pie*_*rre 3 azure-active-directory

假设我是 10 个不同团队的经理,这些团队创建定义为使用应用程序角色的 AAD 应用程序的服务。是否有任何工具可以帮助管理每个服务定义的应用程序角色集,或者是否必须使用 REST 接口或 PowerShell 将其组合在一起?

Roh*_*gal 6

应用程序角色非常特定于它们创建/定义的应用程序。您将它们定义为应用程序注册清单的一部分,然后甚至将这些角色专门分配给该应用程序的用户/组。如果不同的应用程序使用相同的 API 并且您的应用程序角色是为 API 应用程序定义的,您可以考虑一些重用/通用管理。

因此应用程序角色并不真正跨越不同的应用程序。据我所知,没有任何工具可以帮助管理每个服务定义的应用程序角色集,正如您所要求的。

有时用于授权决策的另一个概念是 Azure AD 组成员身份。组确实会跨多个应用程序,这是我在这里提到它们的唯一原因,因此您可以检查传入用户的组声明。尽管使用应用程序特定角色通常效果更好,因为它们与应用程序的关系更密切。组往往比单个应用程序停留的时间更长,而且很多时候管理或拥有这些组的人及其成员身份与应用程序所有者不同(因此他们的决策标准也可能非常不同)。

管理应用程序角色

请查看此相关 SO 帖子 -如何管理 Azure AD 用户的 Azure AD 应用程序角色

这里有几个选项。

  1. 电源外壳 -

    您可以在使用创建新应用程序时执行此操作,New-AzureADApplication或者使用Set-AzureADApplication.

    要将这些角色分配给现有用户,您可以使用New-AzureADUserAppRoleAssignment

    请参阅最后的 PowerShell 脚本。

  2. Azure AD 图形 API -

    您可以使用 AppRole Type 和 Application 实体来管理应用程序角色本身。文档在这里

    在此输入图像描述

    您可以使用 AppRoleAssignment 实体将这些角色分配给现有的 Azure AD 用户等。此处的文档

    在此输入图像描述

  3. 微软图形 API -

    此处的文档- 请注意,这仅在测试版中可用 - 因此它还不适合生产应用程序。

    在此处查看如何使用应用程序角色分配

对于生产应用程序,您可以从 json 文件(源代码管理的一部分,如 git 等)读取应用程序角色,并将其输入到 PowerShell 或 Azure AD Graph API 等编程选项之一中。

这是 PowerShell 脚本和其他相关的 SO 帖子

所以帖子 1

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
Run Code Online (Sandbox Code Playgroud)

使用上述脚本添加 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
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2136 次

最近记录:

6 年,9 月 前