Azure active directory 授权访问AAD图形API';s代表托管标识

Azure active directory 授权访问AAD图形API';s代表托管标识,azure-active-directory,Azure Active Directory,以下是关于使用托管标识访问AAD Graph API的文章- 使用我的全局管理员帐户,我在powershell中执行以下操作: $AppRole = $WindowsAADServicePrincipal.AppRoles | Where-Object {$_.Value -eq "Application.ReadWrite.All" -and $_.AllowedMemberTypes -contains "Application"} New-AzureAdServiceAppRoleAssi

以下是关于使用托管标识访问AAD Graph API的文章-

使用我的全局管理员帐户,我在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代码: 授权请求被拒绝消息:权限不足,无法 完成操作。RequestId:XXX日期时间戳:2019年6月17日星期一 15:16:53 GMT HttpStatusCode:禁止的HttpStatusDescription: 禁止的HttpResponseStatus:在第5行完成字符:5 +新AzureAdServiceAppRoleAssignment-ObjectId$identity.Principal。。。 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified:(:)[New AzureADServiceAppRoleAssignment],ApiException +FullyQualifiedErrorId:Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.NewServicePrincipalAppRoleAssignment

我的问题是为什么?如果我查看这个命令对aad graph api发出的请求的http跟踪,我看不出有什么有趣的地方

如果我手动执行请求以使用上面我分配了所需权限的托管标识分配角色。我得到了一个类似的异常,但没有分配角色,奇怪的是,我已经尝试为执行此请求的标识分配了许多权限-甚至是租户的全局管理员,但我仍然看到这个错误

$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" }

我希望避免授予identity Global Admin或类似角色,并希望您能够授予粒度权限,即Application.ReadWrite.OwnedBy,我认为您遇到了一个已知问题

我也遇到过类似的例子,但上下文略有不同,比如逻辑应用程序的MSI。请看这篇文章,了解更多详情-

我曾经在第一次运行时得到
Authorization\u RequestDenied
error,在任何重试时都会得到
Request\u BadRequest
,因为即使第一次运行时出现错误,权限/角色分配实际上也会被添加。虽然应该是间歇性的,但我一直都是这样。最后,我可以忽略这个错误,因为所需的权限仍然被分配给托管标识

这是一个相关的GitHub问题-

这是一条很长的线索,但看看微软的达维巴的评论


我想你遇到了一个已知的问题

我也遇到过类似的例子,但上下文略有不同,比如逻辑应用程序的MSI。请看这篇文章,了解更多详情-

我曾经在第一次运行时得到
Authorization\u RequestDenied
error,在任何重试时都会得到
Request\u BadRequest
,因为即使第一次运行时出现错误,权限/角色分配实际上也会被添加。虽然应该是间歇性的,但我一直都是这样。最后,我可以忽略这个错误,因为所需的权限仍然被分配给托管标识

这是一个相关的GitHub问题-

这是一条很长的线索,但看看微软的达维巴的评论