授予对AAD Graph API的托管身份访问权限

时间:2019-06-17 20:02:47

标签: azure-active-directory

我正在关注以下有关使用托管身份访问AAD Graph API的文章-https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-azure-ad-graph

使用我的全局管理员帐户,我将在powershell中执行以下操作:

$AppRole = $WindowsAADServicePrincipal.AppRoles | Where-Object {$_.Value -eq "Application.ReadWrite.All" -and $_.AllowedMemberTypes
-contains "Application"}
New-AzureAdServiceAppRoleAssignment -ObjectId $identity.PrincipalId -PrincipalId $identity.PrincipalId  -ResourceId
$WindowsAADServicePrincipal.ObjectId -Id $AppRole.Id

该命令报告以下权限不足异常-但似乎仍将角色分配给服务主体!

  

New-AzureAdServiceAppRoleAssignment:执行时发生错误   NewServicePrincipalAppRoleAssignment代码:   Authorization_RequestDenied消息:权限不足   完成操作。 RequestId:XXX DateTime时间戳:2019年6月17日星期一   15:16:53 GMT HttpStatus代码:禁止的HttpStatus描述:   禁止的HttpResponseStatus:已在第5行完成char:5   + New-AzureAdServiceAppRoleAssignment -ObjectId $ identity.Principal ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~       + CategoryInfo:未指定:(:) [New-AzureADServiceAppRoleAssignment],ApiException       + FullyQualifiedErrorId:Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.NewServicePrincipalAppRoleAssignment

我的问题是为什么?如果我查看此命令对aad graph api发出的请求的http跟踪,我不会发现很多兴趣。

如果我手动执行请求以使用上面分配了所需权限的托管身份分配角色。我收到类似的异常,但未分配任何角色,奇怪的是,我尝试为执行此请求的身份分配多个权限-甚至租户上的Global Admin,但我仍然看到此错误。...

$created_permissions = Invoke-RestMethod -Method post -Uri "https://graph.windows.net/tenantname.onmicrosoft.com/servicePrincipals/$($created_principal.objectid)/appRoleAssignments?api-version=1.6" -Body ($permission  | ConvertTo-Json -Depth 99 -Compress) -ContentType "application/json" -Headers @{ "Authorization" ="Bearer $access_token" }

我想避免赋予全局管理员或类似角色的身份,并且希望能够给予详尽的权限,即Application.ReadWrite.OwnedBy

1 个答案:

答案 0 :(得分:0)

我认为您遇到了一个已知问题。

我遇到了类似的情况,但上下文略有不同,即Logic Apps的MSI。请查看此SO Post了解更多详细信息-Assigning Microsoft Graph permissions to Azure Managed Service Identity

我以前在第一次运行时会遇到Authorization_RequestDenied错误,而对于任何重试都会遇到Request_BadRequest,因为即使第一次运行时出错,实际上也会添加权限/角色分配。即使它应该是断断续续的,我也相当一致。最后,我只能忽略该错误,因为所需的权限仍会分配给托管身份。

这是相关的GitHub问题-Executing the New-AzureAdServiceAppRoleAssignment step returns a Forbidden error

这是一个漫长的话题,但请查看Microsoft的daveba的评论。

enter image description here