有没有工具可以管理Azure AD用户的角色?
据我所知,目前没有特定的工具可用于管理应用程序角色。
总体而言,您应该能够使用以下选项来添加/编辑/更新与应用程序角色相关的选项,并为现有的AD用户分配权限:
注意:如果您要处理大量用户,则可以考虑将安全组分配给应用程序角色,而不是为单个用户执行此操作。这是值得考虑的选择,但它需要Azure AD高级许可证。(更新 - 还请参阅Philippe Signoret在本答案末尾的评论,了解将组分配给应用程序角色、委派分配的组的管理以及self-service group management)
通过编辑应用程序清单json文件来使用Azure门户(您已经知道这一点)
PowerShell -
我在末尾添加了一个脚本。您可以在使用New-AzureADApplication
创建新应用程序或使用Set-AzureADApplication
更改现有应用程序时执行此操作。
要将这些角色分配给现有用户,您可以使用New-AzureADUserAppRoleAssignment
,如下所示的更新脚本。
Azure AD Graph API -
您可以使用AppRole类型和应用程序实体来管理应用程序角色本身。此处文档
您可以使用AppRoleAssignment实体将这些角色分配给现有的Azure AD用户等。此处文档
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>
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
}
$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的脚本,将角色分配给用户就非常简单,而且有一个直接的命令可用。以下是一个示例脚本 -
$username = "<You user's UPN>"
$app_name = "<Your App's display name>"
$app_role_name = "<App role display name>"
$user = Get-AzureADUser -ObjectId "$username"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId
$user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id