1:是否有人知道可以为Azure AD中的企业应用程序管理Azure AD用户的角色分配(清单中定义的appRoles)的工具?
我正在谈论如何向现有的Azure AD用户分配角色(特定于应用程序)。为此,使用Azure门户的过程非常缓慢。
我们当然可以创建此工具,但是如果已经存在这样的工具,那就太好了。如今使用大型Azure AD Enterprise应用程序的大型组织是什么?
2:在门户网站中手动编辑清单文件真的是最佳实践吗?将git文件(AppRoles部分)与应用程序代码一起存储会更有意义。
答案 0 :(得分:3)
是否有人知道可以为Azure AD用户管理角色的工具
AFAIK,没有可用于管理应用程序角色的任何特定工具。
总体而言,您应该能够使用以下选项来添加/编辑/更新与应用程序角色相关的选项,并将权限分配给现有的AD用户:
注意:另外,如果您要与大量用户打交道,则可以考虑将安全组分配给应用程序角色,而不是为单个用户执行此操作。尽管它需要Azure AD高级许可证,但值得考虑的一个选项。 (更新-另请参见本答案结尾处的Philippe Signoret的评论,有关将组分配给应用程序角色,委派分配的组和self-service group management的管理)
Azure Portal,方法是编辑应用程序清单json(您已经知道了)
PowerShell-
我在最后添加了一个脚本。您可以在使用New-AzureADApplication
创建新应用程序的过程中或使用Set-AzureADApplication
为现有应用程序进行操作。
要将这些角色分配给现有用户,您可以使用New-AzureADUserAppRoleAssignment
,如下所示,将其与更新的脚本一起使用。
Azure AD Graph API-
您可以使用AppRole类型和应用程序实体来自己管理应用程序角色。 Documentation here
您可以使用AppRoleAssignment实体将这些角色分配给现有的Azure AD用户等。Documentation here
Microsoft Graph API-
Documentation here-请注意,此功能仅在beta版本中可用-因此尚不适用于生产应用程序。
对于生产应用程序,您可以从json文件(源控件的一部分,如git等)中读取应用程序角色,并将其提供给诸如PowerShell或Azure AD Graph API这样的编程选项之一。
这是PowerShell脚本。还可以看看这些SO Post,我们在其中讨论了类似的内容,但仅在PowerShell范围内。
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