如何为Azure AD用户管理Azure AD应用程序角色

4

1: 有没有一种工具可以管理Azure AD用户的角色分配(在清单中定义的应用程序角色),以用于Azure AD中的企业应用程序?我是指如何为现有的Azure AD用户分配角色(特定于应用程序)。使用Azure门户进行此操作非常缓慢。

当然,我们可以创建这个工具,但如果这样的工具已经存在那就太好了。许多拥有许多Azure AD企业应用程序的大型组织正在使用什么工具呢?

2: 手动编辑门户中的清单文件是否真的是最佳实践?将该文件(AppRoles部分)与应用程序代码一起放在git中会更有意义。


我也支持PowerShell。即使没有GUI可用,它对我也很有效。 - trailmax
好的。Powershell很棒,而且可以使用。但是假设您的公司在Azure AD中有1000个用户和50个应用程序。您想要管理角色的分配。最有可能这项任务将由一些业务用户完成,而不是开发人员或管理员。 - Thomas
这就是组和策略的作用。 - user5780947
2个回答

4

有没有工具可以管理Azure AD用户的角色?

据我所知,目前没有特定的工具可用于管理应用程序角色。

总体而言,您应该能够使用以下选项来添加/编辑/更新与应用程序角色相关的选项,并为现有的AD用户分配权限:

注意:如果您要处理大量用户,则可以考虑将安全组分配给应用程序角色,而不是为单个用户执行此操作。这是值得考虑的选择,但它需要Azure AD高级许可证。(更新 - 还请参阅Philippe Signoret在本答案末尾的评论,了解将组分配给应用程序角色、委派分配的组的管理以及self-service group management

  1. 通过编辑应用程序清单json文件来使用Azure门户(您已经知道这一点)

  2. PowerShell -

    我在末尾添加了一个脚本。您可以在使用New-AzureADApplication创建新应用程序或使用Set-AzureADApplication更改现有应用程序时执行此操作。

    要将这些角色分配给现有用户,您可以使用New-AzureADUserAppRoleAssignment,如下所示的更新脚本。

  3. Azure AD Graph API -

    您可以使用AppRole类型和应用程序实体来管理应用程序角色本身。此处文档 enter image description here

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

    enter image description here

  4. Microsoft Graph API -

    此处文档 - 请注意,这仅适用于测试版本 - 因此尚不适用于生产应用程序。

    在此处查看使用应用程序角色分配工作

对于您的生产应用程序,您可以从json文件(源代码控制的一部分,如git等)中读取应用程序角色,并将其馈送到其中一个编程选项中,例如PowerShell或Azure AD Graph API。
这是PowerShell脚本。还请查看这些SO帖子,在那里我们讨论了类似的内容,但仅限于PowerShell范围内。 SO Post 1 SO Post 2(此问题讨论使用PowerShell解析json文件并更新应用程序清单)
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

对于#1,我是在谈论如何管理分配给用户的角色,而不是角色本身。 “我正在谈论如何将应用程序特定的角色分配给现有的Azure AD用户。” 如果我没有表达清楚,对此感到抱歉。那么,许多Azure AD企业应用程序的大型组织今天在使用什么呢? PowerShell。真的吗? - Thomas
@Thomas 我已经更新了答案,为所有分配用户角色的选项(即 PowerShell、Azure AD Graph API 和 Microsoft Graph API)添加了详细信息。我无法具体回答大型组织今天在这方面做了什么,但我已经尝试列出可用的方法,另一件事是利用安全组将角色分配给一个大组用户,而不是在单个用户级别上进行操作。只有在您可以使用的情况下才能这样做。它需要 Azure AD 高级许可证。我也在我的答案中添加了一条注释。 - Rohit Saigal
谢谢。好的回答。我认为更大的机构正在创建自己的工具(基于API)来管理这个。 - Thomas
@Thomas,更大的组织不会逐个分配用户,而是将分配给应用程序角色,并委派已分配组的管理(大多数大型组织都有现有的处理/解决方案)。Azure AD的自助式组管理就是一个例子。 (透明度:我在微软工作,将组分配给应用程序角色是Azure AD Premium的一个功能。) - Philippe Signoret
1
@PhilippeSignoret 很好的观点。自助式群组管理是缺失的一环。谢谢。 - Thomas
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接