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

时间:2018-12-10 13:46:21

标签: azure authorization azure-active-directory microsoft-graph azure-powershell

1:是否有人知道可以为Azure AD中的企业应用程序管理Azure AD用户的角色分配(清单中定义的appRoles)的工具?

我正在谈论如何向现有的Azure AD用户分配角色(特定于应用程序)。为此,使用Azure门户的过程非常缓慢。

我们当然可以创建此工具,但是如果已经存在这样的工具,那就太好了。如今使用大型Azure AD Enterprise应用程序的大型组织是什么?

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

2 个答案:

答案 0 :(得分:3)

  

是否有人知道可以为Azure AD用户管理角色的工具

AFAIK,没有可用于管理应用程序角色的任何特定工具。

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

注意:另外,如果您要与大量用户打交道,则可以考虑将安全组分配给应用程序角色,而不是为单个用户执行此操作。尽管它需要Azure AD高级许可证,但值得考虑的一个选项。 (更新-另请参见本答案结尾处的Philippe Signoret的评论,有关将组分配给应用程序角色,委派分配的组和self-service group management的管理)

  1. Azure Portal,方法是编辑应用程序清单json(您已经知道了)

  2. PowerShell-

    我在最后添加了一个脚本。您可以在使用New-AzureADApplication创建新应用程序的过程中或使用Set-AzureADApplication为现有应用程序进行操作。

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

  3. Azure AD Graph API-

    您可以使用AppRole类型和应用程序实体来自己管理应用程序角色。 Documentation here enter image description here

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

    enter image description here

  4. Microsoft Graph API-

    Documentation here-请注意,此功能仅在beta版本中可用-因此尚不适用于生产应用程序。

    在这里寻找working with App Role Assignments

对于生产应用程序,您可以从json文件(源控件的一部分,如git等)中读取应用程序角色,并将其提供给诸如PowerShell或Azure AD Graph API这样的编程选项之一。

这是PowerShell脚本。还可以看看这些SO Post,我们在其中讨论了类似的内容,但仅在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 :(得分:0)

迟到的响应,但迟到总比没有好,Terraform支持此功能: https://www.terraform.io/docs/providers/azuread/r/application.html