我的客户端有AzureAD Premium,因此我们可以将组分配给角色
我们可以编写新组的脚本(在其内部AD中),并将用户添加到这些组,并将组同步到AAD
我们可以对清单文件的脚本进行操作
但我没有解决的是如何自动执行“将组分配给App角色”。有人必须进入Azure门户>目录>应用程序>我们的应用>用户和群组>找到要分配的组>分配>找到匹配的角色......(冲洗并重复)。
该应用程序本质上是sharepoint(Azure外部 - 我们只是将本地AD联合到AAD以便A& A到应用程序),并且这些组匹配限制访问各种库的角色。不幸的是,我的客户的商业模式非常多样化,这意味着我们有很多小组可以映射到很多角色。
PowerShell是我们选择的脚本管理语言。
我在Get-AzureAdGroup -SearchString "groupname"
取得了一些进展,它给了我objectId
。我可以将其传递给Get-AzureAdGroupAppRoleAssignment
,这使我id
与清单文件中的GUID相匹配。所以这一切都链接在一起,除了实际将小组分配给一个角色。
所以,接下来我开始根据this blog查看GraphAPI。 (该博客是关于在没有AAD Premium时将用户批量添加到单个特定角色的全部内容)。
我已经设法通过GET https://graph.windows.net/[tenant].onmicrosoft.com/servicePrincipals/[app id]/appRoleAssignments?api-version=1.6
取得了一些成功,但我的一些测试组,即使它们在Azure门户中显示为已分配,也不会显示在对上述REST的响应中查询。有些人这样做,当我通过门户取消分配它们时,它们也会从响应中删除。缺乏一致性并不能让我对我的查询充满信心。
为什么GraphAPI的结果不一致?
提前感谢任何指针
更新
我正在调查*-AzureAd*
cmdlet(来自AzureADPreview
模块),但Microsoft Documentation有点亮 - 它只是预览,但我认为它们可以提供比以下更好的文档:
输入
输入类型是可以管道到cmdlet的对象的类型。输出
输出类型是cmdlet发出的对象的类型。
这些cmdlet 做似乎结束了GraphAPI REST调用。
更新2
AzureADPreview
cmdlet是正确的解决方案。
Connect-AzureAD -TenantId xxxxx-xxxx-xxxx-etc
$app = Get-AzureADServicePrincipal -SearchString "display name of app"
foreach ($AD_group_name in $list_of_names_to_map) {
$AADGroup = Get-AzureADGroup -SearchString $AD_group_name
$AppRole = $App.AppRoles | ?{$_.value -like $AADGroup.DisplayName}
$NewAssignmentParams = @{
'id' = $AppRole.Id;
'objectid' = $AADGroup.ObjectId;
'PrincipalId' = $AADGroup.ObjectId;
'ResourceId' = $App.ObjectId;
}
New-AzureADGroupAppRoleAssignment @NewAssignmentParams
}
答案 0 :(得分:1)
我在 Update 2 中描述的模块和cmdlet是正确的解决方案。
$NewAssignmentParams = @{
'id' = $AppRole.Id;
'objectid' = $AADGroup.ObjectId;
'PrincipalId' = $AADGroup.ObjectId;
'ResourceId' = $App.ObjectId;
}
New-AzureADGroupAppRoleAssignment @NewAssignmentParams
其中
id
可以从应用程序的AppRoles
属性或清单文件中获取
objectId
& principalId
是AD组的objectId
属性,映射到角色
ResourceId
是应用程序的objectId
属性
答案 1 :(得分:0)
使用新的AZ模块:
Get-AzADGroup -SearchString "Your azure ad or on prem ad group"
这将生成一些信息。复制ID,然后运行:
New-AzRoleAssignment -ObjectId 8baabe9f-245e-456b-9bd8-b8c09002df52 -RoleDefinitionName Contributor -ResourceGroupName "Your RG Name"