【发布时间】:2019-06-17 20:02:47
【问题描述】:
我正在关注以下关于使用托管身份访问 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 DateTimeStamp:2019 年 6 月 17 日,星期一 格林威治标准时间 15:16:53 HttpStatusCode:禁止 HttpStatusDescription: 禁止的 HttpResponseStatus:在 line:5 char: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" }
我想避免授予身份 Global Admin 或类似角色,并且希望可以授予细粒度权限,即 Application.ReadWrite.OwnedBy
【问题讨论】: